Spaces:
Runtime error
Runtime error
| """ | |
| VPN server management routes | |
| """ | |
| from fastapi import APIRouter, Depends, HTTPException, status | |
| from sqlalchemy.orm import Session | |
| from typing import List | |
| from core.auth import get_current_active_user | |
| from core.database import get_db | |
| from models.user import User | |
| from schemas.vpn import ( | |
| VPNConfigResponse, | |
| VPNSessionResponse, | |
| VPNServerStats | |
| ) | |
| from services.vpn_service import VPNService | |
| router = APIRouter( | |
| prefix="/vpn", | |
| tags=["vpn"], | |
| responses={404: {"description": "Not found"}} | |
| ) | |
| async def get_vpn_config( | |
| current_user: User = Depends(get_current_active_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| """Get VPN configuration for current user""" | |
| vpn_service = VPNService(db) | |
| return await vpn_service.get_user_config(current_user.id) | |
| async def get_vpn_sessions( | |
| current_user: User = Depends(get_current_active_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| """Get active VPN sessions for current user""" | |
| vpn_service = VPNService(db) | |
| return await vpn_service.get_user_sessions(current_user.id) | |
| async def get_vpn_stats( | |
| current_user: User = Depends(get_current_active_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| """Get VPN usage statistics for current user""" | |
| vpn_service = VPNService(db) | |
| return await vpn_service.get_user_stats(current_user.id) | |
| async def disconnect_vpn_session( | |
| session_id: str, | |
| current_user: User = Depends(get_current_active_user), | |
| db: Session = Depends(get_db) | |
| ): | |
| """Disconnect a specific VPN session""" | |
| vpn_service = VPNService(db) | |
| success = await vpn_service.disconnect_session(session_id, current_user.id) | |
| if not success: | |
| raise HTTPException( | |
| status_code=status.HTTP_404_NOT_FOUND, | |
| detail="Session not found or already disconnected" | |
| ) | |
| return {"status": "success", "message": "Session disconnected"} | |