Skip to content
Snippets Groups Projects
  1. Dec 07, 2024
  2. Dec 01, 2024
  3. Nov 13, 2024
    • Rob Swindell's avatar
      Add a 'misc' field for System/Fixed Events allow disabling and "Native" · fd4bbce4
      Rob Swindell authored
      Configured in SCFG->External Programs->Fixed Events and the Node Daily Events
      configured in SCFG->Nodes, now can be disabled (without just clearing the
      command-line) and toggle-on "Native", so the program doesn't have to be added
      to the dreaded "Native Program List" in order to *not* be treated as a 16-bit
      DOS program (the default).
      
      Eventually I'll allow multiple of each time of system fixed event, but this
      is an improvement for now at least.
      fd4bbce4
  4. Nov 10, 2024
  5. Nov 05, 2024
    • Rob Swindell's avatar
      Add Monthly fixed (system-wide) event · 9b62df14
      Rob Swindell authored
      True, a sysop could add/configure a monthly timed event instead, but that
      requires more configuration. Fixed events are nice in their simplicity.
      
      This is intended for running the new Synchronet trashman utility, but could be
      used for anything that's simple to execute and the sysop:
      - doesn't care which node/instance of sbbs it runs from
      - doesn't care exactly what time the event runs
      - doesn't need the assorted options available for timed events
      9b62df14
  6. Nov 04, 2024
  7. 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
  8. Sep 22, 2024
  9. Sep 21, 2024
  10. Sep 20, 2024
  11. Feb 27, 2024
  12. Feb 05, 2024
  13. Jan 15, 2024
    • Rob Swindell's avatar
      Don't expand @-codes automatically for all node messages/telegrams saved · 839c3a31
      Rob Swindell authored
      This recent enhancement (Commit 61a3ab2d) introduced security and usability
      concerns.
      
      So I created (and am now using where requested) a wrapper for formatting
      text.dat/ini strings which will automaticlaly detect @-code encoded strings
      and expand/use them *only* (instead of printf %-specifiers).
      
      This might impact issue #696 since although unintentionally, it actually was
      possible to mix @-codes and %-specifier usage in certain (node status)
      text.dat/ini strings, but that should not be possible now. It's either/or:
      @-codes or %-specifiers, not both.
      839c3a31
  14. Jan 13, 2024
  15. Dec 29, 2023
  16. Nov 22, 2023
  17. 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
  18. Sep 13, 2023
  19. Jul 25, 2023
  20. 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
  21. Jun 05, 2023
  22. Mar 11, 2023
  23. Mar 05, 2023
    • Rob Swindell's avatar
      Add user_t.mail (in JS, user.mail_settings) to remember mail preferences · cf0d5714
      Rob Swindell authored
      Right now, the only preference is reverse mail listings (oldest first
      or newest first). These settings are only used when reading "your mail",
      not any other kind of mail reading.
      
      bbs.read_mail() now returns the user-adjusted loadmail_mode value and
      this allows us to determine the user's preferences and save them after
      this function/method is called. A readmail_mod can now return a number
      (other than 0) and that will be used as the return value of this method.
      
      sbbs_t::readmail() now does the adjustment of the passed lm_mode before
      calling any installed readmail_mod, so if for example, deleted message
      viewing is enabled by the sysop, those LM_* flags might be set now in
      the argument to the readmail_mod, wherase they never would before.
      
      There is not yet any way for the sysop to set a new user's default
      mail_settings, they'll just default to 0 for now.
      
      email_sec.js will get some adjustments to use/store the
      user.mail_settings next.
      cf0d5714
  24. Mar 03, 2023
    • Rob Swindell's avatar
      Introduced user download_cps property · c27b78a9
      Rob Swindell authored
      Will track the user's last succsesful file-download transfer rate
      in characters (bytes) per second.
      
      I'm not calculating or storing this rate yet, but will be soon. This
      will make the file download ETAs more realistic and no longer
      hard-coded to 3000 cps (which now defaults to 10000 cps, to keep up
      with the times).
      
      New field added to user.tab placed adjacent to the other File xfer stats,
      which means the leech attempt counter (likely always 0) was moved to the end
      of the user record.
      c27b78a9
    • Rob Swindell's avatar
      Remove defunct files from batch download queue during logon · 9308d1bc
      Rob Swindell authored
      If a user doesn't have access to download a file that's in their batch queue, remove it without saying anything to the user (but log a notice-level message about it) during logon. Files that no longer exist in the filebase are treated the same way.
      9308d1bc
  25. Feb 19, 2023
    • Rob Swindell's avatar
      The great 'long int' purge of 2023 part 2 · 0932bcda
      Rob Swindell authored
      Mostly [s]printf format fixups
      0932bcda
    • Rob Swindell's avatar
      The great 'long int' purge of 2023 part 1 · 59d8974c
      Rob Swindell authored
      At one time, Synchronet was a 16-bit DOS project, plagued by the 16-bit [u]int, so long's were used everywhere > 16-bits were known to be needed/wanted (This is before the days of the standard sized types from stdint.h), and they've persisted.
      
      But '[u]long int' is 64-bits on *nix 64-bit builds, 32-bits everywhere else (even 64-bit Windows builds if/when we ever get around to that), so this could lead to insidious bugs that would only show up on one flavor or the other. Since [u]int is 32-bits on everything we currently support, we'll use that instead of [u]long.
      
      This "part 1" because I'm sure there's going to be warnings and errors from the GCC/Clang builds as a result, which I'll get to next.
      59d8974c
  26. 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
  27. Jan 24, 2023
  28. Oct 22, 2022
  29. Oct 20, 2022
  30. 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
  31. Mar 28, 2022
    • Rob Swindell's avatar
      Overhaul statistics files · f963dcbf
      Rob Swindell authored
      */dsts.dab (daily statistics and running totals) -> */dsts.ini
      */csts.dab (cumulative statistics / log) -> */csts.tab
      
      * dsts.ini now has both daily and total stats for all fields (not just timeon and logons).
      * dsts.ini is now an easily modifiable text file - no longer need dstsedit (here-by deprecated and soon to be deleted)
      * dsts.ini and csts.tab support 64-bit upload/download byte stats and are very extensible for future fields to be added or extended > 32-bit (this was the main inspiration for this overhaul, but it was overdue and already designed for v4, pretty much)
      * csts.tab is a tab-delimited fixed length record format suitable for easy import to a spreadsheet program or parsing with scripts. Each day is a 128-character LF-delimited record with tab-delimited fields of plain ASCII text.
      * All fields except timeon in dsts.ini files are updated immediately and by more non-terminal servers (e.g. post statistics from web UI scripts).
      * New user stats are tracked more than just for "today".
      
      The upgrade of these files is automatic and built-into SBBS.
      
      Still to do: overhaul the slog utility to support the new csts.tab file format.
      f963dcbf
Loading