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. 17 Apr, 2021 1 commit
  2. 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
  3. 06 Mar, 2021 1 commit
  4. 25 Oct, 2020 1 commit
    • Rob Swindell's avatar
      Support manual terminal columns setting per user · 8afac993
      Rob Swindell authored
      The default terminal columns (still 0/auto) can be overridden with the 'L' command from the user defaults menu. 
      
      Also increased maximum manual terminal rows setting from 99 to 999 - this involved moving the record in user.dat, though the old record value is auto-migrated.
      8afac993
  5. 04 Sep, 2020 1 commit
    • Rob Swindell's avatar
      Spinning cursors (10 patterns now) are configurable in text.dat · b5c1a605
      Rob Swindell authored
      Inspired by the cool progress cursor displayed by 'git-size', the spinning
      cursors in the Synchronet terminal server are now configurable via text.dat
      strings (SpinningCursor0 - 9), no maximum length.
      Increased the cursor "spin" rate from 4 to 5 times per second.
      The first character of the spin pattern is chosen at random between 0 and 4
      but the direction of increment is also from left to right.
      b5c1a605
  6. 04 Aug, 2020 1 commit
    • rswindell's avatar
      Some users have complained about moue support being enabled by default, · 077eadbc
      rswindell authored
      so made it enabled/disabled per-user-terminal settings. This means that if
      you were already enjoying mouse support, you're going to have to turn it on
      to keep enjoying it. It also means there's currently no way to enable/use
      mouse support pre-logon, but I have ideas about how to support that for
      sysops that want that.
      077eadbc
  7. 01 Aug, 2020 1 commit
    • rswindell's avatar
      Auto-detect non-Telnet connections to the terminal server's Telnet port and · 40d829f2
      rswindell authored
      automatically revert to Raw/TCP mode. This resolves the issue of users that
      connect using modem/serial emulators over TCP that do not actually support Telnet and then either try to transfer files, which usually will not work due to escaped (or unescaped) IAC (0xFF) characters, or the user may be sent Telnet Go Ahead (GA) sequences which may display as periodic garbage in their terminal program.
      
      This seemed like a better solution than having (yet another) dedicated terminal server port for "raw" connections over TCP, though a "raw" port still might not be a bad idea for a future enhancement. RLogin is already super close to "raw", so it's probably not really necessary to have another port configured/listening.
      40d829f2
  8. 31 Mar, 2020 1 commit
  9. 31 Aug, 2019 1 commit
  10. 20 Aug, 2019 1 commit
  11. 17 Aug, 2019 1 commit
  12. 11 Jul, 2019 1 commit
  13. 07 Jul, 2019 1 commit
  14. 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
  15. 02 May, 2019 1 commit
  16. 30 Apr, 2019 1 commit
  17. 28 Apr, 2019 1 commit
  18. 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
  19. 03 Oct, 2018 2 commits
    • rswindell's avatar
      Display message tags, if/when there are any to display, as part of the · 53a15037
      rswindell authored
      message header.
      53a15037
    • rswindell's avatar
      Allow message "tagging" (ala hashtags, without the hash). · 14b116bc
      rswindell authored
      If a message sub-board is configured to "Allow Message Tagging"
      (under Toggle Options in SCFG->Message Areas), then after a message is
      posted (via the terminal server), the user will be prompted if they
      want to tag the message with one or more space-separated tags. The no/yes
      prompt can be skipp if desired by setting the TagMessageQ line in the
      text.dat file to an empty string. There is currently no provision for
      regular users to actually see/view the message tags (yet), but the sysop
      or sub-op can view the tags in the message header with the 'H' sys/sub-op
      command.
      14b116bc
  20. 06 Sep, 2018 1 commit
  21. 04 Jun, 2018 1 commit
    • rswindell's avatar
      When the system has multiple configured FidoNet addressess (AKAs), let the · 1d41500e
      rswindell authored
      user choose which address to use as the source address when composing a netmail
      message (the default being the most appropriate for the dest zone/net). This
      change only works with SBBSecho v3.05 or later.
      Some other incremental and safety improvements to sbbs_t::netmail() too.
      FTN netmail file attachments needs some more work however (the "FA:" subject
      prefix trick) - just remove it?
      1d41500e
  22. 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
      Introduce new text.dat line: · 665933e8
      rswindell authored
        MsgHdrBodySeparator
      This is display between the msg header text.dat lines and the message body
      (previously, just hard-coded to a blank line).
      This enables us to now execute showmsgavatar.js much faster than loading
      msghdr.asc file, and using it to execute showmsghdr.js.
      So... if you're upgrading to this build, you can get rid of msghdr.asc and
      get a message viewing performance boost. The results should look the same
      (but the message header will display immediately, with no discernable delay).
      665933e8
  23. 28 Nov, 2017 1 commit
  24. 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
  25. 14 Aug, 2017 1 commit
  26. 18 Nov, 2016 1 commit
  27. 16 Nov, 2016 1 commit
    • rswindell's avatar
      Poll display support: · ae7c2f8b
      rswindell authored
      * uses new text.dat strings:
      - PollVoteNotice
      - PollAnswerNumber
      - PollAnswerFmt
      - PollAnswerChecked
      
      The actual answer of a poll is still crude (uses the old crufty uselect scheme)
      and doesn't support multiple-choice polls. This will be addressed.
      ae7c2f8b
  28. 13 Nov, 2016 1 commit
    • 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
  29. 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
  30. 30 Nov, 2015 1 commit
    • rswindell's avatar
      Introduce new node status (NODE_LOGOUT), which is used for the status of a node · 1d847ed3
      rswindell authored
      after a user (has been) disconnected and before the node transitions to waiting
      for connection (WFC) status. Usually the duration of this status is very short,
      but it can be longer (e.g. for running log-out module and event) and for (new)
      msg-scan pointer fix-ups.
      Updated logout() to remove some cruft and add some more log/debug output.
      Automatic new-scan pointer fix-ups when performing new-message scans (if the
      current pointer is greater than the last message number, set it to the last
      message number) and when saving message pointers.
      Passing user_t* to get/putmsgptrs() instead of message number now (to better
      detect Guest account).
      1d847ed3
  31. 25 Nov, 2015 1 commit
  32. 26 Aug, 2015 1 commit
    • rswindell's avatar
      Updated the online user editor: · a7d35f81
      rswindell authored
      - Display the user's last IP address (no longer stored in the "Note" field)
      - Moved the deleted/inactive user indicator to the last line before the prompt
      - Requires new text.dat entry: UserIpAddr (line 768).
      a7d35f81
  33. 02 May, 2015 1 commit
    • rswindell's avatar
      Implemented the SCAN_UNREAD mode bit for scansubs(), scanallsubs(), · 0d51d960
      rswindell authored
      scanposts(), and listsub(). These functions are exposed in the JS 'bbs' object
      as scan_subs(), scan_msgs(), and list_msgs().
      Wherease previously, all of "your messages" (messages addressed to you)
      would be found/displayed if the user answered (Y)es to the "Subjects Only?"
      prompt, and only un-read message (to you) would be displayed if they answered
      (N)o to the "Subjects Only?", providing long-standing confusion about the
      different behavior, now the user is prompted whether to display un-read
      messages only (in scansubs/scanallsubs), and in the case of the logon
      question to "Search all subs for un-read messages to you?", only un-read
      messages are listed/displayed, regardless of how the user answers the
      "Subjects Only?" question.
      SCAN_UNREAD is only applicable when combined with SCAN_TOYOU.
      
      Added new commands to the msg reading prompt: 'N' (list new messages), 'U'
      list un-read messages to-you.
      
      2 new text.dat entries: DisplayUnreadMessagesOnlyQ and NoMessagesFound
      0d51d960
  34. 28 Apr, 2015 1 commit
    • rswindell's avatar
      Bug-fix: From the text.dat Yes/No/Quit/Password entry (YNQP), the 'Q' character · aa709e2a
      rswindell authored
      was never used. This was intended to be a method for internationalization,
      letting the sysop change which key is used as the uiniversal "quit" key.
      This commit replaces most of the uses of the hard-coded 'Q' for quit wtih the
      3rd charcter in the text.dat YNQP string. Some hard-coded menus still have the
      'Q' key hard-coded and will need to be addressed later. The text.h YN index
      macro was changed to YNQP and the JS text index variable name will change
      as well.
      aa709e2a
  35. 04 Oct, 2014 1 commit
  36. 13 Mar, 2014 1 commit
  37. 11 Jul, 2012 1 commit
  38. 21 Jul, 2011 1 commit