From 99d0ec9b0fabc947525f5e12b8b8a5ca4e187d00 Mon Sep 17 00:00:00 2001 From: Iam54r1n4 Date: Sun, 26 Jan 2025 13:17:12 +0000 Subject: [PATCH] Add api/v1/config/install-tcp-brutal|update-geo endpoints --- .../routers/api/v1/config/__init__.py | 2 + .../webpanel/routers/api/v1/config/misc.py | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 core/scripts/webpanel/routers/api/v1/config/misc.py diff --git a/core/scripts/webpanel/routers/api/v1/config/__init__.py b/core/scripts/webpanel/routers/api/v1/config/__init__.py index 03ad97d..2dd031c 100644 --- a/core/scripts/webpanel/routers/api/v1/config/__init__.py +++ b/core/scripts/webpanel/routers/api/v1/config/__init__.py @@ -4,6 +4,7 @@ from . import warp from . import telegram from . import normalsub from . import singbox +from . import misc router = APIRouter() @@ -13,3 +14,4 @@ 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(misc.router) diff --git a/core/scripts/webpanel/routers/api/v1/config/misc.py b/core/scripts/webpanel/routers/api/v1/config/misc.py new file mode 100644 index 0000000..a73a6ba --- /dev/null +++ b/core/scripts/webpanel/routers/api/v1/config/misc.py @@ -0,0 +1,46 @@ +from fastapi import APIRouter, HTTPException +from ..schema.response import DetailResponse +import cli_api + +router = APIRouter() + + +@router.get('/install-tcp-brutal', response_model=DetailResponse) +async def install_tcp_brutal(): + """ + Endpoint to install TCP Brutal service. + + Returns: + DetailResponse: A response object indicating the success of the installation. + + Raises: + HTTPException: If an error occurs during the installation, an HTTP 400 error is raised with the error details. + """ + try: + cli_api.install_tcp_brutal() + return DetailResponse(detail='TCP Brutal installed successfully.') + except Exception as e: + raise HTTPException(status_code=400, detail=f'Error: {str(e)}') + + +@router.get('/update-geo/{country}', response_model=DetailResponse) +async def update_geo(country: str): + """ + Endpoint to update geographic data files based on the specified country. + + Args: + country (str): The country for which to update the geo files. + Accepts 'iran', 'china', or 'russia'. + + Returns: + DetailResponse: A response object indicating the success of the update operation. + + Raises: + HTTPException: If an error occurs during the update process, an HTTP 400 error is raised with the error details. + """ + + try: + cli_api.update_geo(country) + return DetailResponse(detail='Geo updated successfully.') + except Exception as e: + raise HTTPException(status_code=400, detail=f'Error: {str(e)}')