#!/usr/bin/env python3 import uvicorn from fastapi import FastAPI from . import config from .routers import admin from .db import connection PRODUCTION_MODE = False api = FastAPI( title="kiwi-vpn API", description="This API enables the `kiwi-vpn` service.", contact={ "name": "Jörn-Michael Miehe", "email": "40151420+ldericher@users.noreply.github.com", }, license_info={ "name": "MIT License", "url": "https://opensource.org/licenses/mit-license.php", }, docs_url="/docs" if not PRODUCTION_MODE else None, redoc_url="/redoc" if not PRODUCTION_MODE else None, ) app = FastAPI() app.mount("/api", api) @app.on_event("startup") async def on_startup(): # always include admin router api.include_router(admin.router) if (current_config := await config.get()) is not None: connection.reconnect(current_config.db_engine) # include other routers # api.include_router(auth.router) def main(): uvicorn.run( "kiwi_vpn_api.main:app", host="0.0.0.0", port=8000, reload=True, ) if __name__ == "__main__": main()