Viewing revision r1 of NodeSpy — saved 2026-05-11 11:06 UTC .
“Initial seed content”
Jump to current version Full history

NodeSpy

Watch (and kick) live terminal sessions. Sysop-only.

Where

What it shows

Column Meaning
Slot The node number (1..BBS_NODES)
User Logged-in username
Proto telnet / ssh / rlogin
Page Their current page slug (main, boards/123, door:lord)
Last action Last thing they did (pressed E, loaded /boards/...)
Idle Seconds since their last keypress

The eye icon shows a snapshot of their last terminal screen (handy
for "this user looks stuck — what are they looking at?").

Kicking

The door-arrow icon disconnects the user. A prompt asks for a
reason — shown to them just before the connection drops:

*** Disconnected by sysop: <reason> ***

The kick is cross-process: the web app sets a flag on the user's
NodeActivity DB row, and a watchdog inside the terminal session
polls that flag every 5 seconds. Worst-case kick latency: ~5 s.

Different from a Ban: a kick just drops the current connection.
The user can reconnect immediately. To stop them coming back, add
an IP ban under /admin/ip-bans/.

Audit trail

Every kick writes a UserActivity row with activity_type='kick_node',
the slot, the target username, the reason, and the sysop's
username + IP — /admin/audit/ shows the trail.