Skip to content
Snippets Groups Projects
  1. Jan 14, 2025
  2. Jan 06, 2025
  3. Dec 01, 2024
    • Rob Swindell's avatar
      Simplify the getnode.cpp API - use bool returns, default paramaeter value · 62ed3d3a
      Rob Swindell authored
      getnodedat() now performs a non-locked read by default.
      
      Perform more checks of getnodedat() return value before calling putnodedat()
      to avoid unintentionally zeroing out node.dab records.
      
      Add/use unlocknodedat() method for unlocking a node.dab record without
      writing.
      
      Note: The userdat.c getnodedat() and putnodedat() still return int (i.e. 0 on
      success), so that can be confusing.
      62ed3d3a
  4. Nov 20, 2024
  5. Nov 19, 2024
    • Rob Swindell's avatar
      Allow Telnet client to be in binary mode persistently · 51c917d0
      Rob Swindell authored
      Before this change, we'd always request a return to Telnet NVT (turn off
      binary-TX in both directions) after any file transfer. So although a Telnet
      session might be negotiated into binary mode shortly after connection
      (e.g., using "telnet -8"), it would be reverted back to NVT mode after any
      file transfer.
      
      The request to turn off remote binary-TX after executing external programs
      didn't actually accomplish anything since we track the Telnet option states
      internally and don't send redundant requests (e.g. the change into a mode
      we're already in). External programs aren't expected to send Telnet requests
      anyway, so I think this was some holdover from early days of stp/sexyz
      development.
      51c917d0
  6. Oct 28, 2024
  7. Aug 08, 2024
    • Rob Swindell's avatar
      Don't display menu of file xfer prots when auto-selecting user's default prot · 64a6ab9d
      Rob Swindell authored
      When a user has a "default download protocol" selected (configured for their
      user account), don't display a menu of file transfer protocols when we're
      just going to auto-select their default anyway (e.g. when downloading a QWK
      packet).
      
      This change also introduces an argument (%s, the protocol name) in the
      StartXferNow text.dat string, so that if/when the user forgets which default
      download transfer protocol they had selected, they'll be reminded ("oh yeah,
      I need start an XMODEM download!").
      
      This fixes issue #767
      64a6ab9d
  8. Mar 03, 2024
  9. Dec 29, 2023
  10. Jun 10, 2023
  11. 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
  12. May 06, 2023
    • Rob Swindell's avatar
      Perform input translation (e.g. DEL<->BKSPC, PETSCII chars) in input_thread() · 0fba2f87
      Rob Swindell authored
      My first idea was to have a per-external-program setting to enable input
      translation, but Deuce suggested it would be better done in input_thread() and
      after some thought, I agree. Translations are not done in data/file transfer
      mode, so use the CON_RAW_IN console flag to indicate this condition. So even
      JS console.getbyte() will return a translated char unless the console is set
      raw input mode (this could be surprising behavior for some!).
      
      I considered saving/restoring the console mode when performing a file transfer
      but will leave that to a time when obviously needed.
      
      This fixes issue #497 in automatic way (no option needed).
      0fba2f87
  13. Mar 11, 2023
  14. Mar 04, 2023
  15. Jan 30, 2023
    • Rob Swindell's avatar
      The 3rd great MQTT data scheme update (sorry Nelgin) · e94281e6
      Rob Swindell authored
      - Most published messages (besides log entries) have a timestamp (in ISO8601 format) prepended and tab-separated
      - The order and number of elements in client messages (list and activities) has been updated, now includes user number
      - Server client lists are now published to .../SERVER/client/list
      - Server client activities (connect, disconnect, update) are now published to .../SERVER/client/action/#
      - Server client count is now published to .../SERVER/client (with the maximum client count, if applicable)
      - Server states are now just represented by name (e.g. initializing, ready, stopping, stopped) and not number
      - BBS errors are logged to sbbs/BBS/action/error/LEVEL (where LEVEL is the log level name, e.g. "critical" or "error')
      - All server hack-attempts, SPAM attempts, logins, logouts, uploads, downloads, are published to sbbs/BBS/action/ACTION/*
      - Chat pages are published to sbbs/BBS/action/page/node/#
      - New users (on the terminal server) are published to sbbs/BBS/action/newuser
      - Posted messages and executed external programs (on the terminal server) are published to sbbs/BBS/action/ACTION/CODE topic
      - The event thread started/stopped status is published to .../SERVER/event
      
      Yeah, the wiki will get updated soon to reflect/document all these changes
      e94281e6
  16. Oct 18, 2022
    • Rob Swindell's avatar
      Full read/write support of new user.tab userbase file · 8a22b246
      Rob Swindell authored
      Also resolved some 32 vs 64-bit 'long' issues/ambiguities that have long-remained. :-)
      
      This commit also removes logon.lst file support.
      
      There's a TODO block remaining in js_user.c for setting portions of a user's birthdate (e.g. just the year or month or day).
      8a22b246
  17. 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
  18. Nov 18, 2021
    • Rob Swindell's avatar
      Add text.dat lines for "All" and the List key ('L'), used in quoting · 9513bdba
      Rob Swindell authored
      The internal line editor's quoting feature add some hard-coded strings ("Done" and "All") and the (L)ist key was hard-coded. Use the text.dat string (new and pre-existing) for these now.
      
      Also, use the new sbbs_t *_key() methods for referencing the configured key bindings (via text.dat) for these common key-stroke commands.
      Convert the text.dat strings for keys (e.g. YNQP) to uppercase always as well.
      9513bdba
  19. Apr 04, 2021
    • Rob Swindell's avatar
      A poll() failure with EINTR does not mean a socket is closed. · 925e3b0a
      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...
      925e3b0a
  20. Nov 25, 2020
  21. Nov 05, 2020
  22. Aug 16, 2020
  23. Aug 31, 2019
  24. Aug 02, 2019
  25. Apr 10, 2019
  26. Jan 28, 2019
  27. Oct 30, 2018
    • rswindell's avatar
      External programs that are "binary" in nature (e.g. file transfer protocols) · be7d06bc
      rswindell authored
      now have their output translated to PETSCII equivalents for PETSCII terminals
      (but input is not yet translated).
      .seq files are now sent untranslated via printfile() and putmsg() to PETSCII
      terminals (using the new P_PETSCII putmsg mode flag).
      .seq files (and P_PETSCII mode text printed via putmsg) is now converted
      (poorly) from PETSCII to CP437 - this is still a work-in-progress.
      Remove the remants of WIP and HTMLterm support from putmsg() and printfile().
      be7d06bc
  28. Aug 03, 2018
  29. Jun 18, 2018
  30. Feb 20, 2018
  31. Jan 12, 2018
    • rswindell's avatar
      sbbs_t::sendfile() (used by JS bbs.send_file() and Baja FILE_SEND) would not · a4c36610
      rswindell authored
      check the protocol.log (e.g. DSZ.LOG) for successful transfer even when the
      protocol was so-configured in SCFG. Fixed.
      Additionally, while sendfile() would return a proper boolean result based on
      the errorlevel returned by the protocol driver process, the log and console
      output would report success and statistics adjusted as though the xfer
      was successful, regardless.
      a4c36610
  32. Nov 26, 2017
  33. Apr 28, 2015
    • 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
  34. Oct 19, 2011
  35. Sep 21, 2011
Loading