from aiohttp import web, ClientSession import json, logging, asyncio from ..utils.auth import panel_auth logger = logging.getLogger(__name__) def setup_proxy_routes(app, service_manager, prefix=''): async def list_proxies(request): ps = service_manager.get_service("proxy") return web.json_response({"proxies": ps.list_proxies() if ps else []}) async def add_proxy(request): try: data = await request.json() ps = service_manager.get_service("proxy") ok = await ps.register_proxy( path=data.get("path",""), target_url=data.get("target",""), description=data.get("description",""), is_external=data.get("external",False)) return web.json_response({"ok": ok}) except Exception as e: return web.json_response({"ok": False, "error": str(e)}, status=400) async def remove_proxy(request): path = request.match_info.get("path","") ps = service_manager.get_service("proxy") ps.unregister_proxy(path) return web.json_response({"ok": True}) app.router.add_get(f'{prefix}/api/proxy', panel_auth(list_proxies)) app.router.add_post(f'{prefix}/api/proxy', panel_auth(add_proxy)) app.router.add_delete(f'{prefix}/api/proxy/{{path}}', panel_auth(remove_proxy)) logger.info(f'🔀 代理路由已注册 ({prefix}/api/proxy) (已加认证)')