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. 24 Nov, 2017 3 commits
  2. 16 Nov, 2017 1 commit
  3. 15 Nov, 2017 1 commit
    • rswindell's avatar
      Daily maintenance log output now goes to the event log (or the terminal · b4f888d4
      rswindell authored
      server log) using the new magic sbbs_t::lputs().
      No more SSH errors if an SSH client's IP is blocked in ip.can (trying to send
      the block msg).
      New SSHConnectTimeout cfg value (in sbbs.ini [BBS]), defaults to 10 seconds.
      Previously, fails SSH connections could block the bbs_thread for 30 seconds
      (the Cryptlib default network connection timeout).
      Overhauled a lot of the SSH-related log output to make it less chatty and more
      meaningful.
      getmail() is now more flexibility with regards to filtering by attribute flags
      (not just SPAM).
      Allow SPAM header attribute to be toggled with sysop 'C' command.
      b4f888d4
  4. 13 Nov, 2017 1 commit
    • rswindell's avatar
      New feature: control of SPAM visibility when reading mail on the Terminal · d18bd3bd
      rswindell authored
      Server via the new 'V' command from the Reading Mail prompt allows you to
      toggle between all mail (including SPAM, the default), SPAM only, or HAM only.
      Also added a new '/' (search text) command from the reading mail prompts.
      Mail imported before the mailsrvr added support (recently) for the MSG_SPAM
      attribute flag will not be counted/filtered as SPAM.
      SBBSecho will have a commit (next) to support the new loadmail() usage, it
      will not compile until then.
      d18bd3bd
  5. 06 Nov, 2017 1 commit
  6. 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
  7. 14 Aug, 2017 1 commit
  8. 09 Aug, 2017 1 commit
    • rswindell's avatar
      Allow more JavaScript control over password prompting: · 2d34f275
      rswindell authored
      bbs.login() now accepts 2 additional optional arguments: user_pw and sys_pw
      if these passwords are supplied, they won't be prompted for by the underlying C
      functions. If the password_prompt argument (2nd arg) is not supplied, no prompt
      will be displayed, but a password must still be entered.
      The default behavior is the same as before.
      2d34f275
  9. 10 Dec, 2016 1 commit
  10. 06 Dec, 2016 1 commit
    • rswindell's avatar
      New Ctrl-A codes: · 5bf12c0d
      rswindell authored
      'J' - Clear to End-of-Screen, for ANSI users sends <ESC>[J, nothing otherwise
      '`' - Home Cursor, for ANSI users sends <ESC>[H, form feed otherwise
      5bf12c0d
  11. 05 Dec, 2016 1 commit
    • rswindell's avatar
      Introduce a Thread View Mode while reading messages. Use '*' to toggle. · 0034da77
      rswindell authored
      Any alpha-char command or entering a message number will exit thread view
      mode. If the entire thread fits on the screen, then the arrow keys can be used
      to move about the thread (up, down, left, and right). The old thread-ID keys
      ( and ) still work, but a little differently. And while in Thread View  Mode,
      ENTER  and - keys now move forward and backward by thread.
      
      I meant to do this a long time ago and really should have (all the underlying
      thread support was there). It really highlights all the network nodes that
      don't support REPLY-IDs. :-(
      0034da77
  12. 01 Dec, 2016 1 commit
    • rswindell's avatar
      Error messages logged with errormsg() now contain the name of the C/C++ · b4b6713e
      rswindell authored
      function where the error is being reported from. So the WHERE macro now
      contains the __FUNCTION__ "macro" and the various js*.c files that use the
      WHERE macro to report errors had to be updated too.
      Also, the 'access' argument is now being passed as a signed long rather than
      unsigned long. Status/return values are often passed in here (e.g. from smblib)
      and may be negative. This argument was being displayed with %ld but wasn't
      being passed in as a signed value, so on 64-bit long systems, negative numbers
      were just printed as large (4M+) numbers.
      Also, no need to call getfname() in errormsg() since this is embedded in the
      WHERE macro (since 2009).
      b4b6713e
  13. 27 Nov, 2016 1 commit
    • rswindell's avatar
      Added new sub-scan mode: SCAN_POLLS (used to scan sub-boards for posted polls) · b14e9904
      rswindell authored
      Introduced a better progress indicator (similar to poll results), using the
      backfill() method. 2 new attr.cfg fields allow the progress indicator colors to
      be configured separately from poll results (though they default to the same
      white on magenta). This new progress indicator is used when loading msg ptrs
      and scanning for votes. I will be using it while performing other searches
      (e.g. file libraries/dirs) as well.
      b14e9904
  14. 21 Nov, 2016 3 commits
    • rswindell's avatar
      Change MsgBase.get_user_votes() to MsgBase.how_user_voted(). · 0b984ab1
      rswindell authored
      New MsgBase header propeties:
      - total_votes (total number of votes this msg or poll has received)
      - tally[], an array of 16 numbers indicating the total votes for each poll answer
        in the case of a normal message, tally[0] is the same as upvotes and tally[1]
        is the same as downvotes.
      This should complete what echicken needs to display polls and voting results
      in his web UI.
      0b984ab1
    • rswindell's avatar
      Added new smbmsg_t element: user_voted, used to pass around the results of · bf7f5024
      rswindell authored
      smb_voted_already(), e.g. to @-codes in a custom msg header.
      New @-codes (e.g. for custom message headers):
      @MSG_VOTED@
      @MSG_UPVOTED@
      @MSG_DOWNVOTED@
      These all 3 act the same way: they display the PollAnswerChecked (checkmark)
      if the user voted on the currently displayed message/poll, if the user up-voted
      or if the user-downvoted. If the user did not vote, nothing is displayed.
      bf7f5024
    • rswindell's avatar
      MsgVotes line now contains 2 new %s specifiers to indicate whether the user · 41ed257a
      rswindell authored
      (reading the msg) submitted an up-vote or down-vote on the current msg.
      41ed257a
  15. 20 Nov, 2016 3 commits
    • rswindell's avatar
      VOTING.DAT Backwards-compatibility enhancement: · 8dd3b13e
      rswindell authored
      If a VOTING.DAT file is received which did not contain offset/location
      sections, the vote/polls/etc. wouldn't be imported. Now, when each QWK 'V'
      msg hdr block is imported, the corresponding section is removed from the
      VOTING.DAT and after all QWK importing, the VOTING.DAT is then parsed
      for remaining items/sections and if there are any, imported at that time (in
      order in the file, not in the old poll/vote/closure order).
      8dd3b13e
    • rswindell's avatar
      Solved the networked-voting "ordering problem". QWK/REP packets that contained · 3258eca3
      rswindell authored
      normal messages along with voting data (polls, ballots, etc.) would always be
      imported in this order: msgs, polls, ballots/votes, and then poll-closures.
      This could result in a confusing order of messages in the local msg base where
      there were messages in reply to a poll before the poll appears and other
      oddities. Anyway, this is now resolved by placing a msg "header block" for each
      vote-data item in the MESSAGES.DAT file. Since there is no body/text blocks,
      it should be ignored under normal circumstances, but these header blocks are
      only created if VOTING.DAT is enabled anyway.
      And now, the VOTING.DAT contains an extra line (empty .ini section) with the
      HEADERS.DAT offset associated with the chronology of the item. The format
      is still backwards compatible with the earlier builds that included VOTING.DAT
      support.
      
      Also, fixed the vote/poll/closure Message-IDs containing a msg number of 0
      (while not technically a problem, it wasn't the intention) with the use of the
      new function: get_new_msg_number().
      3258eca3
    • rswindell's avatar
      Automatic REPLY-ID fixup: · 396b931b
      rswindell authored
      If a message header has a thread_back value (it's a reply to another msg), but
      there is no Reply-ID header field, when converting QWK, look-up the
      original message-ID (to use for the relpy/vote Reply-ID value). If the original
      message doesn't have a message-ID, use the normal auto-generation scheme.
      This isn't normally necessary, but I posted a poll with a message-ID on
      DOVE-Net / Sysops and then voted on the poll, creating a vote with no Reply-ID
      which causes an SMB "writing" error (access=-105) on the QWKnet node BBSes
      (because the required header field is missing).
      396b931b
  16. 19 Nov, 2016 2 commits
  17. 18 Nov, 2016 1 commit
    • rswindell's avatar
      Introduced 2 new poll concepts: · 0ac4f937
      rswindell authored
      - Closures (polls can be closed for new voting by the pollster)
      - Results can have configurable visibility:
        a. Only to voters (and the pollster) - the default
        b. Everyone
        c. Everyone once the poll has closed
        d. Only the pollster
      
      Changes to smb_getmsgtxt():
      Main change: poll questions can now be quoted when replying to a posted poll
      (the results cannot be quoted).
      Also: there's now automatically a blank line inserted between comment header
      fields and poll answers or the msg body text.
      Also: upon any malloc failure, the function now returns NULL.
      New functions: smb_msg_is_from() and smb_addpollclosure().
      0ac4f937
  18. 16 Nov, 2016 1 commit
    • rswindell's avatar
      Created new console output method: sbbs_t::backfill(): · 1c630caf
      rswindell authored
      it displays a string of text and fills the background color up to the
      specified percentage fo the string length. I will be using it for displaying
      poll results, but it could possibly be used for progress displays and such.
      The colors used are configured via the "backfill" and "unfill" attributes in
      ctrl/attr.cfg.
      1c630caf
  19. 15 Nov, 2016 1 commit
  20. 13 Nov, 2016 2 commits
    • rswindell's avatar
      Replaced text.dat line MsgVoteNotice with 2 new strings: MsgUpVoteNotice and · 7c17c5f2
      rswindell authored
      MsgDownVoteNotice.
      Also moved the R_Voting string, so the last few voting related strings in the
      text.dat have been re-arranged (sorry about the thrash) - if you don't have
      these new 8 lines, the default strings are used and you're fine.
      When listing messages from the "Reading" prompt, the vote status and Replied
      attribute flag are now indicated: 'V' = voted up (more than down), 'v' = voted
      down (more than up), and 'R' = replied-to. Unread/new messages still show a '*'
      in the A (for attributes) column.
      Voting via JS still does not automatically send a notice to the poster, that
      still needs to be worked out.
      7c17c5f2
    • rswindell's avatar
      Created a wrapper around smb_addvote() called votemsg() which (optionally) · b18764d1
      rswindell authored
      sends a short message (telegram) to the poster of the vote. It also confirms
      this is not a duplicate vote.
      b18764d1
  21. 10 Nov, 2016 1 commit
    • rswindell's avatar
      Message voting via QWKnet is now fully implemented: · 74902cee
      rswindell authored
      - Users can be restricted from voting with the 'V' restriction
      - Sub-boards can be disalbled for voting in SCFG
      - VOTING.DAT can be include/excluded from QWK packets via user cfg
        (when a VOTING.DAT is received in a REP, the user cfg flag is auto-set)
      - Adds several new text.dat lines (if not present in yours, uses the default)
      
      What's not yet implemented:
      - Notification of votes on your posted messages
      - Method to view/audit all votes
      - Polling
      - Any special handling to auto-exclude votes from msg-related JavaScripts
      74902cee
  22. 27 May, 2016 1 commit
    • rswindell's avatar
      Update the temp ban (loginBanned): · e0e5279f
      rswindell authored
      - Never ban the server's own address
      - Log the login attempt and last name attempted
      - Use a compressed version of the HH:MM:SS "time remaining" portion of the log
        message
      e0e5279f
  23. 21 Jan, 2016 1 commit
  24. 10 Jan, 2016 1 commit
  25. 06 Dec, 2015 1 commit
    • rswindell's avatar
      QWK import/export now correctly handles the unexpected case of RECIPIENTNETTYPE · 3f587dd7
      rswindell authored
      and RECIPIENTNETADDR fields in messages posted to sub-boards. Apparently
      GoldEd+ does this and it triggered a chain of bugs (mostly cosmetic), but bugs
      that bugged me, so I'm squashing them. Now messages being export to QWK will
      not include the RECIPIENTNETTYPE/ADDR information unless it's netmail.
      Ditto for importing. Also, the net_type is more accurately determined (i.e. if
      there's no '@' in the address, as there not be any expected for QWK and Fido
      net addresses).
      3f587dd7
  26. 04 Dec, 2015 1 commit
  27. 03 Dec, 2015 1 commit
    • rswindell's avatar
      Bug-fix/enhancement: Allow QWKnet netmail to be sent using the JavaScript · d2892791
      rswindell authored
      MsgBase.save_msg() method. The bug was that it was forcing the idx.to value to
      0 which would only work (in theory) for mail going to a QWKnet hub.
      Now, save_msg() will check the 'to_net_addr' property of the header object
      (or recipient objects) and actually verify that it/they are routeable QWKnet
      address(es) and throw an exception if not.
      If the first hop is a QWKnet node, sets the to_ext (and thus, idx.to value) to
      the account number of the node. This also looks up full-routes via the
      route.dat and replaces the to_net_addr value with the full route if necessary.
      I guess nobody (including me) tried sending QWKnet netmail via JS before.
      d2892791
  28. 26 Nov, 2015 2 commits
    • 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
    • rswindell's avatar
      Don't add .sig file to messages posted or emailed anonymously (duh!). · f78ff5f9
      rswindell authored
      writemsg() now handles the anonymous name in the drop files (using WM_ANON
      for the first time?).
      A little mixed-case NETMAIL.MSG paranoia (for case-sensitive file systems).
      More use of SAFEPRINTF().
      More use of removecase().
      More attribute flags represented (with a single character) in the 'A' column
      of mail and sub-board message listings.
      f78ff5f9
  29. 25 Nov, 2015 2 commits
  30. 14 Nov, 2015 1 commit