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. 19 Feb, 2021 1 commit
  2. 21 Dec, 2020 1 commit
    • Rob Swindell's avatar
      Fix next-forced-exclusive event time calculation · d6a2af22
      Rob Swindell authored
      Jump the time forward (in 24-hour chunks) to find the next date/time the event will run rather than just adding 24-hours and assuming it's an event that runs every day (of the week or month) at a specific time.
      
      Also, expose the next-run-date/time for an event as a new `next_run` property for `xtrn_area.event[]` (in `time_t` format) for easier debugging of these kinds of issues.
      Also expose the error log level as a new property: `error_level` while we're here.
      d6a2af22
  3. 11 Nov, 2020 1 commit
  4. 19 Sep, 2020 1 commit
  5. 16 Aug, 2020 1 commit
  6. 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. synchro.net 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?
      5899a303
  7. 14 May, 2020 2 commits
  8. 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
  9. 21 Apr, 2020 1 commit
    • rswindell's avatar
      3 new configurable system loadable modules: · df3de69c
      rswindell authored
      - nodelist (default: "nodelist")
      - who's online (default: "nodelist -active")
      - private message (default: "privatemsg")
      
      This allows the nodelist and private message modules to be "installed" without
      over-riding global hot key events (SCFG->External Programs->Global Hot Key
      Events), allows the Baja functions NODELIST_ALL, NODELIST_USERS, and
      PRIVATE_MESSAGE and JS bbs.list_nodes(), bbs.whos_online(), and
      bbs.private_message() methods to use external modules (JS or Baja)
      automatically.
      
      The old C++ logic remains for these features if the module's are cleared (set
      to a blank string) in SCFG, but at some point, that code will likely be removed.
      df3de69c
  10. 16 Apr, 2020 1 commit
    • rswindell's avatar
      The auto-message module is now configurable (in SCFG->System->Loadable Modules) · d8e4d105
      rswindell authored
      defaults to "automsg" (e.g. automsg.js). So now shells that use the Baja
      auto_message function (or call JS bbs.auto_msg()) will execute the module
      configured here automatically.
      Deleted the old-crufty sbbs_t::automsg() implementation. We have the work-alike
      auto.js, but really it's time to totally overhaul that sucker into something
      modernish (e.g. allow *editing* the message you wrote <gasp>).
      d8e4d105
  11. 12 Apr, 2020 1 commit
  12. 25 Mar, 2020 1 commit
  13. 01 Mar, 2020 1 commit
    • rswindell's avatar
      Added support for a "list messages module" which is an optional module (Baja or · 56059107
      rswindell authored
      JS) which will be executed when a users uses the the (L)ist msgs command from
      the "Reading" sub or "Reading E-mail" prompt.
      The arguments passed to the module are: <sub-code> [which]  [usernum]  [lm_mode]
      The additional optional arguments are the same values as would be passed to a
      readmail_mod, if one were to be used instead.
      56059107
  14. 02 Sep, 2019 1 commit
    • rswindell's avatar
      Storing the node file (node.dab) descriptor in the scfg_t was a "bad idea" {tm} · e97522ee
      rswindell authored
      The scfg_t instances are often shared between threads and we can't really share
      file descriptors between threads, so we ended up with file descriptor leaks and
      race conditions.
      
      Instead, define/allocate/free a new js_system_private_t where the scfg_t* and
      the nodefile (descriptor) are kept - per "system" instance.
      e97522ee
  15. 31 Aug, 2019 1 commit
    • rswindell's avatar
      Update the C getnodedat/putnodedat API to not require that the node file · 4c8482c9
      rswindell authored
      (ctrl/node.dab) is constantly closed and re-opened for every non-locking read.
      This is really slow across network file systems and unnecessary, so use a
      similar optimization as the C++ sbbs_t class where the file can (and normally
      is) left open across multiple consecutive reads.
      Create/use opennodedat() function.
      Uses the new CLOSE_OPEN_FILE() macro from xpdev/filewrap.h.
      4c8482c9
  16. 01 Aug, 2019 1 commit
  17. 26 Jul, 2019 1 commit
  18. 09 May, 2019 1 commit
    • rswindell's avatar
      Support bright background colors: · 48e7520e
      rswindell authored
      - for PETSCII, this is automatic and you don't lose blink, but you do lose
        colored foreground when enabling a bright background ("reverse video")
      - for ANSI, this mode is typically referred to as "iCE colors" and disables
        blinking-text support
      - Ctrl-AE (^AE) is the new attribute code to enable bright-background
        (will have no effect on ANSI terminals that are not iCE color enabled)
        "E" is now valid in the ctrl/attr.cfg file and string values for JS
        console.attributes assignments, as well
      - Ctrl-AI (^AI) - blink - now does nothing for ANSI/ICE color terminals
        (blinking is not supported in combination with bright-background)
      - Using a new/non-standard CGA attribute bit-flag to indicate the selection of
        bright-background colors (BG_BRIGHT, bit 10), separate from BLINK.
        This change required all/most char/uchar attribute representations to be
        converted to int/uint.
      
      New text.dat strings:
      - PetTerminalDetected (renamed from PetTermDetected)
      - PetTerminalQ
      - TerminalAutoDetect
      - TerminalColumns
      - TerminalRows
      - TerminalMonochrome
      - TerminalColor
      - TerminalIceColor
      - IceColorTerminalQ
      This also moved the MsgCarbonCopyList definition to the end of the file
      for now.
      
      PETSCII reverse-video attribute fix:
      When a CR is sent to the terminal, the reverse-video attibute is auto-disabled
      so update our "current attribute" (curatr) value to match the remote.
      
      Support new printfile/putmsg mode flag: P_WRAP to force an ungraceful
      line-wrap (splitting) to the specified column width. If no column width is
      specified (0), then this mode will force an ungraceful wrap before the last
      terminal column where some terminals *may* auto-wrap.
      
      JS console.printfile() and printtail() methods now support an optional
      "orig_columns" argument, similar to console.putmsg(). Must specify P_WORDWRAP
      or P_WRAP for this argument to have any effect.
      
      Much improved terminal-type selection/configuration in the user defaults
      menu and abort (^C) at any of the yes/no prompts is now detected/handled much
      better (to answers to the prompted questions are not saved to the user
      settings).
      48e7520e
  19. 29 Apr, 2019 1 commit
    • rswindell's avatar
      Configurable "Soft-CR" (0x8D) character handling on a per message-editor basis: · 0541b5f2
      rswindell authored
      For QuickBBS editors, the default will be the same as previous behavior: to
      convert Soft-CRs to Hard-CRs (CRLFs).
      For non-QuickBBS editors, the default will be to treat Soft-CRs as any other
      valid printable character in the text ("Retain").
      A 3rd option is available to strip Soft-CRs completely from the generated
      message text.
      0541b5f2
  20. 16 Apr, 2019 1 commit
    • rswindell's avatar
      Add a new quotewrap_cols setting for external editors, default is 0 (current · 127e0b6e
      rswindell authored
      terminal width) - only used when the QUOTEWRAP option is set. Common values:
      0 - current behavior, wrap the quote file to the current terminal width
      80 - wrap 80 columns specifically (actually, 79)
      9999 - unwrap to long lines (one line per paragraph)
      
      Actually, previously it was wrapping to current terminal width minus 4 when
      QUOTEWRAP was enabled. Now, make that current terminal width minus 1
      (when quotewrap_cols is set to 0).
      127e0b6e
  21. 21 Feb, 2019 1 commit
  22. 03 Mar, 2018 1 commit
    • deuce's avatar
      Store the certificate context in scfg_t. This allows static services to be · 81de76be
      deuce authored
      TLS servers without all of them needing to separately load the ssl certificate.
      
      It's destroyed in free_scfg(), and the config *must* be prepped both to
      destroy the certificate and to load it.  This is because the "no cert"
      value is -1, not 0, so the prepped flag is all we really have to indicate
      if it's zero because it's a valid certificate or zero because no certificate
      has been loaded.
      81de76be
  23. 07 Jan, 2018 1 commit
  24. 29 Dec, 2017 1 commit
  25. 23 Oct, 2017 1 commit
    • rswindell's avatar
      * Implemented support for new LIB_DIRS option: · 11e529d4
      rswindell authored
        Automatically detect child sub-directories and make them available as virtual
        directories for users to download from - only useful via FTP currently.
      * Implemented Sorting options for Message Groups and File Libraries:
        Sub-boards within groups and directories within library can now be
        automatically sorted based on the sysop's chosen sort field (long name, short
        name, or internal code)
        - Required that sub-boards are now stored/saved in msgs.cnf based on groups
        - Required QWKnet hub sub-board reference dynamic renumbering
      * Implemented "Template" toggle option for sub-boards and file directories:
        A sub-board or directory marked as "template" will be used for newly created
        (or imported) subs/dirs for that group/lib. Clone Options via SCFG will now
        use the "template" item as the source of the cloned settings, if available.
      11e529d4
  26. 23 Nov, 2016 1 commit
    • rswindell's avatar
      New QWKnet hub configuration settings (with defaults): · 40b2188a
      rswindell authored
      - Include Kludge Lines     (Yes)
      - Include VOTING.DAT File   (Yes)
      - Include HEADERS.DAT File   (Yes)
      - Extended (QWKE) Packets    (No)
      - Exported Ctrl-A Codes    (Strip)
      
      SBBS/QWKnet nodes now have more control over the REP packet files created
      by their systems. If the "uplink" (hub) is complaining about receiving
      unsupported files (e.g. VOTING.DAT) or kluge lines (e.g. @TZ), just turn them
      off.
      
      Also, Ctrl-A codes may now be retained in QWKnetmail. And the @REPLYTO kludge
      line enabled for the first time (!).
      40b2188a
  27. 20 Apr, 2016 1 commit
  28. 27 Nov, 2015 1 commit
  29. 26 Nov, 2015 1 commit
    • rswindell's avatar
      New long-sought feature: · 65a68990
      rswindell authored
      Sysop can set the number of days-worth of new messages that new users will
      see in their first new-message scan (the default is 0, no new messages).
      This does lengthen the amount of time that the first "Loading message pointers"
      is displayed (it has to go and open all the message bases), but at least new
      users are no longer bombarded with thousands of very old messages when they
      answer "Yes" to the "Scan for New Messages" prompt. This setting is in
      SCFG->System->New User Values->Days of New Messages. Set it to some really
      high number (maximum of 9999) if you want the old behavior.
      65a68990
  30. 27 Apr, 2015 1 commit
    • rswindell's avatar
      Enhancement at the request of Nightfox: · d57c3830
      rswindell authored
      Optionally, external modules may be executed in place of "built-in" operations
      for:
      - reading mail (email or netmail)
      - scanning posts (searching/scanning/reading a single sub-board)
      - scanning sub-boards (all, one, or a group)
      
      Each of these may be configured (in SCFG->System->Loadable Modules)
      with command-line options for a total length of up to 63 characters.
      
      Note to module programmers: each module here will be passed additional
      command-line arguments to indicate how or why the user operation was invoked.
      
      For the Reading Mail module, the 'which' value (in decimal) and the user-number
      is passed (in decimal). Usually the user-number will be the current user logged
      in, but not always (e.g. if the user is a sysop and reading other user's mail).
      The 'which' values (defined in load/sbbsdefs.js) of MAIL_YOUR, MAIL_SENT,
      and MAIL_ALL must be handled (MAIL_ANY won't be used).
      
      For the Scan Posts module, the sub-board number and scan mode (both in decimal)
      and the 'find' string (text being searched for) are passed as arguments
      (in that order). The scan mode values (defined in sbbsdefs.js) are the same as
      those supported by bbs.scan_posts(). All of the values should be supported
      and they can be combined (e.g. SCAN_CONST|SCAN_NEW
      and SCAN_NEW|SCAN_TOYOU). The 'find' string is only used if the SCAN_FIND mode
      bit is set. It is the responsibilty of the module (if configured) to enforce
      sub-board read access restrictions.
      
      For the Scan Subs module, the first argument is 1 if "all subs" are being
      scanned, 0 otherwise (normally the user is prompted for the breadth of the
      scan in this case, but that's up to the module author), and the scan 'mode' is
      passed in decimal, in that order. If the SCAN_FIND mode flag is passed in, this
      module should prompt the user for the text string to search for. If this module
      is not configured, the Scan Posts module will be executed for each sub-board
      scanned.
      
      Recursion protection was added, so it is actually possible for the Read Mail
      module, for example, to call bbs.read_mail() and it'll work, but why would you?
      
      If any of these user operations are initiated during logon, at the request of
      Baja or JavaScript module, or whatever, and if the module is actually
      configured (and not already executing to handle the operation), the module
      will be executed in-place-of the built-in functionality. Feedback welcome,
      d57c3830
  31. 11 Nov, 2009 2 commits
  32. 20 Mar, 2009 1 commit
  33. 07 Mar, 2009 1 commit
  34. 21 Feb, 2009 1 commit
  35. 16 Feb, 2009 1 commit
  36. 14 Feb, 2008 1 commit
  37. 10 Jul, 2007 1 commit