feat: implement MC domain filter proxy, API, dashboard
- proxy: asyncio TCP proxy with handshake parser, domain whitelist, transparent backend tunneling, SQLite logging, mtime hot reload - api: FastAPI routes for config/domains/logs/status + restart trigger - frontend: React + Vite NPM-style dashboard (dashboard/domains/logs/settings) - nginx: reverse proxy for /api -> api:8000 and / -> frontend:3000 - docker-compose: full stack with shared data volume - replace spec mc-domain-filter.md with README.md
This commit is contained in:
33
api/main.py
Normal file
33
api/main.py
Normal file
@@ -0,0 +1,33 @@
|
||||
"""MC Domain Filter 관리 API.
|
||||
|
||||
FastAPI 로 설정/도메인/로그/상태 4개 라우터를 노출한다. 인증은 없으니
|
||||
공개 네트워크에 직접 노출하지 말 것 (nginx + basic auth 권장).
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from routes import config as config_routes
|
||||
from routes import domains as domain_routes
|
||||
from routes import logs as log_routes
|
||||
from routes import status as status_routes
|
||||
|
||||
app = FastAPI(title="MC Domain Filter API", version="0.1.0")
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
app.include_router(config_routes.router, prefix="/api", tags=["config"])
|
||||
app.include_router(domain_routes.router, prefix="/api", tags=["domains"])
|
||||
app.include_router(log_routes.router, prefix="/api", tags=["logs"])
|
||||
app.include_router(status_routes.router, prefix="/api", tags=["status"])
|
||||
|
||||
|
||||
@app.get("/health")
|
||||
def health() -> dict:
|
||||
return {"ok": True}
|
||||
Reference in New Issue
Block a user