You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.2 KiB

from logger import setup_logging
setup_logging()
import const
from uvicorn_loguru_integration import run_uvicorn_loguru
import time
5 years ago
from starlette.middleware.base import BaseHTTPMiddleware
import middleware
5 years ago
from routers.v1 import user, server, peer, wg
import script.wireguard_startup
5 years ago
import pkg_resources
import uvicorn as uvicorn
from fastapi.staticfiles import StaticFiles
5 years ago
from starlette.responses import FileResponse
from fastapi import Depends, FastAPI
import database.util
5 years ago
app = FastAPI()
5 years ago
app.add_middleware(BaseHTTPMiddleware, dispatch=middleware.db_session_middleware)
app.add_middleware(BaseHTTPMiddleware, dispatch=middleware.logging_middleware)
5 years ago
app.include_router(
user.router,
prefix="/api/v1",
tags=["user"],
dependencies=[],
responses={404: {"description": "Not found"}}
)
5 years ago
5 years ago
app.include_router(
server.router,
prefix="/api/v1/server",
tags=["server"],
dependencies=[Depends(middleware.auth)],
responses={404: {"description": "Not found"}}
)
5 years ago
5 years ago
app.include_router(
peer.router,
prefix="/api/v1/peer",
tags=["peer"],
dependencies=[Depends(middleware.auth)],
responses={404: {"description": "Not found"}}
)
5 years ago
5 years ago
app.include_router(
wg.router,
prefix="/api/v1/wg",
tags=["wg"],
dependencies=[Depends(middleware.auth)],
responses={404: {"description": "Not found"}}
)
5 years ago
5 years ago
@app.get("/", include_in_schema=True)
def root():
return FileResponse('build/index.html')
5 years ago
5 years ago
app.mount("/", StaticFiles(directory=pkg_resources.resource_filename(__name__, 'build')), name="static")
5 years ago
@app.on_event("startup")
async def startup():
5 years ago
pass
5 years ago
5 years ago
@app.on_event("shutdown")
async def shutdown():
5 years ago
pass
5 years ago
if __name__ == "__main__":
# Sleep the wait timer.
time.sleep(const.INIT_SLEEP)
# Ensure database existence
database.util.setup_initial_database()
# Perform Migrations
database.util.perform_migrations()
# Configure wireguard
script.wireguard_startup.setup_on_start()
run_uvicorn_loguru(
uvicorn.Config(
"__main__:app",
host="0.0.0.0",
port=8000,
log_level="warning",
reload=True,
workers=1
)
)