Skip to content
Snippets Groups Projects
  1. Feb 13, 2025
  2. Jan 21, 2025
  3. Jan 14, 2025
  4. Jan 12, 2025
  5. Jan 11, 2025
  6. Apr 28, 2024
  7. Dec 29, 2023
  8. Jun 09, 2023
    • Rob Swindell's avatar
      <Deuce> ... billion-and-one result of comparison of constant 100000 warnings. · 2b087b8b
      Rob Swindell authored
      So Clang-FreeBSD was warning (in compiles of scfg/scfg*.c by Deuce):
      result of comparison of constant 100000 with expression of type 'uint16_t'
      (aka 'unsigned short') is always true
      
      Why? Cause a uint16_t's max value is 65535 (less than 100000). Sure we could
      have just lowered the UIFC max number of config items to 65535, but that would
      have been too easy. And why are these compared-with values of type uint16_t to
      begin with? Because most ctrl/*.cnf lists (of configuration items) were
      limited to 65535 entries cause ... 16-bit DOS, historically. Now that *.cnf
      files aren't used, we could just increase these scfg_t.*_total type sizes from
      16 to 32-bits, yeah? The result is this commit.
      
      I went to (signed) int so we could still keep -1 as the special illegal
      sub/dir num value (e.g. INVALID_SUB, which is sometimes used to indicate the
      email message base). Theoretically, 2 billion configuration items could be
      supported in these lists, but SCFG will limit you to 100000 anyway. So there's
      a whole lot of s/uint/int in this commit.
      
      I'd be very surprised if this doesn't result in some new GCC/Clang warnings,
      but at least the old "comparison of constant 100000" warnings are now gone!
      2b087b8b
  9. Mar 04, 2023
  10. Nov 17, 2022
  11. Mar 24, 2022
    • Rob Swindell's avatar
      Support user credits and transfer stats > 4GB in total · 2d4ec7b8
      Rob Swindell authored
      Credits and daily free credits are accurate to the byte up to (a maximum) of 18446744073709551615 (that's 18 Exbibytes - 1).
      
      User's upload and download byte stats are now similarly extended in maximum range, but the accuracy is only "to the byte" for values less than 10,000,000,000. Beyond that value, the accuracy declines, but is generally pretty damn accurate (to 4 decimal places beyond the nearest multiple of a power of 1024), so I don't expect that to be an issue. This method of storing upload/download byte stats allowed me to use the same 10-character user record fields in the user.dat file.
      
      As a side-effect of this enhancements:
      * User and file credit values are now expressed in multiples of powers of 1024 (e.g. 4.0G rather than 4,294,967,296).
      * Free credits per day per security level has now been extended from 32 to 64-bits (to accommodate values >= 4GB).
      * adjustuserrec() now longer takes the record length since we can easily determine that automatically and don't need more "sources of truth" that can be out-of-sync (e.g. the U_CDT field length going from 10 to 20 chars with this change).
      * setting the stage for locale-dependent thousands-separators (e.g. space instead of comma) - currently still hard-coded to comma
      * more/better support for files > 4GB in size (e.g. in the batch download queue)
      * user_t ulong fields changed to either uint32_t or uint64_t - I didn't realize how many long/ulong's remained in the code (which are sometmies 32-bit, sometimes 64-bit) - ugh
      * Steve's ultoac() function renamed to u32toac() and created a C++ wrapper that still uses the old name, for homage
      2d4ec7b8
  12. Apr 04, 2021
  13. Dec 17, 2020
    • Kayz's avatar
      Improvements to linux dosemu support · 52487ec4
      Kayz authored and Rob Swindell's avatar Rob Swindell committed
      The hardcoded external.bat file has been moved to a templated
      /exec/external.bat which can be modified by the sysop. ENV
      vars are in there to be able to customize as needed. emusetup.bat
      is no longer needed, but still supported. The actual dosemu command line
      is now stored in /exec/dosemulaunch.ini and can be customized for
      fossil or i/o command lines. the keystroke is now only sent for i/o, and
      only sent as \n instead of \r which would trigger undesired behavior in
      certain programs. The above 2 files can also be placed in door dirs
      to override. ansi.com has been removed as it was not needed. default
      external.bat includes cmd lines for share, x00, etc. (user will still
      need to provide these in xtrn/dosutils).
      52487ec4
  14. Sep 26, 2020
  15. Aug 16, 2020
  16. Mar 19, 2020
  17. Jul 23, 2019
  18. Jul 07, 2019
  19. Oct 22, 2018
    • 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
  20. Aug 24, 2018
    • rswindell's avatar
      The "DOS" ARS keyword has just been a "false" trigger since v3 (1999) but · b03b6511
      rswindell authored
      I have a new use for it in the v3 Terminal Server, it now follows the
      "NO_DOS" option in the [bbs] section of the sbbs.ini file. So if you have
      multiple Win32 instances of sbbs (like I do), but only some of them
      support DOS programs, you can now use this ARS keyword to enable/disable
      access to a program based on the existance of DOS support. For example,
      I have some 16-bit DOS message editors where I had the ARS set to
      "WIN32", but on my 64-bit Windows instance of sbbs (vert.synchro.net),
      16-bit DOS programs aren't supported while on my 32-bit Windows instance
      (bbs.synchro.net) they are. So I needed a good run-time check for whether
      DOS programs were supported or not and this old ARS keyword seemed the
      right fit. For Linux builds, this keyword will only evaluate to true if
      built with the USE_DOSEMU option.
      This is only true of the Terminal Server - use of "DOS" ARS keyword in
      other servers and services will still just evaluate to "false".
      b03b6511
  21. Jan 12, 2018
    • 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
  22. Oct 12, 2017
  23. Aug 20, 2015
    • deuce's avatar
      Update to 3.17a · dbbfabf1
      deuce authored
      New Features:
      - Multiple bindings for each service
        Use comma-separated interfaces on Interface= lines in the ini file.
        Default is now "0.0.0.0,::"
      - IPv6 support
      - TLS support for the webserver and (non-static) services
        New TLS option in services.ini (ie: Options=TLS)
      - Decrease LEN_SCAN_CMD to 35 chars, increase the CID field to 45 chars,
        and rename the MAIL_CMD string to IPADDR.  I think this frees up the
        note field for SysOp use.
      dbbfabf1
  24. May 02, 2015
    • rswindell's avatar
      Fixed 12-year old bug (introduced in rev 1.10): · b61414de
      rswindell authored
      getusrsub() returned the completely wrong sub-board number. It assumed that
      getusrgrp() returned a 0-based index when in fact it returns a 1-based group
      number. This bug was only visible when using certain @-codes (e.g. "SN",
      "SL", "SR", and "SMB_SUB_NUM") when a sub-board was open via Synchronet
      internal function (i.e. not via JS MsgBase class). If the current group was the
      last group visible to the user, this would cause a crash.
      b61414de
  25. Oct 26, 2011
  26. Oct 16, 2011
  27. Mar 20, 2009
    • rswindell's avatar
      6b8a5be3
    • rswindell's avatar
      ARS improvements: · 1cdf2c10
      rswindell authored
      Added HOST and IP keywords to allow restricted access/privileges to/for
      specific remote hostnames or IP addresses (wildcards allowed).
      All string-argument type ARS keywords (e.g. SHELL, PROT, etc.) now support .can
      style wildcards.
      The current remote client is now used for protocol, host, and IP ARS checking,
      when available, so this requires passing the client pointer around (which
      explains why so many files are touched by this change) and takes care of a
      long standing to-do item (the user's 'modem' value was used for the PROT
      value checking, which was not always correct).
      1cdf2c10
  28. Jun 04, 2008
  29. Sep 30, 2007
  30. Sep 23, 2007
    • rswindell's avatar
      Added new ARS keywords: · 2ad46e3a
      rswindell authored
      * ULS - uploaded files
      * ULB - uploaded bytes
      * DLS - downloaded files
      * DLB - downloaded bytes
      
      ... so now Phil can have a "true" 1:4 upload/download file ratio requirement by
      using an ARS of "DLS NOT 4 OR UDFR 25"
      2ad46e3a
  31. Dec 29, 2006
  32. Sep 20, 2005
  33. Sep 05, 2005
  34. Dec 01, 2004
  35. Oct 17, 2004
  36. Nov 13, 2002
Loading