• Rob Swindell's avatar
    Add terminal-client socket inactivity detection/disconnection · 5167dd17
    Rob Swindell authored
    - New keys in [BBS] section of sbbs.ini:
      MaxLoginInactivity (default: 10 minutes)
      MaxNewUserInactivity (default: 60 minutes)
      MaxSessionInactivity (default: none/unlimited)
    - Each configured external program/door in SCFG can have its own maximum inactivity setting (or else the session max inactivity is applied)
    - moved node-specific sec_hangup to system-wide/shared max_getkey_inactivity (configured in SCFG->System->Advanced)
    - moved node-specific sec_warn (seconds of inactivity before sending warning) to inactivity_warn (a percentage of elapsed max inactivity before sending warning), also configured in SCFG->System->Advanced and used for both socket and getkey inactivity detection
    - Renamed JS console.inactivity_hangup to console.max_getkey_inactivity (old name remains as alias)
    - Renamed JS console.timeout to console.last_getkey_activity (old name remains as alias)
    - Removed JS console.inactivity_warning
    - Added JS console.max_socket_inactivity (current input_thread inactivity threshold)
    - New text.dat string: InactivityAlert (just contains 3 ^G/BELLs by default) used for non-visual inactive-user warning
    The MaxLoginInactivity setting in particular solves the problem of custom scripts (e.g. animated pause prompts) that just poll indefinitely for user input and never time-out  - these will no longer cause nodes to be tied-up with inactive/bot users at login.
    You may ask yourself, how did I get here? No, you may ask yourself: why configure these socket inactivity max values in sbbs.ini? The reason is consistency: sbbs.ini is where the MaxInactivity is configured for all the other TCP servers and services.
    This fixes issue #534 for Krueger in #synchronet