Skip to content
Snippets Groups Projects
  1. Mar 18, 2023
    • Rob Swindell's avatar
      Add InactivityAlert · 62bbc911
      Rob Swindell authored
      62bbc911
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Apply inactive_hangup option (for dumb terminals) using max_socket_inactivity · 3c8de965
      Rob Swindell authored
      this insures that inactive dumb (bot) connections will be disconnected even
      when using a script (e.g. animated pause prompt) that doesn't time-out.
      
      Also, if the connected node is the last node (for this sbbs instance), divide
      the socket inactivity timeout value in half.
      
      These changes (along with sbbs v3.20) should help with DOS (denial-of-service,
      not MS-DOS) prevention.
      
      Mainly for Krueger.
      3c8de965
    • Rob Swindell's avatar
      A few help text fixups. · b48da1c0
      Rob Swindell authored
      b48da1c0
    • Rob Swindell's avatar
      Add terminal-client socket inactivity detection/disconnection · 53b26318
      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
      53b26318
    • Rob Swindell's avatar
      Use const doubles for time durations · 8ff65a19
      Rob Swindell authored
      Instead of copy/pasta. No change in function,.
      8ff65a19
  2. Mar 16, 2023
  3. Mar 15, 2023
  4. Mar 14, 2023
  5. Mar 13, 2023
  6. Mar 12, 2023
    • Rob Swindell's avatar
      Better to just break this loop than to call exit() · 1c5404fd
      Rob Swindell authored
      exit()ing from a load()ed script can cause the parent script to terminate and
      we don't want that.
      1c5404fd
    • Rob Swindell's avatar
      Remove extraneous ulong typedef · 15c2d974
      Rob Swindell authored
      15c2d974
    • Rob Swindell's avatar
      Fix a couple of potential NULL-pointer deferences in js_initcx() failure cases · 600cdaf4
      Rob Swindell authored
      service_client->client is NULL in these failure/error cases, so get the
      protocol string from the service_client->service (which is not NULL) instead.
      600cdaf4
    • Rob Swindell's avatar
      New file transfer configuration sub menu script · a0333f66
      Rob Swindell authored
      To replace some copy/pasta in *.src (and later *.js shells)
      a0333f66
    • Rob Swindell's avatar
      Fix mysterious double overflow issue in parse_byte_count() · ab8eca85
      Rob Swindell authored
      It's possible that some values (e.g. "16384P") exceed the storage (count of
      bytes) of a 64-bit integer, and such values were causing floating point
      exceptions when running sbbsctrl.exe, e.g.
      Faulting application name: sbbsctrl.exe, version: 3.20.0.0, time stamp:
      0x00000000
      Faulting module name: gdi32full.dll, version: 10.0.19041.2604, time stamp:
      0x2b5302d5
      Exception code: 0xc0000090
      
      but interesting (and perhaps a clue), not with sbbs.exe.
      
      Anyway, this added range checking, limiting the maximum value to INT64_MAX
      (after division by unit, though there was no division-unit in the problem
      case, the "min_dspace" value parsing in scfglib2.c). Using conditional/ternary
      return statement had the same floating point exception occurrences, so this
      if-statement shouldn't be removed/changed/optimized!
      
      I suspect this has something to do with mix of Borland and MSVC run-time libs
      and perhaps different expectations or setups with regards to floating point
      exceptions. I did notice that when stepping through read_file_cfg(), I would
      get different return values for the same call to iniGetBytes() depending on
      whether it was initiated from sbbsctrl.exe (built with C++Builder) or
      sbbs.dll (built with MSVC).
      
      Thanks to Codefenix for providing the sample file.ini file that demonstrated
      the issue. This problem would've been very hard to root-cause otherwise!
      ab8eca85
  7. Mar 11, 2023
Loading