A secure HTTP server for executing code in various programming languages.
- Supports multiple programming languages (Python, JavaScript, TypeScript, Go, Rust)
- Resource limiting (memory, CPU, disk space)
- Concurrent execution support
- Sandbox environment for secure execution
- RESTful API
- Docker support
GET /health
Returns 200 OK if the server is running.
POST /execute
Content-Type: application/json
{
"language": "python",
"code": "print('Hello, World!')",
"input": null,
"dependencies": [],
"timeout": 5000,
"env_vars": {}
}
- Build and run directly:
cargo run --release
- Using Docker:
docker-compose up --build
The server can be configured using command-line arguments:
code-exec-server --help
Available options:
--addr
: Server address (default: 0.0.0.0:3000)--max-concurrent
: Maximum concurrent executions (default: 10)--memory-limit
: Memory limit in bytes (default: 100MB)--cpu-time-limit
: CPU time limit in seconds (default: 5)--max-processes
: Maximum number of processes (default: 10)--file-size-limit
: File size limit in bytes (default: 10MB)--disk-space-limit
: Disk space limit in bytes (default: 100MB)
The server can be deployed using Docker:
- Build the image:
docker build -t code-exec-server -f code-exec-server/Dockerfile .
- Run the container:
docker run -p 3000:3000 \
--security-opt seccomp=unconfined \
--cap-add SYS_ADMIN \
-v /tmp:/tmp \
code-exec-server
Or using docker-compose:
docker-compose up --build
The server uses several security measures:
- Sandbox environment for code execution
- Resource limits (memory, CPU, disk space)
- Process isolation
- Non-root user in Docker
- Temporary directories for execution
- Run tests:
cargo test
- Format code:
cargo fmt
- Run linter:
cargo clippy