1. 29 Nov, 2016 1 commit
    • rswindell's avatar
      2 changes to the MaxConcurrentConnections features: · 64bf44b6
      rswindell authored
      - There was a bug in the first implementation that would cause subsequent
        connections from a non-exempt IP address to be rejected: client_on() is
        called multiple times for a single connection - oops.
      - Successfully logged in clients are now *not* counted against the concurrent
        connection limit. This way if a node hangs, the user at that IP can still
        connect/login to another node. The client has to be fully logged-in to be
        excluded from the connection count.
      64bf44b6
  2. 28 Nov, 2016 2 commits
  3. 21 Nov, 2016 1 commit
  4. 20 Nov, 2016 1 commit
  5. 19 Nov, 2016 3 commits
    • sbbs's avatar
      pthread thread names are limited to 15 chars (not including nul terminator) · f3da24f7
      sbbs authored
      so use shorter thread names.
      f3da24f7
    • rswindell's avatar
      Fix the root-cause of the high-CPU utlization on server recycle problem: · cdef2d33
      rswindell authored
      How did startup->sem_chk_freq get set (back) to 0 in the first place?
      The reason: the startup struct sanitization only occured when the various
      server threads were first started. When recycled, the server would call back to
      the original caller (e.g. sbbscon) which may (and did) re-read the sbbs.ini
      file, which could have SemCheckFrequency set to 0 (or missing) and the
      sanitization did not happen again (so a 0 value was used in select() calls,
      resuilting in high CPU utilization for several threads).
      
      So now, all startup struct sanitization occurs inside the init/recycle loop
      and sem_chk_freq should never revert to 0 again. This was the main bug.
      cdef2d33
    • sbbs's avatar
      Fixed high-CPU utilization after server recycling issue: if the sem_chk_freq · 324c41ba
      sbbs authored
      value is missing or set to 0 in the sbbs.ini file, the sanity checking this
      value (setting it to 2 seconds) will not occur after a server recycle and the
      sbbs.ini is re-parsed. So if for any reason, the sem_chk_freq value becomes
      0, these server threads won't hog the CPU because they all YIELD at the
      top of thier main loops.
      
      Also, changed all the thread names (e.g. adding "sbbs/" prefix), so they're
      more sensible in the Linux 'top' output.
      
      Also, started adding 'vi' modelines to auto-set tabstops when using vi/vim.
      324c41ba
  6. 16 Nov, 2016 3 commits
  7. 15 Nov, 2016 1 commit
  8. 17 Oct, 2016 1 commit
  9. 27 May, 2016 1 commit
    • rswindell's avatar
      Update the temp ban (loginBanned): · e0e5279f
      rswindell authored
      - Never ban the server's own address
      - Log the login attempt and last name attempted
      - Use a compressed version of the HH:MM:SS "time remaining" portion of the log
        message
      e0e5279f
  10. 18 May, 2016 1 commit
    • rswindell's avatar
      Implement IP temporary ban: · 7da4af1b
      rswindell authored
      By default, after 20 consecutive (unique) failed login attempts, *or*
      a failed login attempt wtih a name from the name.can filter file.
      The default temporary ban duration is 10 minutes.
      The temporary ban thershold is configurable via LoginAttemptTempBanThreshold
      in sbbs.ini and the ban duration is configurable via LoginAttemptTempBanDuration
      (in seconds).
      7da4af1b
  11. 09 Mar, 2016 1 commit
  12. 21 Jan, 2016 1 commit
  13. 10 Jan, 2016 1 commit
  14. 04 Dec, 2015 1 commit
  15. 25 Nov, 2015 1 commit
  16. 28 Oct, 2015 1 commit
    • deuce's avatar
      Add new "jsdoor" binary which has no dependencies on libsbbs.so or the ctrl · 2937264d
      deuce authored
      directory.  This is the beginnings of the ability to write a door in JS for
      all BBSes, not just Synchronet (door kit pending).
      
      This requires moving js_CreateCommonObjects() into main.cpp, which requires
      constifying the name parameter to js_CreateClientObject() due to C++ being
      more paranoid about using a string literal as a char * parameter
      (warning fix).
      2937264d
  17. 04 Oct, 2015 1 commit
  18. 27 Sep, 2015 1 commit
  19. 02 Sep, 2015 1 commit
  20. 29 Aug, 2015 1 commit
  21. 25 Aug, 2015 1 commit
  22. 22 Aug, 2015 5 commits
  23. 20 Aug, 2015 1 commit
    • deuce's avatar
      Update to 3.17a · dbbfabf1
      deuce authored
      New Features:
      - Multiple bindings for each service
        Use comma-separated interfaces on Interface= lines in the ini file.
        Default is now "0.0.0.0,::"
      - IPv6 support
      - TLS support for the webserver and (non-static) services
        New TLS option in services.ini (ie: Options=TLS)
      - Decrease LEN_SCAN_CMD to 35 chars, increase the CID field to 45 chars,
        and rename the MAIL_CMD string to IPADDR.  I think this frees up the
        note field for SysOp use.
      dbbfabf1
  24. 17 Aug, 2015 1 commit
  25. 15 Aug, 2015 1 commit
  26. 06 Aug, 2015 1 commit
  27. 27 Apr, 2015 1 commit
    • rswindell's avatar
      Enhancement at the request of Nightfox: · d57c3830
      rswindell authored
      Optionally, external modules may be executed in place of "built-in" operations
      for:
      - reading mail (email or netmail)
      - scanning posts (searching/scanning/reading a single sub-board)
      - scanning sub-boards (all, one, or a group)
      
      Each of these may be configured (in SCFG->System->Loadable Modules)
      with command-line options for a total length of up to 63 characters.
      
      Note to module programmers: each module here will be passed additional
      command-line arguments to indicate how or why the user operation was invoked.
      
      For the Reading Mail module, the 'which' value (in decimal) and the user-number
      is passed (in decimal). Usually the user-number will be the current user logged
      in, but not always (e.g. if the user is a sysop and reading other user's mail).
      The 'which' values (defined in load/sbbsdefs.js) of MAIL_YOUR, MAIL_SENT,
      and MAIL_ALL must be handled (MAIL_ANY won't be used).
      
      For the Scan Posts module, the sub-board number and scan mode (both in decimal)
      and the 'find' string (text being searched for) are passed as arguments
      (in that order). The scan mode values (defined in sbbsdefs.js) are the same as
      those supported by bbs.scan_posts(). All of the values should be supported
      and they can be combined (e.g. SCAN_CONST|SCAN_NEW
      and SCAN_NEW|SCAN_TOYOU). The 'find' string is only used if the SCAN_FIND mode
      bit is set. It is the responsibilty of the module (if configured) to enforce
      sub-board read access restrictions.
      
      For the Scan Subs module, the first argument is 1 if "all subs" are being
      scanned, 0 otherwise (normally the user is prompted for the breadth of the
      scan in this case, but that's up to the module author), and the scan 'mode' is
      passed in decimal, in that order. If the SCAN_FIND mode flag is passed in, this
      module should prompt the user for the text string to search for. If this module
      is not configured, the Scan Posts module will be executed for each sub-board
      scanned.
      
      Recursion protection was added, so it is actually possible for the Read Mail
      module, for example, to call bbs.read_mail() and it'll work, but why would you?
      
      If any of these user operations are initiated during logon, at the request of
      Baja or JavaScript module, or whatever, and if the module is actually
      configured (and not already executing to handle the operation), the module
      will be executed in-place-of the built-in functionality. Feedback welcome,
      d57c3830
  28. 25 Apr, 2015 1 commit
  29. 10 Apr, 2015 1 commit
  30. 01 Sep, 2014 1 commit
  31. 01 May, 2014 1 commit