Skip to content
Snippets Groups Projects
  1. Jan 05, 2025
    • Rob Swindell's avatar
      When editing the current/online user, copy the auto-term settings to user rec · d572f479
      Rob Swindell authored and Deucе's avatar Deucе committed
      (user_t.misc, User.settings), when enabling auto-terminal detection. This is
      similar to what we do in logon.cpp already:
      
      	useron.misc |= (AUTOTERM | autoterm);
      
      We used to have this logic in useredit.cpp, but was removed in commit
      8a71ab16, probably due to editing offline users (e.g. in ;uedit sysop
      comand). So just do the copy of autoterm flags when editing the *current*
      (online) user. This likely addresses the original concern in that commit.
      
      And it fixes issue #853, thanks to Deuce for root-causing
      d572f479
  2. Dec 17, 2024
  3. Nov 04, 2024
  4. Oct 31, 2024
    • Rob Swindell's avatar
      dstrtounix() now takes the format (enum date_fmt) directly · 15613b0d
      Rob Swindell authored
      This allows us to use dstrtounix() for MM/DD/YY dates regardless of the system
      configuration (sysop/locale preference).
      
      This fixes issue with QWK route.dat file and door.sys (expiration date)
      parsing where the date is/has-to-be in MM/DD/YY format, always.
      15613b0d
  5. Oct 30, 2024
  6. Oct 29, 2024
    • Rob Swindell's avatar
      Add option to display short dates in verbal/unambiguous formats · a893b66f
      Rob Swindell authored
      Although we've added (in SBBS v3.20) configurable numeric date input/display
      formats for the system, the output was still ambiguous for users (e.g.
      NN/NN/NN which could be interpretted a number of ways), so I've added an option
      to choose "verbal" short date formats to be displayed where possible instead.
      The same value separate from the numeric format (whatever the sysop chose) is
      used in the verbal date output, but since month name abbreviations are 3
      characters, only one separator is used (to keep the output length fixed at 8
      characters).
      
      The new "Verbal" short date display format is choosable in the SCFG wizard and
      via SCFG->System->Short Date Format.
      a893b66f
  7. Oct 28, 2024
  8. Oct 23, 2024
    • Rob Swindell's avatar
      Rename sbbs_t::ansi_getlines() to ansi_getdims(), add sbbs_t::getdimensions() · e4cdd4ac
      Rob Swindell authored
      Add JS console.ansi_getdims()
      
      Use sbbs_t::getdimensions() or JS console.getdimensions() to move user
      cols/rows values to run-time console values (querying ANSI terminal if
      appropriate/supported).
      
      JS console.pushxy(), popxy(), and gotoxy() all return Boolean now.
      
      sbbs_t::getdimensions() and its JS wrapper is now the proper way to propagate
      user's cols/rows settings to the run-time console values. This was done
      (post-login) only via use of the TERMROWS and TERMCOLS @-codes in
      user_settings.js. Weird.
      e4cdd4ac
  9. Oct 12, 2024
    • Rob Swindell's avatar
      File/batch upload decomp for scripting, unique-password-check fix, Ctrl-AX fix · 095368c0
      Rob Swindell authored
      Created sbbs_t::batch_upload() and JS bbs.batch_upload()
      returns true if one or more blind-uploads were received and all files in
      the batch upload queue (if any) were received
      
      The Rainbow Ctrl-A codes (x|X) are not valid for message (there's no universal
      ANSI equivalent) - so treat as "invalid Ctrl-A codes" for most (message) uses.
      e.g. they're stripped when entered into text with the internal message editor.
      
      sbbs_t::chkpass() and JS bbs.good_password() now default to *not* requiring
      the password to be substantially different from the user's current password.
      This fixes weird issues where a user that just wanted to add more characters
      to their current password woudl not be allowed by cause the new password was
      "too obvious"
      JS bbs.good_password() now accepts an optional second argumnet: forced_unique
      which defaults to false.
      sbbs_t::chkpass() (JS bbs.good_password()) would always return false if the
      provided password was the same as the user's current password, regardless of
      the 'unique' parameter value. Now, only reject unchanged password when unique
      is true.
      
      sbbs_t::upload() and JS bbs.upload_file() now accept an optional second
      argument: 'filename' which when specified, the function won't prmopt for the
      user-supplied filename.
      
      New JS property: file_area.max_filename_length
      
      file_area.min_diskspace, settings, and web_vpath_prefix are now read-only.
      These properties should not have been writable.
      095368c0
  10. Oct 10, 2024
    • Rob Swindell's avatar
      Always reload the edited user record from disk after executing a "usercfg_mod" · 583ab919
      Rob Swindell authored
      Normally, when modifying user fields via JS, the "user modified" node.dab
      flag would be set for that user (on all node's that user is logged-into) and
      the user record automatically re-read (soon after). But this doesn't work
      during newuser registration because the user is not yet "logged-into" a node.
      
      This fixes the issue reported by Nelgin (and observed on amessyroom's BBS)
      whereby if a new user resets/changes their external message editor, it would
      not take effect for their new user validation email to the sysop (they would
      still be using the default new user message editor as configured by the
      sysop).
      
      It's possible other new user default changes made (e.g. language) would also
      not have taken immediate effect as a result of this bug (now fixed).
      583ab919
  11. Apr 28, 2024
  12. Dec 31, 2023
    • Rob Swindell's avatar
      Allow sysop-configurable date separator (e.g. YYYY-MM-DD) · 013bcca9
      Rob Swindell authored
      To complete the request from: Max (WESTLINE)
      
        Is it possible to do a new dateformat in scfg
        In sweden we using YYYY-MM-DD format as standard.
      
      The default will be '/'.  Technically, any separator is possible by editing
      the "date_sep" value in the global section of main.ini.  SCFG allows the
      most popular separators: /.- and space.
      013bcca9
  13. Nov 22, 2023
    • Rob Swindell's avatar
      Fix CID 32913 · 62f78148
      Rob Swindell authored
      getkeys() could return -1 if user disconnects (and SS_ABORT not set), so this
      appears to be a valid bug.
      62f78148
  14. Oct 26, 2023
    • Rob Swindell's avatar
      Initial support or multiple (user-selectable) languages in the terminal server · 35042374
      Rob Swindell authored
      Uses the new ctrl/text.??.ini files (just a few words translated so far).
      Adds the new "lang" user property (to user.tab and JS User class).
      The language code is the 2-3 char (e.g. ISO 639-1) abbreviation of a language.
      A "blank" language property value (the default), just means to use the
      ctrl/text.dat contents.
      User-selected alternate language file is loaded upon logon and in the
      built-in/hard-coded user default settings menu.
      More on the user default settings menu:
      - AutoLogin via IP option ('I') to make room for new (I) Language option.
      - The cold-keys menu option was removed to make room for Language option
        (via text.dat change to UserDefaultsHotKey)
      - Any options disabled via blank text.dat strings will no longer result in
        supported command keys (that could accidentally be struck with hidden
        consequences/effect)
      - The user_settings.js will need similar treatment
      
      text/menu/<lang>/* is where alternate language menu files should be stored
      
      New UserDefaultsLanguage text.dat string (inserted before new PasswordChar
      string).
      35042374
  15. Sep 24, 2023
  16. Sep 23, 2023
  17. Sep 15, 2023
  18. Sep 14, 2023
  19. Sep 13, 2023
  20. Jun 04, 2023
  21. May 06, 2023
  22. Apr 14, 2023
  23. Mar 11, 2023
  24. Feb 26, 2023
    • Rob Swindell's avatar
      Increase user's hostname field (aka user_t.comp) from 30 to 60 chars · 3656b8fd
      Rob Swindell authored
      Many dynamically-generated (e.g residential) hostnames are much > 30
      chars. And we can now increase user.tab fields fairly arbitrarily, so
      let's. :-)
      
      Also rename LEN_COMP to LEN_HOST. Some day I'll change all the user_t
      comp references to 'host', but not today.
      3656b8fd
    • Rob Swindell's avatar
      Display more of the user's password · fd8e6d52
      Rob Swindell authored
      Reversed the order of the pwmod date and the password itself.
      The number of chars of the user's password displayed depends on the
      terminal width. e.g. on an 80 column terminal, 18 chars will be
      displayed. If the user's password is longer than what can be displayed,
      this is indicated with a trailing "..". Wider displays (e.g. 132 column)
      can display all 40 chars of a user's password.
      
      This fixes issue #442
      
      When passwords aren't displayed (due to sysop configuration), show
      "<hidden>" instead of "XXXXXXXX" to make that more clear.
      fd8e6d52
  25. Feb 19, 2023
  26. Jan 22, 2023
  27. Dec 31, 2022
  28. Oct 20, 2022
  29. Oct 18, 2022
  30. 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
  31. Mar 07, 2022
    • Rob Swindell's avatar
      Remove unnecessary current user (co-sysop) level/flag checks · 464633b7
      Rob Swindell authored
      As Andre pointed out, these checks perform no function because a user with a level lower than the user being edited cannot enter the related command-key anyway.
      
      This was just effectively dead code that was held-over from ancient SBBS days, seemingly before I learned to effectively use the || operator:
      if(!(atoi(str)>useron.level && console&CON_R_INPUT))
      
      :-)
      
      Fixes issue #361
      464633b7
  32. Mar 04, 2022
  33. 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
  34. Sep 25, 2021
  35. Jul 31, 2021
Loading