81 lines
2.5 KiB
Python
81 lines
2.5 KiB
Python
import os
|
|
|
|
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from app.routers.auth import router as auth_router
|
|
from app.routers.broker import router as broker_router
|
|
from app.routers.health import router as health_router
|
|
from app.routers.password_reset import router as password_reset_router
|
|
from app.routers.support_ticket import router as support_ticket_router
|
|
from app.routers.system import router as system_router
|
|
from app.routers.strategy import router as strategy_router
|
|
from app.routers.zerodha import router as zerodha_router, public_router as zerodha_public_router
|
|
from app.routers.paper import router as paper_router
|
|
from market import router as market_router
|
|
from paper_mtm import router as paper_mtm_router
|
|
from app.services.strategy_service import init_log_state, resume_running_runs
|
|
from app.admin_router import router as admin_router
|
|
from app.admin_role_service import bootstrap_super_admin
|
|
|
|
app = FastAPI(
|
|
title="QuantFortune Backend",
|
|
version="1.0"
|
|
)
|
|
|
|
cors_origins = [
|
|
origin.strip()
|
|
for origin in os.getenv("CORS_ORIGINS", "").split(",")
|
|
if origin.strip()
|
|
]
|
|
if not cors_origins:
|
|
cors_origins = [
|
|
"http://localhost:3000",
|
|
"http://127.0.0.1:3000",
|
|
]
|
|
|
|
cors_origin_regex = os.getenv("CORS_ORIGIN_REGEX", "").strip()
|
|
if not cors_origin_regex:
|
|
cors_origin_regex = (
|
|
r"https://.*\\.ngrok-free\\.dev"
|
|
r"|https://.*\\.ngrok-free\\.app"
|
|
r"|https://.*\\.ngrok\\.io"
|
|
)
|
|
|
|
# app.add_middleware(
|
|
# CORSMiddleware,
|
|
# allow_origins=cors_origins,
|
|
# allow_origin_regex=cors_origin_regex or None,
|
|
# allow_credentials=True,
|
|
# allow_methods=["*"],
|
|
# allow_headers=["*"],
|
|
# )
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=[], # must be empty when using regex
|
|
allow_origin_regex=".*", # allow ANY origin
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
app.include_router(strategy_router)
|
|
app.include_router(auth_router)
|
|
app.include_router(broker_router)
|
|
app.include_router(zerodha_router)
|
|
app.include_router(zerodha_public_router)
|
|
app.include_router(paper_router)
|
|
app.include_router(market_router)
|
|
app.include_router(paper_mtm_router)
|
|
app.include_router(health_router)
|
|
app.include_router(system_router)
|
|
app.include_router(admin_router)
|
|
app.include_router(support_ticket_router)
|
|
app.include_router(password_reset_router)
|
|
|
|
@app.on_event("startup")
|
|
def init_app_state():
|
|
init_log_state()
|
|
bootstrap_super_admin()
|
|
resume_running_runs()
|