Skip to content
Snippets Groups Projects
  1. Jan 14, 2025
  2. Jan 11, 2025
  3. Jan 09, 2025
    • Rob Swindell's avatar
      Display progress while deleting email messages · 99b2f6a3
      Rob Swindell authored
      Add/use new print mode flag: P_ATCODES for use with trusted format params
      
      Renamed text.dat strings (to better support translation/localization):
      - Deleted -> DeletedUser
      - Inactive -> InactiveUser
      
      New text.dat strings:
      - Deleting
      - DoneDeleting
      - Deleted
      - DeletedNumberItems
      - E_Mail
      - E_Mails
      99b2f6a3
  4. Jan 05, 2025
  5. Dec 02, 2024
  6. Nov 16, 2024
  7. 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
  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. Sep 07, 2024
    • Rob Swindell's avatar
      Don't attempt to publish MQTT messages unless/until connected to broker · 9b6138f2
      Rob Swindell authored
      For cases where an mqtt struct is shared between threads without concurrency
      control. I'm making this improvement in light of research into issue #781,
      though I don't expect this change to fix the reported issue.
      
      The reported error seems to come from the event thread (publishing node
      status upon starting to run the "DAILY" event) when a broker connection was
      not successful, however the reporter (Nelgin) may not have had debug-level
      logging turned on, so didn't capture the successful broker-connect log
      message. I think the broker connection *was* successful and perhaps then
      terminated by the broker ("due to protocol error"?).
      9b6138f2
  11. May 25, 2024
    • Rob Swindell's avatar
      4df2ae8f
    • Rob Swindell's avatar
      Add rainbow (elite text) attribute feature · cb4eddcb
      Rob Swindell authored
      New key "rainbow" in ctrl/attr.ini
      New Ctrl-A codes: 'X' to turn on repeating/wrapping rainbow attributes,
       'x' to turn on non-repeating/wrapping rainbow attributes.
      New @-code: RAINBOW:x to set the list of (comma-separated) rainbow attribute
       values (in same form as attr.ini).
       When used in a display file, the rainbow attribute change is temporary.
      
      Ever wanted to add alternating attributes to @-code expanded text in display
      files? Now you can.
      
      Also can be used to easily/quickly create display files with repeating
      elements (e.g. commands/options) using alternating attributes.
      cb4eddcb
  12. Feb 16, 2024
    • Rob Swindell's avatar
      UTF-8 improvements · 2584a864
      Rob Swindell authored
      Don't corrupt UTF-8 strings with SAFECOPY() (use new SAFECOPY_UTF8).
      
      Some terminals (notably, Windows Terminal) display zero width UNICODE chars
      as a single column-wide space. <sigh> Auto-detect the zero-width "width"
      (1 or 0) of the terminal during connection and UTF-8 auto-detection.
      
      getstr() works a lot better now with UTF-8 strings with wide chars (e.g.
      emojis), but likely much more to do.
      2584a864
  13. Sep 26, 2023
    • Rob Swindell's avatar
      Fast text.dat string references, more localization support via JS and @-codes · 9fb7c2c3
      Rob Swindell authored
      sbbs_t::mnemonics() now supports @-codes immediately following the tilde
      (e.g. ~@Yes@) to use the first character of a dynamically-replaced
      (e.g. localized/translated) text string as a command key.
      Fixed issue in sbbs_t::mnemonics if multiple @-codes were specified in the
      string, but no space characters (just noticed this bug while reviewing).
      
      Created: sbbs_t::expand_atcodes() - used by sbbs_t::mnemonics(), exposed in
      JS as bbs.expand_atcodes().
      
      bbs.text and system.text now have properties: each text string ID is the
      property name and the text index number (1-based) is the property value -
      enabling fast text string lookup without load/require text.js
      
      Constified sbbs_t::atcode() and attrstr() - not too painful
      
      Deprecated YNQP text.dat string in favor of (the first character of)
        "Yes" and "No" text strings and new strings: "Quit", and "PasswordChar"
      
      Other text.dat changes: ListKey->List, AllKey->Unused853
      More new text.dat strings: Which, Next, Previous, Language, LANG
      Deprecate the "AllKey" text string
      Create/use sbbs_t::all_key() - first character of "All" text string
      
      New JS console properties that present common (possibly localized) command
      keys: yes_key, no_key, quit_key, all_key, list_key, next_key, prev_key
      9fb7c2c3
  14. Sep 13, 2023
  15. May 26, 2023
  16. May 06, 2023
  17. Mar 11, 2023
  18. 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
  19. Jan 28, 2023
    • Rob Swindell's avatar
      New user terminal settings weren't display/settable durin sign-up · ee9c7223
      Rob Swindell authored
      The interactive prompting for terminal capabilities worked fine,
      but the default configuration menu settings did not reflect the
      user's previous choices and changes they made (e.g. toggle mouse
      support or BS/DEL key swap) were not reflected in the menu. Once
      logged in, the normal user defaults menu worked as expected. This
      is all because term_supports() keyed off of SS_USERON which isn't
      set during new user sign-up, so let's key off SS_USERON|SS_NEWUSER
      now.
      ee9c7223
  20. Jan 05, 2023
  21. Jan 04, 2023
    • Rob Swindell's avatar
      Publish some topics directly to topic levels · 066d6a8d
      Rob Swindell authored
      <server>/state is now published directly to the <sever> topic level (the "state" topic goes away).
      
      Moved <bbs-id>/node# topics to <bbs-id>/nodes/# (allows better wild-card subscription per MQTT standards).
      Publishing total node count to <bbs-id>/nodes rather than <bbs-id>/node_count
      
      Introduced "publish verbosity" control (defaults to "High") - if you want nice human readable (and sometimes redundant) topic messages, leave this set to "High". To reduce traffic, set to "Low". It's expected that purpose-built Synchronet/MQTT clients should work equally-well with either setting, but when using generic MQTT clients/browser, "high" verbosity is nice. The human-readable node status is only published when "high" verbosity is enabled.
      
      Publishing the BBS name to the <bbs-id> topic, the instance hostname (as configured in sbbs.ini) to the <host> topic. Makes the hierarchy much more clear when using an MQTT browser like MQTT Explorer.
      066d6a8d
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Over-overhaul of MQTT support · 916fdacb
      Rob Swindell authored
      Each Synchronet server is now its own MQTT client. This means there's no
      longer any MQTT logic in the Synchronet "hosts" (e.g. sbbscon.c, ctrl/*.cpp)
      and none needed for SBBS NT services (they'll "just work" with MQTT).
      
      This also means that just about everything (except for nodes, spam and hack)
      is now published per-server (in the sbbs/BBS-ID/hostname/server/ topic branch)
      and if you want aggregated totals or client lists, you'll have to do that in
      your own MQTT client or dashboard.
      
      I also removed the publishing of thread_count and socket_count topics as
      they weren't universally supported across all servers and are of questionable
      value. They can be added back later if determined to be useful.
      916fdacb
  22. Jan 02, 2023
    • Rob Swindell's avatar
      Second part of MQTT overhaul · d1c07811
      Rob Swindell authored
      Now support subscriptions (e.g. recycle topics, node input topics) in SBBSCTRL.
      This required a lot of search/replace and fun with circular struct pointers.
      d1c07811
  23. Dec 21, 2022
  24. Dec 12, 2022
  25. Dec 03, 2022
    • Rob Swindell's avatar
      Add output line pacing support (delay before sending LF) · 1166d9ff
      Rob Swindell authored
      New LINEDELAY and LINEDELAY:n @-codes
      Another way to pace the terminal output of long display (e.g. ANSI) files. LINEDELAY enables a 1/10th of a second delay before the sending of all LF chars. LINEDELAY:n sets the line_delay duration explicitly to a value in 1/100ths of a second units. So LINEDELAY and LINEDELAY:10 are equivalent. LINEDELAY:0 turns line-pacing off. The original line pacing value is always restored after a printfile/putmsg operation.
      
      New JS console.line_delay property (milliseconds) to control via JS. Setting this to a really high value would be bad. Some range enforcement should be added to this and many other console control values (TODO).
      1166d9ff
  26. Nov 12, 2022
    • Rob Swindell's avatar
      Change iniOpenFile() argument meaning from "create" and "for_modify" · f4d2e708
      Rob Swindell authored
      Now, if the BOOL argument value is FALSE, then the .ini file is opened read-only (and thus only read permissions are needed, resolving issue #455).
      
      If the BOOL argument value is TRUE, create-if-not-exist is implied. There are no use cases where we would want to open an .ini file for writing only if it already existed.
      f4d2e708
  27. Jul 05, 2022
  28. Jun 11, 2022
  29. Apr 28, 2022
  30. Feb 12, 2022
  31. Jan 20, 2022
  32. Jun 08, 2021
  33. May 14, 2021
    • Rob Swindell's avatar
      Fix-ups for the "continuous random tone" sysop chat pager · b03cb43f
      Rob Swindell authored
      I haven't played with this chat pager in *years*! The lowest tones were inaudible (raise the range from 0-800Hz to 400-1200Hz).
      Increase the msgabort() tone from 1 to 10ms, sounds like those computerized voice recognition phone systems now.
      
      Remove the redundant "<user> paged you to chat" notifications (and log message) when turning *off* the chat pager.
      b03cb43f
Loading