Synchronet now requires the libarchive development package (e.g. libarchive-dev on Debian-based Linux distros, for more info) to build successfully.

  1. 24 Aug, 2020 1 commit
  2. 16 Aug, 2020 1 commit
  3. 08 Aug, 2020 2 commits
    • rswindell's avatar
    • rswindell's avatar
      The problem: the sysop (me) is not notified of critical errors (e.g.... · 5899a303
      rswindell authored
      The problem: the sysop (me) is not notified of critical errors (e.g. zone file problems) in a timely manner.
      Part of the solution: notify a configured user (e.g. user #1) via short-message/telegram and email/netmail logged-errors when messages of a configured severity (e.g. "Critical") are logged.
      The second part of the solution (coming next) will be allowing timed events to log a message of a configurable severity logged when the event fails (returns a non-zero error level to sbbs).
      I'm saving the error-notification-user-number and log-severity as part of the node.cnf file because:
      - that's where the validation user number is already set
      - I can conceive of a large system were certain node ranges (different instances of sbbs) might want different operators to be notified of logged-errors
      This also means I eliminated all the legacy com port/modem stuff from the end of the node.cnf file. None of that is used in sbbs v3.
      Also included in this commit are improvements around logging:
      - reduce the severity of UDP recvfrom failures in services
      - a more detailed log message when the mail server successfully delivers an email (via SMTP) - easier to answer the question: was that email you/they sent delivered successfully?
  4. 01 Aug, 2020 1 commit
    • rswindell's avatar
      Auto-detect non-Telnet connections to the terminal server's Telnet port and · 40d829f2
      rswindell authored
      automatically revert to Raw/TCP mode. This resolves the issue of users that
      connect using modem/serial emulators over TCP that do not actually support Telnet and then either try to transfer files, which usually will not work due to escaped (or unescaped) IAC (0xFF) characters, or the user may be sent Telnet Go Ahead (GA) sequences which may display as periodic garbage in their terminal program.
      This seemed like a better solution than having (yet another) dedicated terminal server port for "raw" connections over TCP, though a "raw" port still might not be a bad idea for a future enhancement. RLogin is already super close to "raw", so it's probably not really necessary to have another port configured/listening.
  5. 20 Jul, 2020 1 commit
  6. 23 May, 2020 1 commit
    • rswindell's avatar
      Address problem reported by wkitty42: · 4bd2888d
      rswindell authored
      May 21 00:00:15 southeaststar synchronet: evnt BBS Events Executing external: ?logonlist -m
      May 21 00:00:15 southeaststar synchronet: evnt BBS Events !JavaScript warning /sbbs/exec/load/nodedefs.js line 167: Disconnected
      ... by setting the online mode to ON_LOCAL while executing the sys_daily event.
  7. 11 May, 2020 1 commit
  8. 09 May, 2020 1 commit
    • rswindell's avatar
      Both hungry/liberal hot-spots and strict hot-spots can be defined now, at the... · 6f16fafe
      rswindell authored
      Both hungry/liberal hot-spots and strict hot-spots can be defined now, at the same time. For Nelgin.
      Use ^A` to define a single-char strict hot-spot using Ctrl-A codes. Unfortunately, this usurps the "home" Ctrl-A code which nothing seems to use but has now been changed to ^A'.
      Use ` instead of ~ in mnemonics to define strict single-char hot-spots (also displays the cmd key in [] instead () on non ANSI/PETSCII terms).
      Use @` instead of @~ codes to define strict hot-keys.
      Use HOT:STRICT @-code to declare a strict hot-key color.
      Use HOT:HUNGRY @-code to toggle back to hungry color-defined hot-keys (the default).
      New optional boolean argument to JS console.add_hotkey(), hungry = true by default.
  9. 08 May, 2020 3 commits
    • rswindell's avatar
      2 more uses of the "HOT" @-code: · b468feda
      rswindell authored
      - "HOT" by itself will set the hot-spot attribute to the *current* attribute
        (just colorize the @-code in your editor the same as you do your cmd keys
        no need to memorize color-code mnemonics)
      - "HOT:OFF" will turn off the hot-spot attribute through the end of the text or   util re-enabled
      - Use a more greedy/liberal hot-spot matching algoirthm so that hot spots can overlap and the "best" one will be chosen. No way to opt-out of this algorithm (e.g. to use a conservative matching algo) currently.
      - Earlier parse of @~ codes to keep text prestine
    • rswindell's avatar
      A more convenient method of creating mouse hot spots in a display (e.g. menu)... · 192dea0e
      rswindell authored
      A more convenient method of creating mouse hot spots in a display (e.g. menu) file: New "HOT:<attr>" @-code allows you to define a specific combination of attributes (colors) that will be used to exclusively create clickable command keys or words in a file. Every set of charcters in the display file that uses that specific combination of attributes will become an automatic mouse hot spot. The <attr> is specified using a set of attribte mnemonics (e.g. "YH" for high-intensity yellow), the same set used in attr.cfg and other places in sbbs.
      This allows more WYSIWYG style menu editing (e.g. use PabloDraw), you just need to be careful with your choice of colors. You cannot send white-space or control characters with this method and the clickable text is the exact text that will be put in the keyboard buffer.
    • rswindell's avatar
      Add mouse hot spot support: · 87c9982c
      rswindell authored
      - hot spots are clickable screen areas (e.g. in menus and prompts) that   generate key-strokes
      - commands may be from 1 to 127 ASCII-characters in length
      - currently using the X10 mouse reporting mode, may change
      - all mnemonics strings (~Example) are automatically hot-spots
      - The new ~ @-code defines a hot spot
      - Any screen-clear operation clears all hot spots
      - sbbs now tracks the current screen (cursor position) row
      - eliminated the old "tos" (top-of-screen) boolean (row == 0 indicates "tos")
      - created an sbbs_t::ungetstr() method
      - keep track if in pause (hit a key) prompt, for special mouse behavior
      new JS console object:
      - row property
      - tos property is now read-only (and deprecated)
      - new methods:
      redrwstr() gets some UTF8 touch-ups as part of this commit. <shrug>
  10. 27 Apr, 2020 1 commit
  11. 17 Apr, 2020 1 commit
  12. 13 Apr, 2020 1 commit
    • deuce's avatar
      Check if TCP timestamps are enabled, and if they are, subtract 12 from the · 7a6e1b5c
      deuce authored
      MSS for the packet size.
      Fixes problem with telnet server where large transfers were full packets
      followed by a 12 byte packet.  Also removes hack in webserver that always
      assumed timestamps were enabled.
      The Win32 code has not been tested, but is assumed to work perfectly.
  13. 11 Apr, 2020 1 commit
    • rswindell's avatar
      Two unrelated changes, but since they touched sbbs.h, I'm committing them · 0d73dbc4
      rswindell authored
      together to keep things atomic:
      1. Eliminate eprintf() as sbbs_t::lputs() and sbbs_t::lprintf() do the
         "right thing" (e.g. log to the event log when called from the event_thread).
      2. Moved upload_stats() and download_stats() from ftpsrvr.c to getstats.c where
          I plan to make use of them for JS-based upload/download file support.
  14. 19 Mar, 2020 1 commit
    • rswindell's avatar
      Added usernum member to client_t which tracks if the client_t.user (name) · 570a9466
      rswindell authored
      is actually an authenticated local user (when usernum != 0).
      msg_client_hfields() no longer saves the client->user as the SMB SENDERUSERID
      hfield when the client hasn't been authenticated (as is the case with normal
      SMTP). The SENDUSERIDs were redundant and misleading for unauthenticated
      SMTP-received mail messages, so that's now fixed.
  15. 02 Feb, 2020 1 commit
  16. 20 Dec, 2019 1 commit
  17. 24 Oct, 2019 1 commit
    • rswindell's avatar
      Invoking a JavaScripot global hot key event handler (e.g. nodelist.js) *while* · c912ee30
      rswindell authored
      running a JavaScript module would crash (e.g. segfault) sbbs:
      Create and use a separate JS runtime, context, and global object/scope for
      global hotkey events. This means that the hotkey won't benefit from any
      previously loaded/required scripts, possibly effecting the performance of the
      first invocation of the hotkey handler. Subsequent JS hotkey events will reuse
      the same runtime/context/global, so they'll execute fast(er).
      One questionalbe change to js_execfile():
      With the JS_GC (garbage collection) call *before* the JS_ENDREQUEST() call, the
      process would crash in libmozjs. Moving the JS_GC() call to *after* the
      JS_ENDREQUEST() resolved this issue and I'm not clear why. This 'js_cx'
      parameter here is not always sbbs_t::js_cx. When called to handle a JS hotkey
      event, it's sbbs_t::js_hotkey_cx, so it shouldn't interfere with the
      sbs_t::js_cx being used by the currently executing JS module (shell or door).
      <scratches chin>
  18. 23 Sep, 2019 1 commit
    • rswindell's avatar
      This change goes with the previous commit to scfglib2.c (with no commit msg): · 05720ed9
      rswindell authored
      Address problem reported by Mark Lewis:
      If a timed event is configured to both run "exclusively" and on "Any" node,
      then any nodes in use at the time of the event would get their status changed
      to waiting-for-connection (WFC) and it could actually become possible for 2
      clients to be using the same node number.
      So, when loading the configuration, turn off the "exclusive" flag if the
      event's node is set to "Any" (0).
      Just for completeness, fix the actual bug (introduced in main.cpp 1.744) too.
  19. 01 Sep, 2019 1 commit
    • rswindell's avatar
      Received-telnet command improvements: · 2b1bccc2
      rswindell authored
      - If a telnet command was received in multiple packets, the memcpy optimization
        in telnet_interpret() would skip/drop all bytes in the subsequent pkt payload
        before an IAC char. Don't optimize when in the middle of a telnet command.
      - If a received telnet command exceeds the telnet_cmd buffer, reset the
        received telnet_cmdlen and log a warning-level message
      - If a telnet sub-negotiation END command is received as the beginning of a
        new telnet command, log a warning-level message and reset the telnet_cmdlen.
      This fixes the occasional problem observed when using fTelnet and its sending
      the "SEND-LOCATION" sub-neg command split between 2 TCP packets. Only
      part of the first packet would be used as the location data and the rest
      processed as input from the users (e.g. as the Login: prompt). Thanks, Ree!
  20. 31 Aug, 2019 1 commit
  21. 29 Aug, 2019 1 commit
  22. 27 Aug, 2019 6 commits
  23. 26 Aug, 2019 1 commit
  24. 25 Aug, 2019 3 commits
    • rswindell's avatar
      Remove Windows 9x support, finally. · aaf03142
      rswindell authored
      Remove DEBUG.LOG file support for Win32-debug builds, never really looked-at.
    • rswindell's avatar
      A couple of passthrough socket fixes: · de72e6c3
      rswindell authored
      1. when de-activating the passthru socket, give the passthru_thread some
         cycles to copy any remaining socket data into the outbuf before we let
         the node_thread continue on and spew its own data into the outbuf.
         This fixes the problem of final messages of a file transfer protocol
         being intermixed with BBS data (prompts, menus, and such) and causing
         file download finalization issues.
      2. Don't read from the passthru socket until there is enough room in the
         outbuf for the maximum possible telnet-expanded read size. This fixes
         streaming download protocol (ZMODEM and YMODEM-G) errors.
      Also, for good measure, check the passthru_socket for writability before
      send()ing on it and log a warning if it's ever not writable.
    • rswindell's avatar
      Create/use passthru_socket_activate() function which will purge the · 59f896e6
      rswindell authored
      client_socket_dup before activating the passthru_socket. This resolves the
      issue of external programs receiving stale data from the previous passthru
      session - data that was not sucessfully read by the last external program
  25. 24 Aug, 2019 1 commit
  26. 22 Aug, 2019 1 commit
  27. 21 Aug, 2019 1 commit
    • rswindell's avatar
      Always use a passthru (proxy) socket when executing external programs that · 53884cce
      rswindell authored
      use socket I/O (e.g. sexyz, door32.sys doors, sync-xsdk doors) - not just when
      the client is connected via SSH. This solves a number of problems:
      - programs that change socket options
      - programs that don't support non-CP437 charsets (e.g. PETSCII, UTF-8)
      - programs that don't support Telnet-IAC escaping
      This greatly simplifies (reduces the need for) input_thread locking.
      The passthru_thread now handles chunks of up to 4000 bytes per transfer
      between socket and ringbuf, instead of a char at a time, greatly improving the
  28. 14 Aug, 2019 1 commit
  29. 12 Aug, 2019 2 commits
    • rswindell's avatar
      Accept and store the "Internet host number" portion of the telnet · 14f8af7d
      rswindell authored
      TERMINAL LOCATION NUMBER (RFC 946) in sbbs_t::telnet_location.
      Some (older?) versions of fTelnet request to send this option to the BBS to
      share the real IP address of the client. Accept this option (when using
      "format 0") and store the first 32-bits (an IPv4 address) in the telnet
      location storage / caller-ID information. The same place the telnet
      SEND LOCATION value is stored if received.
      Now, we're not requesting this option (e.g. with a Telnet "DO" command), but
      fTelnet doesn't need that: It offers to send it, so we accept.
    • rswindell's avatar
      delfiles() now takes a 3rd argument: keep, which is a number of files to retain · 582c898a
      rswindell authored
      (not delete) from the end of the sorted list of files (normally, 0).
      Created an sbbs_t::delfiles() wrapper which defaults to keep 0 files and also
      generates a error.log message if any of the file-deletions fail.