diff --git a/core/scripts/webpanel/app.py b/core/scripts/webpanel/app.py index 0ac88ef..3b957af 100644 --- a/core/scripts/webpanel/app.py +++ b/core/scripts/webpanel/app.py @@ -5,18 +5,17 @@ import asyncio from fastapi import FastAPI from starlette.staticfiles import StaticFiles -from config import CONFIGS # Loads the configuration from .env -from middleware import AuthMiddleware # Defines authentication middleware -from middleware import AfterRequestMiddleware # Defines after request middleware -from dependency import get_session_manager # Defines dependencies across routers -from openapi import setup_openapi_schema # Adds authorization header to openapi schema -from exception_handler import setup_exception_handler # Defines exception handlers +from config import CONFIGS +from middleware import AuthMiddleware +from middleware import AfterRequestMiddleware +from dependency import get_session_manager +from openapi import setup_openapi_schema +from exception_handler import setup_exception_handler -# Append directory of cli_api.py to be able to import it HYSTERIA_CORE_DIR = '/etc/hysteria/core/' sys.path.append(HYSTERIA_CORE_DIR) -import routers # noqa: This import should be after the sys.path modification, because it imports cli_api +import routers def create_app() -> FastAPI: @@ -24,11 +23,10 @@ def create_app() -> FastAPI: Create FastAPI app. ''' - # Set up FastAPI app = FastAPI( - title='Hysteria Webpanel', - description='Webpanel for Hysteria', - version='0.1.0', + title='Blitz API', + description='Webpanel for Hysteria2', + version='0.2.0', contact={ 'github': 'https://github.com/ReturnFI/Blitz' }, @@ -36,26 +34,19 @@ def create_app() -> FastAPI: root_path=f'/{CONFIGS.ROOT_PATH}', ) - # Set up static files app.mount('/assets', StaticFiles(directory='assets'), name='assets') - # Set up exception handlers setup_exception_handler(app) - # Set up authentication middleware - app.add_middleware(AuthMiddleware, session_manager=get_session_manager(), api_token=CONFIGS.API_TOKEN) - # Set up after request middleware app.add_middleware(AfterRequestMiddleware) - # Set up Routers - app.include_router(routers.basic.router, prefix='', tags=['Basic Routes[Web]']) # Add basic router - app.include_router(routers.login.router, prefix='', tags=['Authentication[Web]']) # Add authentication router - app.include_router(routers.settings.router, prefix='/settings', tags=['Settings[Web]']) # Add settings router - app.include_router(routers.user.router, prefix='/users', tags=['User Management[Web]']) # Add user router - app.include_router(routers.api.v1.api_v1_router, prefix='/api/v1', tags=['API Version 1']) # Add API version 1 router # type: ignore + app.include_router(routers.basic.router, prefix='', tags=['Web - Basic']) + app.include_router(routers.login.router, prefix='', tags=['Web - Authentication']) + app.include_router(routers.settings.router, prefix='/settings', tags=['Web - Settings']) + app.include_router(routers.user.router, prefix='/users', tags=['Web - User Management']) + app.include_router(routers.api.v1.api_v1_router, prefix='/api/v1') - # Document that the API requires an API key setup_openapi_schema(app) return app @@ -66,7 +57,7 @@ app: FastAPI = create_app() if __name__ == '__main__': from hypercorn.config import Config - from hypercorn.asyncio import serve # type: ignore + from hypercorn.asyncio import serve from hypercorn.middleware import ProxyFixMiddleware config = Config() @@ -75,6 +66,5 @@ if __name__ == '__main__': config.accesslog = '-' config.errorlog = '-' - # Fix proxy headers - app = ProxyFixMiddleware(app, 'legacy') # type: ignore - asyncio.run(serve(app, config)) # type: ignore + app = ProxyFixMiddleware(app, 'legacy') + asyncio.run(serve(app, config)) \ No newline at end of file diff --git a/core/scripts/webpanel/routers/api/v1/__init__.py b/core/scripts/webpanel/routers/api/v1/__init__.py index ed12a2a..1e69814 100644 --- a/core/scripts/webpanel/routers/api/v1/__init__.py +++ b/core/scripts/webpanel/routers/api/v1/__init__.py @@ -5,6 +5,6 @@ from . import config api_v1_router = APIRouter() -api_v1_router.include_router(user.router, prefix='/users') -api_v1_router.include_router(server.router, prefix='/server') -api_v1_router.include_router(config.router, prefix='/config') +api_v1_router.include_router(user.router, prefix='/users', tags=['API - Users']) +api_v1_router.include_router(server.router, prefix='/server', tags=['API - Server']) +api_v1_router.include_router(config.router, prefix='/config') \ No newline at end of file diff --git a/core/scripts/webpanel/routers/api/v1/config/__init__.py b/core/scripts/webpanel/routers/api/v1/config/__init__.py index ee15be7..b346224 100644 --- a/core/scripts/webpanel/routers/api/v1/config/__init__.py +++ b/core/scripts/webpanel/routers/api/v1/config/__init__.py @@ -11,11 +11,11 @@ from . import extra_config router = APIRouter() -router.include_router(hysteria.router, prefix='/hysteria') -router.include_router(warp.router, prefix='/warp') -router.include_router(telegram.router, prefix='/telegram') -router.include_router(normalsub.router, prefix='/normalsub') -router.include_router(singbox.router, prefix='/singbox') -router.include_router(ip.router, prefix='/ip') -router.include_router(extra_config.router, prefix='/extra-config', tags=['Config - Extra Config']) -router.include_router(misc.router) +router.include_router(hysteria.router, prefix='/hysteria', tags=['API - Config - Hysteria']) +router.include_router(warp.router, prefix='/warp', tags=['API - Config - Warp']) +router.include_router(telegram.router, prefix='/telegram', tags=['API - Config - Telegram']) +router.include_router(normalsub.router, prefix='/normalsub', tags=['API - Config - Normalsub']) +router.include_router(singbox.router, prefix='/singbox', tags=['API - Config - Singbox']) +router.include_router(ip.router, prefix='/ip', tags=['API - Config - IP']) +router.include_router(extra_config.router, prefix='/extra-config', tags=['API - Config - Extra Config']) +router.include_router(misc.router, tags=['API - Config - Misc']) \ No newline at end of file