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. 05 Nov, 2020 2 commits
  2. 04 Nov, 2020 3 commits
    • Rob Swindell's avatar
      Always evaluate js.on_exit() installed expressions. · 175d0fbc
      Rob Swindell authored
      I noticed that when executing an external JS with the new "Use Shell / New Context" option set to "Yes", that any expressions (strings) installed via js.on_exit() were not being executed upon exit from the script. These on-exit strings are important for restoring global state information (e.g. control key pass-through, console mode) to the original state before the JS mod made any changes.
      
      I'm not sure why the special treatment of "scope == NULL" is through-out this function. Going back to v3.16, it appears this was special treatment for JS mods invoked via global hot key event (when scope != NULL). When invoking an xtrn JS mod with the new Context option, the scope argument is not NULL, so this check was defeating the parsing of the "exit_code" and the evaluation of any js.on_exit() installed expressions for no apparent reason. I can't think why global hot key events should be excluded from this logic either.
      175d0fbc
    • Rob Swindell's avatar
      Move the external program "pause on exit" implementation back to the C++ code. · 255ffd7a
      Rob Swindell authored
      Originally, the "pause on exit" was implemented in the C++ version of
      sbbs_t::xtrn_sec() and not sbbs_t::exec_xtrn(). This meant that the pause
      option was only implemented when the prgoram was invoked from the menu and
      not when invoked directly (e.g. via Baja or JS exec_xtrn function).
      
      When sbbs_t::xtrn_sec() was ported to JS, that functionality was also moved
      to JS. But it really should have been implemented in exec_xtrn() to begin
      with so that regardless of how the program is invoked, that SCFG setting takes
      effect.
      
      Thanks to Michael Long for pointing this out.
      255ffd7a
    • Rob Swindell's avatar
      Rewrite recycle_servers() · ff90a5a0
      Rob Swindell authored
      Added an "All Servers" option.
      Fixed the "Telnet server" (now "Terminal Server") to set the correct/modern semaphore file.
      Simplified the implementation of this function.
      ff90a5a0
  3. 02 Nov, 2020 4 commits
    • Rob Swindell's avatar
      Allow punctuation characters on either side of the markup tags · 93dc3f12
      Rob Swindell authored
      So you can do stuff (*like this*).
      
      Also, we don't need to heavily scrutinize the closing tag when we come upon it because we already determined it was valid before we accepted the opening tag/character.
      93dc3f12
    • Rob Swindell's avatar
      Manual terminal settings were cleared when logging in via SSH or RLogin · 2df371fe
      Rob Swindell authored
      This appears to go back to a change Deuce made in 2004 (rev 1.41) where ANSI, COLOR, RIP and WIP user terminal settings were always cleared when logging in via RLogin.
      
      I happened to notice that manually enabling iCE color support wasn't working when logging in via RLogin (the iCE color flag would be cleared every login, but worked fine when logging in via Telnet). Upon investigation, I found that *all* user's manual terminal settings were cleared for either RLogin or SSH logins (copy/pasted bug). So... stop doing that. The method of dynamic terminal capability detection/checking has changed since 2004, so we should not need to mess with the user's misc flags.
      2df371fe
    • Rob Swindell's avatar
      Support PETSCII terminals connected to non-PETSCII ports · 0eaa6bbf
      Rob Swindell authored
      The reported problem (by John "Jay" Crutti) was:
      If autodetection of the terminal is used from the defaults menu I get stuck on the prompt to hit my Delete key because on the BBS, it keeps showing me login statistics every time I hit my delete key. 
      
      Add/use new K_CTRLKEYS mode to stop inkey() from handling/eating control-keys (e.g. Ctrl-T) when asking user to hit backspace during defaults->terminal settings.
      
      Allow PETSCII_DELETE (Ctrl-T) as a valid option when asking for the backspace/delete key and set the PETSCII flag in the autoterm variable if hit by the user.
      0eaa6bbf
    • Rob Swindell's avatar
      Support markup tags (optionally) when displaying posts · adb896c1
      Rob Swindell authored
      Defaults to "Off" ("No") and can be set per-sub-board to either:
      - "Yes" parse/apply markup style to displayed message text while still displaying the markup tags
      - "Hide" parse/apply markup style to displayed message text and hide (don't display) the markup tags
      - "No", treat marked-up messages the same as any other message text, same as before.
      
      The supported Markup tags at this time are:
      #bold text#
      /Italicized text/
      _underlined text_
      #inverse text#
      
      Now, ANSI-BBS terminals (and Synchronet) do not support the concept of italic or underlined text (at least, not yet) - so those styles become combinations of the blink and high-intensity attributes which can be used to choose alternate fonts and this works well.
      
      These 4 styles were chosen to be compatible with GoldEd's "Style Codes", though GoldEd is actually very configurable in its support of these tags/codes and its possible we're not 100% compatible. For example, GoldEd (and SemPoint) both support the combining of tags/codes to created combinations of styled text - Synchronet does not (this is consistent with Mozilla/Thunderbird's "Structured Text").
      
      Multiple words can be styled with a single set of tags, but the first and last word must be delimited by white-space (this is not consistent with Markdown).
      
      Multiple lines can be styled with a single set of tags, but not multiple paragraphs (this is consistent with Markdown).
      
      The rules I chose were to minimize false positives but maintain some interoperability with GoldEd and Thunderbird with a familiar/common tag syntax.
      adb896c1
  4. 01 Nov, 2020 2 commits
  5. 26 Oct, 2020 2 commits
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Use a mutex to serial message saving among multiple clients/threads · 8cea25da
      Rob Swindell authored
      This work-around shouldn't be necessary, but at least on my Linux/Samba setup, when GitLab sends out notification emails to subscribers and creates 4+ simultaneous SMTP connections and sends email messages, sometimes (often) it ends up with a lock-timeout on the mail base. The file locking should handle the contention fine, but somehow I end up in scenarios where savemsg() takes 30 seconds to complete (the configured SMB lock-timeout is 30 seconds, likely not a coincidence) - and this causes other clients to timeout trying to lock the base. Just use a sharead-mutex here instead as a work-around. The wait time is indefinite, might want to consider using a timed-wait instead.
      8cea25da
  6. 25 Oct, 2020 7 commits
  7. 24 Oct, 2020 2 commits
    • Rob Swindell's avatar
      More log message overhaul. POP3 CAPA cmd support in transaction state. · 816ea9ed
      Rob Swindell authored
      Log the IP address first in most log messages.
      Condense white-space in log messages to a single space.
      Log the server IP address of incoming connections.
      (more) Intelligent email address enclosure in angle-brackets.
      Better duplicate address comparison (just for log message).
      Fix wrong order of lprintf arguments in !UNKNOWN USER log message (new bug).
      
      816ea9ed
    • Rob Swindell's avatar
      Add condense_whitespace() function. · c205de85
      Rob Swindell authored
      Created a function to condense all white-space in a string to single space-characters (e.g. Yoda).
      c205de85
  8. 23 Oct, 2020 6 commits
  9. 22 Oct, 2020 5 commits
  10. 21 Oct, 2020 6 commits
  11. 17 Oct, 2020 1 commit