External programs (the exec action)
The most powerful action in the menu engine. You can wire any shell
command to any menu hotkey, with the user's terminal bridged to the
process's stdin/stdout, with optional dropfile generation. Use it for:
- Running door games not yet supported as a first-class type
- A weather forecast (curl + wttr.in)
- An AI chat front-end
- A guestbook script
- A markov-chain text generator
- Anything you can shell out
Configuring an exec item
In Admin → BBS Menus → edit a menu → Add new item:
action_type=execaction_args= either a plain command line OR a JSON object
Plain string form
curl -s wttr.in/?A0Tn0
That's it. Output streams to the user's terminal until the command
exits.
JSON form
{
"cmd": "/opt/doors/lord/lord.sh",
"name": "Legend of the Red Dragon",
"dropfile": "door32.sys",
"cwd": "/opt/doors/lord"
}
| key | purpose |
|---|---|
cmd |
shell command (required) |
name |
label printed when launching/exiting (optional) |
dropfile |
door.sys, dorinfo, door32.sys — generates one before launch |
cwd |
working directory |
Variable substitution
In cmd you can use:
{user}— the BBS username{userid}— numeric user id{dropdir}— the directory where the dropfile was written
So lord.sh -drop {dropdir} works.
Safety
exec runs whatever the sysop configured, as the user that runs
anetbbs-telnet/anetbbs-ssh. There is no sandbox. Treat this as a
sysop-trust feature only. Never let regular users edit menu items.
Sample weather door
/admin/bbs-menus/ has a "Add sample items" button that adds:
- Hotkey 2 → exec
curl -s wttr.in/?A0Tn0(named "Weather") - Hotkey 1 → ansi
welcome(replay the welcome banner)
Use these to confirm exec and ansi work on your install before
rolling out custom doors.