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

  1. 26 May, 2020 1 commit
  2. 24 May, 2020 1 commit
  3. 19 May, 2020 1 commit
  4. 11 May, 2020 2 commits
  5. 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.
      6f16fafe
  6. 08 May, 2020 4 commits
    • rswindell's avatar
      2 more uses of the "HOT" @-code: · 37a9a001
      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 (no parsing of |* or -*)
      37a9a001
    • 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.
      192dea0e
    • rswindell's avatar
      Add sbbs_t::keybuf_space() and keybuf_level() · a5b0f07f
      rswindell authored
      and JS console.keyboard_buffer_space() and keyboard_buffer_level()
      ... for tracking the number of character spaces used and available in the the (unget)keyboard input buffer.
      a5b0f07f
    • 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:
        add_hotspot()
        clear_hotspots()
        scroll_hotspots()
      
      redrwstr() gets some UTF8 touch-ups as part of this commit. <shrug>
      87c9982c
  7. 04 May, 2020 1 commit
  8. 30 Apr, 2020 2 commits
  9. 28 Apr, 2020 1 commit
  10. 24 Apr, 2020 1 commit
    • rswindell's avatar
      "Shouldn't be too hard" he said. <laugh> · e4fc5d04
      rswindell authored
      Added multiple Internet email recipient support.
      I'll look into multiple FidoNet netmail support later as that code needs an
      even greater overhaul in that process.
      e4fc5d04
  11. 23 Apr, 2020 1 commit
    • rswindell's avatar
      2 more configurable loadable modules: · 5a192c0e
      rswindell authored
      - external programs section (default: "xtrn_sec")
      - logon list (default: "logonlist")
      
      This ties the Baja XTRN_SECTION and USERLIST_LOGONS functions and the
      JS bbs.xtrn_sec() and bbs.list_logons() methods to the loadable modules (if
      configured) automatically without the exec_bin hackery in *.src.
      
      Also, allow the xtrn section argument to be passed to the JS/C++ method to
      go directly to a specific xtrn program section.
      
      The bbs.list_logons() can also accept an argument to pass to the module
      (e.g. "-y" for yesterday's logons).
      5a192c0e
  12. 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.
      0d73dbc4
  13. 19 Mar, 2020 1 commit
  14. 01 Mar, 2020 1 commit
    • rswindell's avatar
      sbbs_t::yesno() and noyes() and their JS equivalents (console.yesno/noyes) · 07f31378
      rswindell authored
      now accept an optional print-mode (a.k.a. pmode) argument to provide more
      control over the printing that happens in these functions/methods.
      The immediate use is for P_NOCRLF to stop the newline from being printed
      after a yes or no response (e.g. in a full-screen UI), but there could be other
      uses.
      07f31378
  15. 03 Jan, 2020 1 commit
    • rswindell's avatar
      Add/use a new get_ctrl_dir() function to query the SBBSCTRL env var and if · b236be71
      rswindell authored
      not set (or blank), use the default ("/sbbs/ctrl") and print a warning to
      stderr. This resolves a FAQ for sysops that struggle with setting the SBBSCTRL
      env var, but do have sbbs install in /sbbs or a symlink from /sbbs to where
      sbbs is actually installed.
      
      Note: this function is different than the one previously defined in getctrl.c
      but never used. If/when we ever really need to support PREFIX, then perhaps
      we'll use that one (which copies a string to a buffer).
      b236be71
  16. 01 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>
      c912ee30
  18. 08 Oct, 2019 1 commit
  19. 05 Oct, 2019 1 commit
  20. 21 Sep, 2019 1 commit
    • rswindell's avatar
      sbbs_t::center() and thusly JS console.center() now accepts an optional · 77f2c366
      rswindell authored
      "width" argument (in columns), defaults the user's current screen column-width
      but you can now over-ride this value when an additional/optional argument.
      Also, center() now clears-to-EOL before sending the CRLF to the terminal.
      Hopefully this doesn't mess up anyone's existing use of center().
      77f2c366
  21. 31 Aug, 2019 1 commit
  22. 28 Aug, 2019 1 commit
  23. 25 Aug, 2019 1 commit
  24. 24 Aug, 2019 1 commit
  25. 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
      performance.
      53884cce
  26. 20 Aug, 2019 1 commit
  27. 15 Aug, 2019 1 commit
  28. 12 Aug, 2019 1 commit
  29. 07 Aug, 2019 1 commit
  30. 05 Aug, 2019 2 commits
  31. 04 Aug, 2019 2 commits
    • rswindell's avatar
      More UTF-8 fun: · 3313a87e
      rswindell authored
      - bstrlen() moved to sbbs_t, accepts an option pmode argument so it can account
        for UTF-8 encoded strings correctly
      - JS console.strlen() now accepts an optional pmode argument (e.g. P_UTF8)
      - Renamed sbbs_t::utf8_to_cp437 to sbbs_t::print_utf8_as_cp437
      - Create/use msghdr_hfield() to perform UTF-8->CP437 conversions as needed for
        printing/copying UTF-8 encoded message header fields.
      - Defined XTRN_UTF8 misc setting flag. If a message editor does *not* have this
        flag, it is assumed to *not* support UTF-8. Will likely use this for UTF-8
        doors as some point too (none known to exist, yet).
      3313a87e
    • deuce's avatar
      Add a domain argument to open_socket() so that it's possible to add IPv6 · ffa18e1f
      deuce authored
      support to the JS API.
      ffa18e1f
  32. 03 Aug, 2019 1 commit
  33. 02 Aug, 2019 1 commit
    • rswindell's avatar
      There appears to be an issue with QWKnet messages being crossed-up where · b81a0c95
      rswindell authored
      a message is posted to a different conference than the original sub-board with
      completely different header information. I suspect this has something to do
      HEADERS.DAT creation or import - not sure. So I added a "Conference"
      headers.dat field for *messages* (it already existed for votes) and use that
      value to confirm that the message header at the associated offset value in the
      QWK packet has the same conference number as the section in the headers.dat
      file. This is really just a sanity check and will only catch messages that were
      mistakening cross-posted (to a different conference) - *but* it log errors and
      save the bad QWK or REP file for me to examine more closely and see what's
      going on - and the message won't be imported (just "lost", which is also bad).
      
      So added more QWK import success/error checking and logging (especially for QWK
      packets since REP importing already had a lot of stats covered).
      
      Another check would be to store the original message number in the headers.dat
      file as well and use that to confirm that the headers.dat section is the
      correct match for the QWK message at that offset. I did not implement this
      check, yet. The conference number check seems like it'll catch most of the bad
      msgs and lead me to the root-cause.
      b81a0c95