from fastapi import FastAPI, Request from fastapi.responses import JSONResponse import subprocess app = FastAPI() @app.get("/") def root(): return {"status": "ok", "message": "Terminal API is running"} @app.post("/terminal") async def run_terminal(req: Request): data = await req.json() cmd = data.get("cmd") if not cmd: return JSONResponse( status_code=400, content={"error": "cmd field is required"} ) try: result = subprocess.run( cmd, shell=True, capture_output=True, text=True, timeout=1000000000 ) return { "command": cmd, "stdout": result.stdout, "stderr": result.stderr, "returncode": result.returncode } except Exception as e: return JSONResponse( status_code=500, content={"error": str(e)} )