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. 14 Nov, 2020 2 commits
    • Rob Swindell's avatar
      Restore console to "cooked" mode before daemonizing(). · 8cdd0422
      Rob Swindell authored
      Previously, the console would be left in "raw" mode after invoking
      'jsexec -d <module>'.
      8cdd0422
    • Rob Swindell's avatar
      More control over output streams · 74b4a948
      Rob Swindell authored
      Added options -A[filename] and -S[filename] to allow more control over which output streams go where (for mlong and his troubles with running ircd via systemd).
      
      -A controls "all messages" either sending all to stdout or the specified filename. This override the automatic suppression of the console output stream when run without a controlling TTY.
      
      -S controls "status message" (includes non-error level log messages), either sending the status messages to stdout or the specified filename. This also overrides the automatic suppression of the console output stream when run without a controlling TTY.
      74b4a948
  2. 13 Nov, 2020 2 commits
    • Rob Swindell's avatar
      JS File.iniGetObject() and .iniGetAllObjects() now support blank strings · 1af02470
      Rob Swindell authored
      If an .ini file is read by either the iniGetObject() or iniGetAllObjects() methods and contains a key with a blank value, that property would be created with an "undefined" value.
      
      Both the iniGetObject() and iniGetAllObjects() methods now accept an additional Boolean argument (which defaults to false), to specify that "blanks" are acceptable. When the "blanks" argument is true, then keys with empty values in the .ini file are created as properties with empty string values (length of 0).
      
      This is going to be useful for modopts.js to read potentially-blank strings from modopts.ini and differentiate between a blank string key and a missing key.
      1af02470
    • Rob Swindell's avatar
      Add timestamp of node.log file to crash.log · bd78d5c5
      Rob Swindell authored
      When a preexisting node.log file is found, a terminal server crash is suspected. Include the timestamp of the node.log in the message appended to the system log (data/logs/*.log) to help identify the likely time of the crash.
      bd78d5c5
  3. 12 Nov, 2020 4 commits
    • Rob Swindell's avatar
      Fix crashing bug introduced in previous commit of this file · 6dd2aedb
      Rob Swindell authored
      Don't pass NULL to strcasestr().
      6dd2aedb
    • Rob Swindell's avatar
      Clarify in the help text that first directory is cloned... · 72b17e66
      Rob Swindell authored
      when there is no "template directory" selected/configured.
      72b17e66
    • Rob Swindell's avatar
      Reduce unnecessary posted-to username searches. Auto-UTF8 in savemsg(). · a852cced
      Rob Swindell authored
      When posting to "All" or replying to a message that was posted by networked (not local) user, don't attempt to search for that username in the local user base to inform them of the posted message to them.
      
      savemsg() is the underlying C function for saving a new message (mail or post) to a message base from several places, including JS modules. If there was no "charset" specified in the passed message header, check to see if the message body text is non-ASCII but valid UTF-8, and if it is, set the FIDO_CHARSET header field to the appropriate UTF-8 charset identifier string. This would *also* address Issue #177 reported by Michael J. Ryan. It's possible, but unlikely, that a message text would contain valid CP437 that *also* happened to be valid UTF-8. If that does happen to occur (e.g. in posted ANSI art?), we might want to revert this enhancement to savemsg() and leave to the caller's to detect/specify the charset, always.
      a852cced
    • Rob Swindell's avatar
      Improved parsing of "charset" parameter in MIME Content-Type header. · ad79c591
      Rob Swindell authored
      In Issue #177, the reported problem message header was "Content-Type: text/plain; charset=utf-8; format=flowed"
      The fact that the "charset" value was not quoted and not space delimited means the charset would have been parsed as "utf-8;", which would not provide an exact match (against "utf-8") in smb_msg_is_utf8() and thus the message body would not be considered to be utf-8 encoded.
      
      The solution is to terminate the "charset" parameter value at the semicolon, if it exists, and the value was not quoted.
      
      Also, for good measure, only search for " charset" or ";charset" to avoid false-positive parameter matches,  like "notcharset".
      ad79c591
  4. 11 Nov, 2020 7 commits
  5. 10 Nov, 2020 4 commits
  6. 08 Nov, 2020 2 commits
  7. 07 Nov, 2020 3 commits
    • Rob Swindell's avatar
      Address warning: unused variable ‘argv’ · 43953c2d
      Rob Swindell authored
      43953c2d
    • Rob Swindell's avatar
      Store client terminal information in node#/terminal.ini · ff449a11
      Rob Swindell authored
      In preparation for node-spy applications that can support multiple terminal sizes/types (none exist yet). The file is updated whenever there is new/updated information about the client's terminal.
      
      Exposed as JS method: console.term_updated().
      ff449a11
    • Rob Swindell's avatar
      Fix sendmail bug introduced in 6851910b. · 3aacaa64
      Rob Swindell authored
      The "MAIL FROM" command argument must always be enclosed in angle-brackets. Some mail servers (e.g. gmail, aol) would reject messages not delivered in this manner, e.g.:
      mx-aol.mail.gm0.yahoodns.net replied with:
      "501 Syntax error in parameters or arguments tnmpmscs"
      instead of the expected reply:
      "250 ..."
      gmail-smtp-in.l.google.com replied with:
      "555 5.5.2 Syntax error. o6si11103060plk.317 - gsmtp"
      instead of the expected reply:
      "250 ..."
      3aacaa64
  8. 06 Nov, 2020 2 commits
  9. 05 Nov, 2020 9 commits
  10. 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
  11. 02 Nov, 2020 2 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