🚀 Create New Service
| Name | Size | Modified | Perms | Actions |
|---|---|---|---|---|
| Loading... | ||||
📦 Drag & Drop Deploy
Drop your ZIP here
or click to browse
""" ============================================ 🔥 RUHI-CORE v1.0.0 - COMPLETE PaaS Engine ============================================ Module A (Engine) + Module B (Files) + Module C (Dashboard) All combined into one powerful file. """ import os import json from contextlib import asynccontextmanager from pathlib import Path from fastapi import FastAPI, Request, WebSocket, WebSocketDisconnect, Depends from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles from fastapi.responses import HTMLResponse, JSONResponse, FileResponse from loguru import logger from core.config import settings from core.orchestrator import orchestrator from core.process_manager import process_manager from core.metrics_collector import metrics_collector from core.websocket_handler import ws_manager from core.reverse_proxy import reverse_proxy from core.auth import get_current_user, verify_token from api.routes import auth, services, metrics, terminal, files from api.middleware.ip_whitelist import IPWhitelistMiddleware @asynccontextmanager async def lifespan(app: FastAPI): logger.info("🚀 RUHI-CORE Engine starting...") await orchestrator.startup() yield logger.info("🛑 RUHI-CORE Engine shutting down...") await orchestrator.shutdown() app = FastAPI( title="RUHI-CORE", description="Premium PaaS Platform", version="1.0.0", lifespan=lifespan, docs_url="/api/docs", redoc_url="/api/redoc" ) app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"]) app.add_middleware(IPWhitelistMiddleware) app.include_router(auth.router) app.include_router(services.router) app.include_router(metrics.router) app.include_router(terminal.router) app.include_router(files.router) # WebSocket endpoints @app.websocket("/ws/dashboard") async def dashboard_websocket(websocket: WebSocket): token = websocket.query_params.get("token", "") try: verify_token(token) except: await websocket.close(code=4001); return await ws_manager.connect_dashboard(websocket) try: while True: await websocket.receive_text() except WebSocketDisconnect: await ws_manager.disconnect_dashboard(websocket) except: await ws_manager.disconnect_dashboard(websocket) @app.websocket("/ws/logs/{service_id}") async def service_logs_websocket(websocket: WebSocket, service_id: str): token = websocket.query_params.get("token", "") try: verify_token(token) except: await websocket.close(code=4001); return service = process_manager.get_service(service_id) if not service: await websocket.close(code=4004); return await ws_manager.connect_logs(websocket, service_id) try: existing = list(service.log_buffer) await websocket.send_text(json.dumps({"type": "history", "logs": existing})) while True: await websocket.receive_text() except WebSocketDisconnect: await ws_manager.disconnect_logs(websocket, service_id) except: await ws_manager.disconnect_logs(websocket, service_id) @app.api_route("/proxy/{service_name}/{path:path}", methods=["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD"]) async def proxy_to_service(service_name: str, path: str, request: Request): return await reverse_proxy.proxy_request(service_name, path, request) @app.get("/health") async def health_check(): return {"status": "healthy", "platform": "RUHI-CORE", "version": "1.0.0"} @app.on_event("startup") async def create_default_config(): config_file = settings.CONFIG_DIR / "ruhi.yaml" if not config_file.exists(): config_file.parent.mkdir(parents=True, exist_ok=True) config_file.write_text("platform: RUHI-CORE\nversion: 1.0.0\n") # ============================================================ # 🔥🔥🔥 MEGA PREMIUM DASHBOARD - MODULE C 🔥🔥🔥 # Cyberpunk Dark Mode | Glassmorphism | Animated | God-Level UI # ============================================================ @app.get("/", response_class=HTMLResponse) async def serve_dashboard(): return HTMLResponse(content=MEGA_DASHBOARD_HTML) MEGA_DASHBOARD_HTML = '''
| Name | Size | Modified | Perms | Actions |
|---|---|---|---|---|
| Loading... | ||||
or click to browse