import uvicorn from fastapi import FastAPI import sys import os # Add project root to sys.path explicitly to ensure absolute imports work import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) from database import engine, Base from routers import system, server, profiles, server_process from utils.logging import setup_logging from fastapi.middleware.cors import CORSMiddleware # Create Database Tables Base.metadata.create_all(bind=engine) setup_logging() app = FastAPI( title="OpenVPN Profiler API", description="REST API for managing OpenVPN profiles and configuration", version="1.0.0" ) # Enable CORS app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(system.router, prefix="/api", tags=["System"]) app.include_router(server.router, prefix="/api", tags=["Server"]) app.include_router(profiles.router, prefix="/api", tags=["Profiles"]) app.include_router(server_process.router, prefix="/api", tags=["Process Control"]) @app.get("/") def read_root(): return {"message": "Welcome to OpenVPN Profiler API"} if __name__ == "__main__": uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)