mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
Refa: improve usability of Node.js/JavaScript code executor (#8979)
### What problem does this PR solve? Improve usability of Node.js/JavaScript code executor. ### Type of change - [x] Refactoring --------- Co-authored-by: Kevin Hu <kevinhu.sh@gmail.com> Co-authored-by: writinwaters <93570324+writinwaters@users.noreply.github.com>
This commit is contained in:
@ -15,24 +15,29 @@
|
||||
#
|
||||
import base64
|
||||
|
||||
from core.container import _CONTAINER_EXECUTION_SEMAPHORES
|
||||
from core.logger import logger
|
||||
from fastapi import Request
|
||||
from models.enums import ResultStatus
|
||||
from models.enums import ResultStatus, SupportLanguage
|
||||
from models.schemas import CodeExecutionRequest, CodeExecutionResult
|
||||
from services.execution import execute_code
|
||||
from services.limiter import limiter
|
||||
from services.security import analyze_code_security
|
||||
from core.container import _CONTAINER_EXECUTION_SEMAPHORES
|
||||
|
||||
|
||||
async def healthz_handler():
|
||||
return {"status": "ok"}
|
||||
|
||||
|
||||
@limiter.limit("5/second")
|
||||
async def run_code_handler(req: CodeExecutionRequest, request: Request):
|
||||
logger.info("🟢 Received /run request")
|
||||
|
||||
async with _CONTAINER_EXECUTION_SEMAPHORES[req.language]:
|
||||
code = base64.b64decode(req.code_b64).decode("utf-8")
|
||||
if req.language == SupportLanguage.NODEJS:
|
||||
code += "\n\nmodule.exports = { main };"
|
||||
req.code_b64 = base64.b64encode(code.encode("utf-8")).decode("utf-8")
|
||||
is_safe, issues = analyze_code_security(code, language=req.language)
|
||||
if not is_safe:
|
||||
issue_details = "\n".join([f"Line {lineno}: {issue}" for issue, lineno in issues])
|
||||
|
||||
@ -20,4 +20,5 @@ from api.handlers import healthz_handler, run_code_handler
|
||||
router = APIRouter()
|
||||
|
||||
router.get("/healthz")(healthz_handler)
|
||||
router.post("/run")(run_code_handler)
|
||||
router.post("/run")(run_code_handler)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user