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. 10 Jun, 2021 1 commit
    • Rob Swindell's avatar
      Standardize on "metadata" as the description of a file's "tail" dfield · 3549be9f
      Rob Swindell authored
      It's anticipated that this will be used for JS-populated file metadata in JSON format in the future (and not just "archive contents" in .ini format).
      
      Also, fix the double-free issue that was occurring when moving files with extended file descriptions (sbbs_t::movefile()). This was actually the primary problem I was fixing here, but noticed the metadata issue: metadata would not have been moved along with the other file info between bases.
      3549be9f
  2. 02 May, 2021 1 commit
    • Rob Swindell's avatar
      Store contents (list) of archive files in filebase (in the "msg tail") · 5374a113
      Rob Swindell authored
      This will allow fast/easy display of archive contents without actually reading the archive files.
      
      Introduces some new functions:
      - list_archive_contents()
      - smb_adddfile_withlist()
      
      A new SMB convenience variable ("tail", aliased as "content" for a file).
      A new file detail level ("file_detail_content", exposed in JS as FileBase.DETAIL.CONTENTS) which adds a "content" array property to file metadata objects for JS FileBase.get().
      
      Files already added to the new filebases won't have this archive content automatically - I'm looking into that now (likely a new or updated JS script to run).
      5374a113
  3. 24 Apr, 2021 1 commit
  4. 22 Apr, 2021 1 commit
  5. 04 Apr, 2021 1 commit
    • Rob Swindell's avatar
      A poll() failure with EINTR does not mean a socket is closed. · fcf58640
      Rob Swindell authored
      This won't impact Synchronet as it has a separate signal handling
      thread, but we still need to behave properly for processes that
      don't.  I'm also saying that ENOMEM does not indicate a disconnection,
      though it may be better to pretend it was disconnected...
      fcf58640
  6. 21 Jan, 2021 1 commit
    • Rob Swindell's avatar
      Support single-part MIME-encoded messages in SMBLIB · c90ba307
      Rob Swindell authored
      This involved the removal of the content-transfer-decoding feature of the SMTP mail server since we need single-part MIME-attached file contents to be stored in their original encoded form (e.g. base64-encoded) and not in binary, for the message body text (where NULs aren't allowed, CR/LF is appended, etc).
      
      I accidentally made this change to smbtxt.c in the new_file_base branch and then copied over here, so there's some unrelated innocuous changes (comment header, removal of SMBCALL) that hopefully won't cause a merge conflict later.
      
      I don't actually receive single-part MIME attached files, so depending on others (e.g. Nelgin and Dream Master) to test for me.
      c90ba307
  7. 25 Dec, 2020 1 commit
    • Rob Swindell's avatar
      Add/use new FTN "BBSID" control paragraph (kludge line) · f257f2ff
      Rob Swindell authored
      Advertise the system's QWK-ID (a.k.a. BBS ID) in exported echomail messages. This will allow correlation of avatars that were imported via SYNCDATA carried via QWKnet (e.g. DOVE-Net) with messages imported from those same BBSes via FTN.
      
      The alternative was to have SYNCDATA Avatar messages include all the AKAs of each BBS (in the body text), but that was looking like a rather complicated solution. This approach (the BBSID kludge) seems a much simpler solution.
      
      I still need to implement the JS side of this solution however (for avatar lookups using the FTN BBSID), but this was the first important step.
      f257f2ff
  8. 26 Sep, 2020 1 commit
    • Rob Swindell's avatar
      Add smb_msg_type() and smb_msg_count() for index-based msg counting. · a3e430e0
      Rob Swindell authored
      In support of message bases with vote-messages and poll-closures:
      
      smb_msg_type() returns an enum smb_msg_type inferred from the combination
      of attribute flags specified (should match msghdr_t.type).
      
      smb_msg_count() calculates the number of message index records of the
      specified type(s) (a bit-field) by reading the message base index file. This
      value should only used for info/display purposes, so no locking is performed
      to return the result as fast as possible.
      
      This allows an accurate number of "posts" (posted *messages*) to be queried
      and displayed to a user when appropriate (e.g. instead of
      smb.status.total_msgs or just the size of the index file divided by the size
      of an index record). In that case, since vote messages and poll closures
      aren't displayed as messages to users, exclude those from the count to reduce
      confusion. For message bases that don't support voting, this scheme is not
      necessary.
      a3e430e0
  9. 16 Aug, 2020 1 commit
  10. 30 Jul, 2019 1 commit
    • rswindell's avatar
      Define some new SMB hfield types: · a8709616
      rswindell authored
      - REPLYTOLIST (a mime-decoded version of RFC822REPLYTO)
      - RECIPIENTLIST (a mime-decoded version of RC822TO)
      - RFC822CC (a mime-encoded version of SMB_CARBONCOPY)
      - RFC822ORG (a mime-encoded version of SMB_ORGANIZATION)
      - RFC822SUBJECT (a mime-encoded version of SUBJECT)
      
      The RFC822* hfields are only created when necessary: there was a MIME-encoded
      hfield value received (e.g. by the mailsrvr) for the corresponding hfield.
      
      The to_list and replyto_list convenience pointers now point to the MIME-decoded
      (plain text) version of these header fields, since that's what everyone
      normally wants to see and use.
      
      The MIME-encoded flavors (RFC822*) are stored for relaying via SMTP or POP3
      and retaining all data (no normalization or decoding).
      
      A new auxattr bit has been defined: MSG_HFIELDS_UTF8 (happens to be the same
      as P_UTF8 - snicker). This bit will be set in msg.hdr.auxattr when one or more
      hfield values are in UTF-8 format. When this flag is not set, all hfield values
      are assumed to be CP437 for backwards compatibility.
      Since we are using a single flag, all header fields have to use the same
      encoding (either CP437 or UTF-8). When the hfield values are all plain ASCII,
      there's no difference between CP437 and UTF-8 and the MSG_HFIELDS_UTF8 flag
      is not expected to be set, though setting it shouldn't hurt. The RFC822* hfield
      values should also include US-ASCII text (using MIME-encoding for any 8-bit
      charsets).
      
      smb_get_hfield() function prototype change: the 3rd argument changed from
      an hfield_t* to an hfield_t**, so that the caller can actually change the
      hfield type (in memory) if they wish. Nobody seemed to be passing any non-NULL
      3rd argument value, so this changed appeared safe to make.
      a8709616
  11. 25 Jul, 2019 1 commit
    • rswindell's avatar
      Store FidoNet charset control line values as their own (new) SMB hfield type: · 6000e4f1
      rswindell authored
      FIDOCHARSET
      with its own smbmsg_t convenience pointer: ftn_charset.
      this allows greater control over when/how this header field is exported.
      Constify smb_msg_is_utf8().
      Note that the "Editor" hfield type should hold any FTN "NOTE" control line
      values (where msg editor details/version are normally propagated over FidoNet).
      6000e4f1
  12. 04 May, 2019 1 commit
    • rswindell's avatar
      smb_getplaintext and smb_getmsgtxt(...,GETMSGTXT_PLAIN) will now fall-back · 41edfbbc
      rswindell authored
      to a text/html part of a multi-part MIME encoded message if no text/plain part
      exists.
      Changed smbmsg_t.charset to smbmsg_t.text_charset.
      Added smbmsg_t.text_subtype (e.g. "plain" or "html").
      Fixed issue with parsing parsed plain-text when the charset was the last
      element of the MIME-part header.
      41edfbbc
  13. 03 May, 2019 2 commits
  14. 30 Apr, 2019 1 commit
  15. 29 Apr, 2019 1 commit
    • rswindell's avatar
      3 new smbmsg_t convenience pointers: · d1f09308
      rswindell authored
      - to_list
      - cc_list
      - replyto_list
      
      These are all comma-separated lists of names/addresses, RFC-822 style
      (so quotes and angle-brackets and all that jazz preserved/included)
      d1f09308
  16. 11 Apr, 2019 4 commits
  17. 10 Apr, 2019 1 commit
  18. 18 Feb, 2019 1 commit
  19. 04 Nov, 2018 2 commits
  20. 30 Oct, 2018 1 commit
  21. 03 Oct, 2018 2 commits
  22. 24 Sep, 2018 1 commit
  23. 25 Nov, 2017 1 commit
    • rswindell's avatar
      Created smb_initsmbhdr() which performs a subset of what smb_create() does, · adfd3ac7
      rswindell authored
      it justs initializes/re-initializes the SMB header and status header
      records.
      Created smb_t.continue_on_error which (currently) allows an smb_open() to
      continue event though some (normally fatal) errors have been detected
      (e.g. corrupted SMB header).
      This is all in the name of being able to recover message bases after more
      forms of corruption.
      adfd3ac7
  24. 12 Nov, 2017 1 commit
  25. 08 Jul, 2017 2 commits
  26. 05 Dec, 2016 1 commit
  27. 24 Nov, 2016 1 commit
  28. 21 Nov, 2016 1 commit
  29. 18 Nov, 2016 2 commits
    • sbbs's avatar
      Resolve gcc warning: · 604674cb
      sbbs authored
      comparison between signed and unsigned integer expressions
      604674cb
    • rswindell's avatar
      Introduced 2 new poll concepts: · 5ea459df
      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().
      5ea459df
  30. 16 Nov, 2016 1 commit
    • rswindell's avatar
      Changed SMB_MSG_TYPE_VOTE to SMB_MSG_TYPE_BALLOT: · 09ff4974
      rswindell authored
      There (will be) the possibilty to cast mutliple votes in a single vote-msg
      (ballot), when multi-choice polls are introduced later. There were just too
      many things call vote/votes and it was getting confusing in my own head. So the
      msg type for messages that contain votes is now "ballot".
      smb_voted_already() now returns uint16_t (instead of BOOL), returns the votes
      of the user (for polls) or just 1 for up/downvotes of msgs.
      09ff4974
  31. 15 Nov, 2016 1 commit
  32. 12 Nov, 2016 1 commit