Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI | |
| from fastapi.middleware.cors import CORSMiddleware | |
| from routers import predict, monitor, reports, upload, blockchain | |
| from dotenv import load_dotenv | |
| import os | |
| # Load environment variables | |
| load_dotenv() | |
| # Trigger reload | |
| # Configure root_path | |
| # 1. Try explicit ROOT_PATH env var (User preference) | |
| root_path = os.getenv("ROOT_PATH") | |
| # 2. If not set, try auto-detecting Hugging Face Spaces (Fallback) | |
| if not root_path: | |
| space_id = os.getenv("SPACE_ID") | |
| if space_id: | |
| # SPACE_ID is usually "username/spacename" | |
| root_path = f"/spaces/{space_id}" | |
| print(f"Auto-detected HF Space. Setting root_path to: {root_path}") | |
| else: | |
| root_path = "" | |
| app = FastAPI( | |
| title="Network IDS API", | |
| description="Backend API for Intrusion Detection System", | |
| version="1.0.0", | |
| root_path=root_path | |
| ) | |
| # Configure CORS | |
| # Default to ["*"] if not set. To restrict, set ALLOWED_ORIGINS="http://localhost:3000,https://my-app.hf.space" | |
| origins_env = os.getenv("ALLOWED_ORIGINS", "*") | |
| if origins_env == "*": | |
| origins = ["*"] | |
| else: | |
| origins = [origin.strip() for origin in origins_env.split(",") if origin.strip()] | |
| print(f"Allowed CORS Origins: {origins}") | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=origins, | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| # Routers | |
| app.include_router(predict.router, prefix="/predict", tags=["Prediction"]) | |
| app.include_router(monitor.router, prefix="/monitor", tags=["Live Monitor"]) | |
| app.include_router(reports.router, prefix="/reports", tags=["Threat Reports"]) | |
| app.include_router(upload.router, prefix="/upload", tags=["File Upload"]) | |
| app.include_router(blockchain.router, prefix="/blockchain", tags=["Blockchain"]) | |
| def home(): | |
| return {"message": "Network IDS Backend Running!"} |