Like rust-playpen, but in Rust.
This repository contains:
evalbotlib/: the evaluation backendtgbot/: the Telegram frontendevaluators/: some glue code for various REPLsrun/: example configuration files and a script to set up a sandbox in Arch
All integers are in little-endian byte order.
The daemon will be passed a Unix socket via FD 3. It should listen on the socket for connections.
Each request will come as a separate connection, and the bot will send the following:
| Field | Type | Description |
|---|---|---|
| Timeout | Int32 | Timeout in milliseconds, or 0 for none |
| Context key length | Int32 | Context key in bytes |
| Code length | Int32 | Code length in bytes |
| Context key | UTF-8 string | Key of the context to use |
| Code | UTF-8 string | The code to evaluate |
The bot expects, for each request:
| Field | Type | Description |
|---|---|---|
| Response length | Int32 | Response length in bytes |
| Response | UTF-8 string | The response |
Note that an evaluator will be killed by the bot if it doesn't respond within timeout seconds. (This means that you don't actually need to apply the timeout yourself.)