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. 08 Feb, 2019 1 commit
    • rswindell's avatar
      Add/use new function findstr_list() which opens and returns a string list · 32051b32
      rswindell authored
      suitable for passing to findstr_in_list().
      SBBSecho peformance improvement: don't open/read the twitlist.cfg file for
      *each* imported message: just read it once during initialization (using the new
      findstr_list() function of course).
      Reversed course on the findstr()/trashcan() matching logic: significant leading
      white-space was not backwards compatible (and was the cause of recent lost
      messages in DOVE-Net) - so I decided to go a different route and support
      C-style character escape sequences (e.g. \r, \n, \t, \x##, etc.) in findstr
      comparison strings, so the new way to represent a leading space character
      in a filter file (e.g. twitlist.cfg, name.can) would be: "\ ". So to match (e.g.
      filter/disallow) all strings with a leading space: "\ *". "\x20 *" would also
      work (0x20 is ASCII for "space").
      Now, again, leading white-space in filter files (e.g. text/*.can, twitlist.cfg)
      is ignored. <sigh>
      32051b32
  2. 03 Feb, 2019 1 commit
  3. 20 Jan, 2019 1 commit
    • rswindell's avatar
      The "stdio" File objects (stdin, stdout, stderr) did not work on Windows, · 7acadb70
      rswindell authored
      because the stdout FILE* is a different address in jsexec than it is in sbbs.dll
      (where the actual File I/O operations occurred). Refactored by passing the
      stdio file descriptor (and open mode) to js_CreateFileObject rather than the
      FILE* and using fdopen() to get a FILE* associated with the descriptor.
      stdout.write() now works, for example.
      7acadb70
  4. 07 Jan, 2019 1 commit
    • sbbs's avatar
      Fix various JSDOCS_BUILD with gcc warnings. · 0d7eb6ee
      sbbs authored
      warning: ISO C++ forbids converting a string constant to 'char*'
      and comparision between signed/unsigned int.
      This does *not* address the reported build issue:
      In function `_start':
      (.text+0x20): undefined reference to `main'
      0d7eb6ee
  5. 30 Dec, 2018 1 commit
  6. 04 Nov, 2018 1 commit
  7. 03 Nov, 2018 1 commit
    • deuce's avatar
      Fix new error with Clang 6.x: · cb1d932f
      deuce authored
      exec.cpp:438:8: error: case value evaluates to 2684500526, which cannot be narrowed to type 'int32_t' (aka 'int')
            [-Wc++11-narrowing]
                      case 0xA0023A2E:
                           ^
      
      The switch cases were unsigned, but the passed value was an int32.
      cb1d932f
  8. 30 Oct, 2018 1 commit
    • rswindell's avatar
      External programs that are "binary" in nature (e.g. file transfer protocols) · be7d06bc
      rswindell authored
      now have their output translated to PETSCII equivalents for PETSCII terminals
      (but input is not yet translated).
      .seq files are now sent untranslated via printfile() and putmsg() to PETSCII
      terminals (using the new P_PETSCII putmsg mode flag).
      .seq files (and P_PETSCII mode text printed via putmsg) is now converted
      (poorly) from PETSCII to CP437 - this is still a work-in-progress.
      Remove the remants of WIP and HTMLterm support from putmsg() and printfile().
      be7d06bc
  9. 26 Oct, 2018 1 commit
  10. 25 Oct, 2018 2 commits
    • rswindell's avatar
      Introduce a new printfile/tail/menu mode flag: P_NOERROR, which if used, · 1fee774d
      rswindell authored
      means no error message will be displayed/logged if the referenced file does
      not exist.
      1fee774d
    • rswindell's avatar
      Update display/menu file selection logic based current terminal capabilities. · 68e52292
      rswindell authored
      Newly supported files: text/menu/*.msg (higher priority than .asc when the
      terminal supports IBM extened ASCII, aka CP437). These are the same format
      as .asc files (and supported more readily by PabloDraw).
      Newly supported files: text/menu/*.seq - native PETSCII files for PETSCII
      terminals only. Support in the underlying putmsg() function is still
      pending.
      Also, the text/*.msg files now supports alternative file formats for
      RIP/ANSI/PETSCII, if the files exist.
      WIP menu support removal.
      The new menu/display file selection priority will be detailed on
      wiki.synchro.net, but rest assured, it's backwards compatible with
      the previous/old priority with the exception of the removal of WIP support
      and HTML support.
      68e52292
  11. 22 Oct, 2018 1 commit
    • rswindell's avatar
      The big PETSCII commit: · 31303187
      rswindell authored
      So Omegix recently asked in the Synchronet Discussion group whether or not
      a PETSCII (Commodore) terminal could be used to access his Synchronet BBS.
      Now, the answer is "Yes". :-)
      The major issues addressed:
      
      - detecting a PETSCII terminal, solved by assigning specific (configurable):
        TCP ports to be used for incoming PETSCII connections, by default:
        port 64 is for 40-column PETSCII and port 128 is for 80-column PETSCII,
        but if the terminal sends a Telnet Window Size reply (e.g. SyncTERM), then
        either size terminal should fine on either port.
        The port numbers are configurable in the [BBS] section of your sbbs.ini
        file using the new keys: PET40Port (default value: 64) and PET80Port
        (default value: 128). Having these keys set doesn't make make the terminal
        server listen on that additional port - you'll need to add more
        IP:port combinations to one of Interfaces values, example:
          TelnetInterface=71.95.196.34,71.95.196.34:64,71.95.196.34:128
        And you don't have to use Telnet for the PETSCII connections - you could use
        RLogin or SSH instead (or in addition).
      
      - support for terminal widths < 80 columns:
        This was achieved through a combination of text.dat changes (numerous),
        new Ctrl-A and @-codes and new optional terminal-width-specific menu files
        (e.g. text/menu/main.40col.asc)
        A side effect of these changes is actually better support for terminals
        *wider* than 80 columns as well!
      
      - support for terminals that don't expand tabs to spaces (e.g. PETSCII):
        The terminal server now handles tab expansion with a run-time settable
        tab-size (default size: 8)
      
      - conditional access based on PETSCII (or small) terminal use (or not):
        + New PETSCII ARS keyword (boolean)
        + New COLS and ROWS ARS keywords (for terminal width and height requirements)
        + New TERM (string) ARS keyword
      
      New @-codes:
        - WORDWRAP, when placed at the top of a file, enables auto-wordwrap for
                    lines longer than the terminal width
        - CENTER, the text following before an end of line will be displayed centered
                  on the terminal (whatever the width, in columns)
        - CLEAR, like CLS, except it ignores (doesn't display) a CRLF that follows
        - COLS, current number of terminal columns (width)
        - ROWS, current number of terminal rows (height)
        - TERM, the auto-detected or reported terminal type (e.g. ANSI, TTY, etc.)
        - SYSONLY, toggles "echo" (display) off/back-on for non-sysops
                  similar to the Ctrl-A( and ) codes, but more convenient to use
                  (and PabloDraw won't strip the @-code from the file like it does
                   with Ctrl-A codes it doesn't support)
      
      New Ctrl-A codes:
        - \ conditional new-line/continuation when the terminal width is < 80 cols
            prints the new text.dat string LongLineContinuationPrefix
      
      yesno() will now return true if passed a blank string.
      noyes() will now return false if passed a blank string.
      getstr()'s input length limiting based on terminal width is more broadly
                 applied now (not just when using the K_LINE mode flag).
      
      New JS bbs object method: menu_exists(<base_filename>) returns Boolean
      New JS console object property: tabstop (Number)
      New JS console object methods: getbyte() and putbyte() to recv/send raw byte
          value with (very little) interpretation/intervention by the terminal server
      New JS console object method: creturn() - performs a carriage return
          (or equivalent)
      New JS (and C) printfile() mode flag: P_TRUNCATE, causes long lines to be
          truncated, rather than displaying causing a line-wrap.
      
      New text.dat strings:
        - NoAccessTerminal (for ARS check failures)
        - LongLineContinuationPrefix (for breaking long lines for 40col terminals)
        - Scanning (replaces a previously hard-coded "Scanning" string)
        - Done (replaces a previusly hard-coded "Done")
        - Scanned  (when finished scannning, clears the progress bar)
      31303187
  12. 09 Oct, 2018 2 commits
  13. 06 Sep, 2018 1 commit
  14. 03 Aug, 2018 1 commit
  15. 29 Jul, 2018 1 commit
  16. 25 Jul, 2018 3 commits
  17. 24 Jul, 2018 1 commit
    • rswindell's avatar
      Singificantlly improve message scan pointer initialization (e.g. for new · 264cb38c
      rswindell authored
      users) and adjusting scan ptrs by date or set to "Last msg" while online:
      - speed (on my system, reduced from 12 to < 2 seconds)
        This involved 2 enhancements: check msgbase index file timestamp (fast)
        before opening any files. When opening the msgbase, just open the index
        file (no other msgbase files) - required new smblib function: smb_open_index.
      - fixed off-by-one when setting by date (when setting the new-scan ptr to
        Jan-1-2018, you want that first message posted on/after Jan-1-2018 to be
        found as "new", not the first message posted *after* that date.
      - re-added the fixmsgptrs() call in putmsgptrs(), inadvertently removed
        in the .ixb -> .ini ptr storage update in rev 1.192 of userdat.c.
      264cb38c
  18. 10 Jun, 2018 1 commit
    • rswindell's avatar
      JS bbs object changes: · a32a52cb
      rswindell authored
      - finduser() method no longer prints "Unknown user" upon failure (the calling
        script can do this if/when it wants).
      - read_mail() method now accepts an optional 3rd argumnet (loadmail_mode)
        which may be used to load *only* un-read mail (for example), see LM_* in
        sbbsdefs.js
      
      Pass the lm_mode as a 4th argument to any readmail mod (if one is installed) -
      this correlates with the LM_* mode flag values (0 is normal/usual).
      
      File attachments can also be in a file/####.out directory (e.g. outbound
      Internet email attachments), so try deleting from there too when deleting
      mail with attachments.
      a32a52cb
  19. 06 Apr, 2018 2 commits
  20. 04 Apr, 2018 1 commit
    • rswindell's avatar
      sbbs_t::badlogin() now accepts 3 more (optional) arguments which allow us · 361fd9ff
      rswindell authored
      to use this function in bbs_thread() for SSH failed login attempts and thus
      enable the perm-IP-filtering (LoginAttemptFilterThreshold) functionality.
      Right now, it's only a "bad login" if the "Getting channel type" doesn't
      return "session", but we could (and likely will) use it for more SSH login
      failure modes which indicate a likely hack-attempt.
      361fd9ff
  21. 25 Mar, 2018 1 commit
    • rswindell's avatar
      Attempt to address multiple redundant SSH related error/log messages from · 2f8c56f7
      rswindell authored
      the output_thread which may occur after an SSH-related error in the input
      thread, e.g.:
      Sun Mar 25 2018 01:45 pm bbs.synchro.net
      Node 6 SSH ERROR 'Bad argument, parameter 2' (-2) setting channel
      
      Sun Mar 25 2018 01:45 pm bbs.synchro.net
      Node 6 SSH ERROR 'Bad argument, parameter 2' (-2) setting channel
      
      Sun Mar 25 2018 01:45 pm bbs.synchro.net
      Node 6 SSH ERROR 'Bad argument, parameter 2' (-2) setting channel
      
      Sun Mar 25 2018 01:45 pm bbs.synchro.net
      Node 6 SSH ERROR 'Bad argument, parameter 2' (-2) setting channel
      
      Sun Mar 25 2018 01:45 pm bbs.synchro.net
      Node 6 SSH ERROR 'Bad argument, parameter 2' (-2) setting channel
      
      Sun Mar 25 2018 01:45 pm bbs.synchro.net
      Node 6 SSH ERROR 'Bad argument, parameter 2' (-2) setting channel
      
      ... by introducing a new sbbs_t member variable: terminate_output_thread
      which is only set to true when the input_thread is terminating.
      
      If there is any possibility that the input_thread could startup and get
      an SSH error before the output_thread even starts, then we will want to
      move the terminate_output_thread=false initialization to the sbbs_t
      constructor.
      2f8c56f7
  22. 12 Mar, 2018 1 commit
  23. 11 Mar, 2018 1 commit
  24. 10 Mar, 2018 1 commit
  25. 25 Feb, 2018 1 commit
  26. 23 Feb, 2018 2 commits
    • deuce's avatar
      Add certificate handling via the CryptCert class. · 01904b00
      deuce authored
      Also add add_public_key() and get_public_key() methods to CryptKeyset.
      Not tested yet, but this should be everything we need to finish up
      LetSyncrypt.
      01904b00
    • deuce's avatar
      Add CryptKeyset class. · bfcdc66a
      deuce authored
      This class allows saving and loading private keys.  It doesn't currently
      allow saving or loading *public* keys, since they require certificate support
      which we don't yet have in our JavaScript Object Model.
      
      I'll fix the JSDocs build in a minute.
      bfcdc66a
  27. 20 Feb, 2018 2 commits
  28. 18 Feb, 2018 1 commit
  29. 05 Feb, 2018 1 commit
    • rswindell's avatar
      sbbs_t::outcom() now retries (1000 times with 80ms delays) if the transmit · 64f260dd
      rswindell authored
      buffer if full. So now everything that uses outcom (including JS
      console.write) now includes a retry. The lower-level non-retry outcom()
      was renamed _outcom() (and is used by outcom).
      Added new Ctrl-A code: Ctrl-AF - enables the blink attribute, but only
      if/when a blink font was activated in the terminal. Lower-case 'f' refers
      to the normal-intensity blink-font. Uppercase 'F' refers to the high
      intensity blink-font. This allows you to mix fonts in text/menu files
      and not have annoying blinking text in non-supporting terminals. This is
      the first Ctrl-A code to be case-sensitive.
      64f260dd
  30. 03 Feb, 2018 1 commit
  31. 26 Jan, 2018 1 commit
  32. 12 Jan, 2018 2 commits
    • rswindell's avatar
      New @-codes (for currently viewed file): · 464f80c5
      rswindell authored
      - FILE_AREA
      - FILE_AREA_DESC
      - FILE_LIB
      - FILE_LIB_DESC
      - FILE_LIB_NUM
      - FILE_DIR
      - FILE_DIR_DESC
      - FILE_DIR_CODE
      - FILE_DIR_NUM
      - FILE_NAME
      - FILE_DESC
      - FILE_UPLOADER
      - FILE_SIZE
      - FILE_CREDITS
      - FILE_TIME
      - FILE_TIME_ULED
      - FILE_TIME_DLED
      - FILE_DATE
      - FILE_DATE_ULED
      - FILE_DAT_DLED
      - FILE_TIMES_DLED
      Fixed MSG_ATTR @-code (missing SPAM attribute)
      New text.dat line: FileHdrDescSeparator, displayed between file detail display
      (name, date, uploader, etc.) and extended description, if there is one. This
      is used to execute showfileavatar.js.
      New JS 'bbs' object properties:
      - file_name
      - file_description
      - file_dir_number
      - file_attr
      - file_date
      - file_credits
      - file_uploader
      - file_update_date
      - file_download_date
      - file_download_count
      Inspiried by Lon Seidman's now infamous (but likely common) Synchronet sysop
      blunder (removing a file rather than downloading it while demonstrating his BBS
      on his youtube channel:
      - New text.dat line: RemoveFileQ <- using this rather than the vague:
        AreYouSureQ, when prompting to remove a file
      - The sysop command to remove files from the batch file flagging prompt has
        been changed from 'D' (delete) to 'R' (remove).
      - The 'D' command from the batch file flagging prompt may now be used for
        immediate Download of any flagged file(s).
      - When flagging files with '*', treat the same as '*.*'
      464f80c5
    • rswindell's avatar
      sbbs_t::sendfile() (used by JS bbs.send_file() and Baja FILE_SEND) would not · a4c36610
      rswindell authored
      check the protocol.log (e.g. DSZ.LOG) for successful transfer even when the
      protocol was so-configured in SCFG. Fixed.
      Additionally, while sendfile() would return a proper boolean result based on
      the errorlevel returned by the protocol driver process, the log and console
      output would report success and statistics adjusted as though the xfer
      was successful, regardless.
      a4c36610