Skip to content
Snippets Groups Projects
  1. Dec 18, 2023
  2. Dec 17, 2023
  3. Dec 15, 2023
  4. Nov 26, 2023
  5. Nov 13, 2023
  6. Jun 26, 2023
    • Rob Swindell's avatar
      Eliminate STRERROR macro · 4a53863e
      Rob Swindell authored
      This macro hasn't done anything meaningful since we stopped using really old
      versions of Borland compilers (and std libraries) where strerror() returned a
      string terminated with a line-feed (\n) character.
      4a53863e
  7. Jun 04, 2023
  8. Apr 13, 2023
    • Rob Swindell's avatar
      Fix false "SUSPECTED BOUNCE ATTACK ATTEMPT" for IPv6 FTP-data connections · b25b5734
      Rob Swindell authored
      This bug only impacted non-passive FTP connections. Using an FTP client
      with active (not passive) data connections over an IPv6 connection would
      false-trigger the "bounce attack" detection and the FTP server responded with
      "504 Bad port number" and logged a hack attempt in data/hack.log.
      
      The issue was that we were comparing the socket address structure (which
      contains other fields besides the address itself) between the control and
      proposed-data connections. While this logic worked okay for IPv4,
      it did not for IPv6 (the 2 structs contained some non-address differences).
      Rather than modify the socket address structures to match where needed, I'm
      just comparing the string representation of the addresses, since that's
      what we really care about anyway.
      
      Thank to "mark i" of Truck Stop BBS for alerting me to this issue
      b25b5734
  9. Mar 24, 2023
  10. Mar 19, 2023
  11. Mar 04, 2023
  12. Feb 19, 2023
  13. Feb 16, 2023
  14. Feb 10, 2023
  15. Feb 09, 2023
  16. Feb 03, 2023
    • Rob Swindell's avatar
      Fix uploader-notification, credit awards, download-counters in FTP downloads · 45b128c0
      Rob Swindell authored
      Since v3.19 (the new filebases), when a user FTP-downloaded a file, we failed
      to properly find/load that file's record from the filebase (searching for the
      file's full path, rather than just the filename), so the code the increments
      the file's download counter, notifies the uploader, awards credits, etc. did
      not ever execute. This means that FTP-downloads for all files downloaded via
      FTP were effectively "free" (and nobody noticed). No error was logged either.
      
      I discovered this while debugging the case of "(null)" filenames in the
      action/download MQTT topic messages being published by the FTP server. So
      that issue is fixed as part of this commit as well.
      
      Oh, and if this code had executed before, it would have memory-leaked the
      file information, so that's fixed too (added call to smb_freefilemem). Ugh.
      45b128c0
  17. Jan 30, 2023
    • Rob Swindell's avatar
      5b522af3
    • Rob Swindell's avatar
      The 3rd great MQTT data scheme update (sorry Nelgin) · e94281e6
      Rob Swindell authored
      - Most published messages (besides log entries) have a timestamp (in ISO8601 format) prepended and tab-separated
      - The order and number of elements in client messages (list and activities) has been updated, now includes user number
      - Server client lists are now published to .../SERVER/client/list
      - Server client activities (connect, disconnect, update) are now published to .../SERVER/client/action/#
      - Server client count is now published to .../SERVER/client (with the maximum client count, if applicable)
      - Server states are now just represented by name (e.g. initializing, ready, stopping, stopped) and not number
      - BBS errors are logged to sbbs/BBS/action/error/LEVEL (where LEVEL is the log level name, e.g. "critical" or "error')
      - All server hack-attempts, SPAM attempts, logins, logouts, uploads, downloads, are published to sbbs/BBS/action/ACTION/*
      - Chat pages are published to sbbs/BBS/action/page/node/#
      - New users (on the terminal server) are published to sbbs/BBS/action/newuser
      - Posted messages and executed external programs (on the terminal server) are published to sbbs/BBS/action/ACTION/CODE topic
      - The event thread started/stopped status is published to .../SERVER/event
      
      Yeah, the wiki will get updated soon to reflect/document all these changes
      e94281e6
  18. Jan 24, 2023
  19. Jan 09, 2023
  20. Jan 04, 2023
    • Rob Swindell's avatar
      Public hack, spam, and error logs at the MQTT BBS-ID topic depth · 7ce24b48
      Rob Swindell authored
      This is more consistent with how these events are logged in a BBS-common log file in data/*.log.
      
      This change also restores the server abbreviation to the error log entries that used to be there until recently.
      7ce24b48
    • Rob Swindell's avatar
      Over-overhaul of MQTT support · 916fdacb
      Rob Swindell authored
      Each Synchronet server is now its own MQTT client. This means there's no
      longer any MQTT logic in the Synchronet "hosts" (e.g. sbbscon.c, ctrl/*.cpp)
      and none needed for SBBS NT services (they'll "just work" with MQTT).
      
      This also means that just about everything (except for nodes, spam and hack)
      is now published per-server (in the sbbs/BBS-ID/hostname/server/ topic branch)
      and if you want aggregated totals or client lists, you'll have to do that in
      your own MQTT client or dashboard.
      
      I also removed the publishing of thread_count and socket_count topics as
      they weren't universally supported across all servers and are of questionable
      value. They can be added back later if determined to be useful.
      916fdacb
  21. Jan 02, 2023
    • Rob Swindell's avatar
      Second part of MQTT overhaul · d1c07811
      Rob Swindell authored
      Now support subscriptions (e.g. recycle topics, node input topics) in SBBSCTRL.
      This required a lot of search/replace and fun with circular struct pointers.
      d1c07811
    • Rob Swindell's avatar
      MQTT support overhaul, mainly for SBBSCTRL compatibility · eb5fdedb
      Rob Swindell authored
      The only difference in the data/scheme is that the "error" topic (error log) is now under each server rather than each host. I don't *think* there are any other changes from the MQTT consumer side.
      
      Still not done: subscribing (e.g. support for recycle or node-spy-input via MQTT) and NT services support.
      
      This change also includes a cool feature that will prompt the sysop if there's a timeout (30 seconds) while waiting for servers to shutdown gracefully and giving the sysop the option to abort (Cancel) the wait (and shutdown ungracefully) or continue the wait (OK).
      eb5fdedb
  22. Dec 30, 2022
    • Rob Swindell's avatar
      Common login control (e.g. via real name) using new find_login_id() function · 7679dcf8
      Rob Swindell authored
      Previously, many servers and services didn't support login by real name
      (e.g. issue #469) even if the sysop had that option enabled in SCFG.
      
      Move login control settings from node.ini to system (main.ini -> login)
      
      The 3 node toggle options:
      - Allow Login by User Number
      - Allow Login by Real Name
      - Always Prompt for Password
      
      ... have been now moved from SCFG->Nodes->Node x->Toggle Options to
      SCFG-System->Toggle Options.
      
      If you upgraded to v3.20a before now, you'll want to double-check these
      settings to make sure they're how you want them set. New upgraders that run
      upgrade_to_v320.js (e.g. via 'jsexec update') will get these settings migrated
      automatically.
      
      Added some error detection/logging to upgrade_to_v320.js when failing to open
      .cnf files.
      
      Constified some more user/login related function args and return types.
      7679dcf8
  23. Dec 29, 2022
  24. Dec 23, 2022
  25. Dec 12, 2022
  26. Dec 05, 2022
    • Rob Swindell's avatar
      Add support for systemd system state notifications · 7e320d92
      Rob Swindell authored
      When the systemd dev package (e.g. libsystemd-dev) is installed, we can use
      sd_notify() to inform systemd of Synchronet server state/status. The state
      values (READY, STOPPING, RELOADING) are "well known" while the status
      value is a free-form text string (the last lputs output).
      
      Eliminated the free-form status() callback from *startup_t.
      Eliminated the now-redundant started() callback from *startup_t.
      
      Eliminated the use of sbbs_status.c/h as nothing is using that interface
      and while I do plan on using a remote control/monitor interface, I'm
      considering use of a standard pub/sub lib and protocol.
      
      This commit is going to break the Windows sbbsctrl build for sure.
      Probably break the sbbsNTsvcs build.
      7e320d92
  27. Nov 17, 2022
  28. Oct 18, 2022
    • Rob Swindell's avatar
      Full read/write support of new user.tab userbase file · 8a22b246
      Rob Swindell authored
      Also resolved some 32 vs 64-bit 'long' issues/ambiguities that have long-remained. :-)
      
      This commit also removes logon.lst file support.
      
      There's a TODO block remaining in js_user.c for setting portions of a user's birthdate (e.g. just the year or month or day).
      8a22b246
Loading