1. 11 Jul, 2019 4 commits
  2. 10 Jul, 2019 9 commits
  3. 02 May, 2019 1 commit
    • rswindell's avatar
      @-code changes: · 0868c5d9
      rswindell authored
      Expanded codes will not *not* go beyond the terminal column width (minus 1).
      If you need the old/wrap behavior, add a "-W" modifier to your @-code.
      If a length value is specified with -W, it is ignored.
      
      - MSG_TO, MSG_FROM, MSG_SUBJECT now reflect the header values passed
        to sbbs_t::show_msghdr(), JS bbs.show_msg_header() and not necessarily the
        actual stored (e.g. MIME-encoded) header values.
      
      New codes:
      - MSG_CC - reflect a message's CC list, if it has one
      - DATETIMEZONE - combines DATETIME and TIMEZONE in one string
      0868c5d9
  4. 26 Apr, 2019 2 commits
    • rswindell's avatar
      c91c048e
    • rswindell's avatar
      Added support for PCBoard @ macros: · b437da19
      rswindell authored
      - DELAY:nn (delay nn 10ths of a second)
      - POS:nn (move cursor to position nn, not sure if nn is 0 or 1-based)
      - CLREOL (same as CLR2EOL)
      - YESCHAR (the character/key for "Yes", from text.dat YNQP string)
      - NOCHAR (the character/key for "No', from text.dat YNQP string)
      
      and for good measure:
      - QUITCHAR (the character/key for "Quit") - not supported by PCBoard
      b437da19
  5. 11 Apr, 2019 3 commits
  6. 04 Dec, 2018 1 commit
  7. 03 Dec, 2018 1 commit
  8. 25 Oct, 2018 1 commit
  9. 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
  10. 04 Oct, 2018 1 commit
  11. 25 Jul, 2018 1 commit
  12. 17 Mar, 2018 1 commit
  13. 12 Jan, 2018 1 commit
    • 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
  14. 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
  15. 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
  16. 23 Oct, 2017 2 commits
  17. 06 Dec, 2016 1 commit
    • rswindell's avatar
      New console control @-codes: · 413e624f
      rswindell authored
      HOME - homes cursor (to upper left, 1:1)
      CLRLINE - clears current line (cursor to column 1)
      CLR2EOL - clears to end-of-current-line (doesn't move cursor)
      CLR2EOS - clears to end of screen (doesn't move cursor)
      413e624f
  18. 21 Nov, 2016 1 commit
    • 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
  19. 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
  20. 15 Nov, 2016 1 commit
  21. 08 Nov, 2016 1 commit
    • rswindell's avatar
      Inspired by the U.S. presdential election: · 68a90f31
      rswindell authored
      The beginnings of an SMB-based voting system - very experimental:
      The concept is that a "vote" message can be used to reply to:
      1. A normal message, as either an upvote or a downvote, ala social media
      2. A poll, polls can either allow a single choice answer or multiple answers
      Vote messages won't be visible as normal messages (e.g. when reading messages
      online) and SMB processing software (e.g. SBBSecho) should ignore these
      messages because they have no body text.
      Polls are going to need more work, but the idea is to have the poll question as
      a single (newly defined) hfield and the possible answers as dfields.
      68a90f31
  22. 10 Dec, 2015 1 commit
    • rswindell's avatar
      Change TO_NET and FROM_NET @-code logic and revert last change to show_msghdr() · 9b5374c4
      rswindell authored
      - it actually *is* an expected condition that a to_net.addr or from_net.addr
      msg header field is populated with a valid address (string) even though the
      to_net.type or from_net.type value is NET_NONE.
      
      The nntpservice.js and newslink.js modules rely on this behavior to display
      and export local NNTP-posters' email addresses in message headers, but still be
      able to identify newslink-imported messages as *not* local (the from_net.type =
      NET_INTERNET) and thus not export them back to the network.
      
      This was not the original intention behind these header fields in SMB, but it
      was retrofitted to support this condition 10+ years ago and I forgot.
      9b5374c4
  23. 07 Dec, 2015 1 commit
  24. 25 Nov, 2015 2 commits
    • rswindell's avatar
      Resolve warning. · f2c39ffa
      rswindell authored
      f2c39ffa
    • rswindell's avatar
      New @-codes: MSG_AGE (the age of the message in days, months, etc.) · 338c2710
      rswindell authored
      @-codes can now be center-justified by using the *new* -C suffix (like -L/R).
      Centered expanded values are not truncated to fit the @-code length however
      (that may change).
      SMB_AREAS and SMB_AREA_DESC @-codes now display "Email" and "Personal Email"
      rather than a blank/empty string when the current message base is the mail base.
      338c2710