""" 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"}} ) @router.get("/config", response_model=VPNConfigResponse) 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) @router.get("/sessions", response_model=List[VPNSessionResponse]) 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) @router.get("/stats", response_model=VPNServerStats) 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) @router.post("/disconnect/{session_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"}