|
from fastapi import FastAPI, BackgroundTasks |
|
from fastapi.middleware.cors import CORSMiddleware |
|
from tortoise import Tortoise |
|
from .Users.UserRoutes import user_router |
|
from .Webhooks.webhookRoute import webhook_router |
|
from .Subscriptions.SubscriptionRoutes import subscription_router |
|
from .modelInit import TORTOISE_ORM |
|
from .Payments.PaymentsRoutes import payment_router |
|
from .Plans.PlanRoutes import plan_router |
|
from .Portals.PortalRoutes import portal_router |
|
from .Metrics.MetricsRoutes import metrics_router |
|
from .Messages.MessagesRoute import message_router |
|
|
|
|
|
import asyncio, os |
|
import logging |
|
import subprocess |
|
|
|
logging.basicConfig(level=logging.INFO) |
|
|
|
app = FastAPI() |
|
|
|
|
|
app.add_middleware( |
|
CORSMiddleware, |
|
allow_origins=[ |
|
"http://localhost:3000", |
|
"https://captive-hotspot.vercel.app", |
|
], |
|
allow_credentials=True, |
|
allow_methods=["*"], |
|
allow_headers=["*"], |
|
) |
|
|
|
|
|
async def connect_to_vpn(): |
|
"""Connect to the VPN on startup.""" |
|
try: |
|
|
|
|
|
command = [ |
|
"openvpn", |
|
"--config", |
|
f"{os.path.dirname(__file__)}/Mikrotik/utils/client1-working.ovpn", |
|
] |
|
print(f"{os.path.dirname(__file__)}/Mikrotik/utils/client1-working.ovpn") |
|
process = subprocess.Popen(command) |
|
await asyncio.sleep(5) |
|
logging.info("VPN connected successfully.") |
|
except Exception as e: |
|
logging.error(f"Failed to connect to VPN: {str(e)}") |
|
|
|
|
|
@app.on_event("startup") |
|
async def startup_event(): |
|
await Tortoise.init(config=TORTOISE_ORM) |
|
await Tortoise.generate_schemas() |
|
await connect_to_vpn() |
|
|
|
|
|
@app.get("/") |
|
async def landing_page(): |
|
return {"code": 200, "message": "still running"} |
|
|
|
|
|
|
|
app.include_router(user_router) |
|
app.include_router(webhook_router) |
|
app.include_router(subscription_router) |
|
app.include_router(payment_router) |
|
app.include_router(plan_router) |
|
app.include_router(portal_router) |
|
app.include_router(metrics_router) |
|
app.include_router(message_router) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|