Skip to content
Snippets Groups Projects
  1. Mar 25, 2022
  2. Mar 24, 2022
    • Rob Swindell's avatar
      DLL-export is_valid_XXXnum() functions, for web server use · 12f519f4
      Rob Swindell authored
      Fixes recently broken Win32 build
      12f519f4
    • Rob Swindell's avatar
      Fix potential seg fault when an invalid file vpath is requested · 175c4a3f
      Rob Swindell authored
      I knew I created these is_valid_*num() functions for a reason!
      175c4a3f
    • Rob Swindell's avatar
      Credits don't need 13 characters to display now · c53e02d8
      Rob Swindell authored
      Since we're not displaying the exact value to the byte, with commas
      c53e02d8
    • Rob Swindell's avatar
      Fix newly-introduced GCC warnings · d20ba4ab
      Rob Swindell authored
      d20ba4ab
    • 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
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      byte-count to string routines type unsigned 64-bit int now · 3b6491c5
      Rob Swindell authored
      We don't have a use case negative byte values in strings anywhere that I can think of.
      
      Created wrapper for MSFT _ui64toa_() - unsigned 64-bit integer to ASCII string.
      
      Add Petabyte (actually, Pebibyte) support to byte_count_to_str()  and byte_estimate_to_str().
      
      Removed 'B' suffix from byte_estimate_to_str() output for values < 1024. Callers may display this returned string followed by "bytes" (or similar) and thus the 'B' suffix is redundant in that case. If the caller needs a 'B' suffix, they can detect no suffix and add it.
      3b6491c5
  3. Mar 21, 2022
  4. Mar 20, 2022
    • Rob Swindell's avatar
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Linux needs strlcpy() defined in xpdev · eb111915
      Rob Swindell authored
      eb111915
    • Rob Swindell's avatar
      Add dynamic file area/base indexing to web server · 8f730cc3
      Rob Swindell authored
      By setting sbbs.ini [web] FileIndexScript to an SSJS or XJS script filename, that script (by default, from your exec directory) will be executed when a file area/base listing has been http[s]-requested. File area/base requests are of the form <vpath_prefix> (for the list of libraries), <vpath_prefix>/<lib-name>/ (for list of directories of a library) or <vpath_prefix>/<lib-name>/<dir-code-suffix>/ (for a list of files in a directory). The new http_request "lib" and "dir" properties indicate that a library or directory listing was requested (if neither are defined, that's a request for the root / list of libs). The same configured script is executed to handle all 3 types of index/list requests.
      
      A sample script (webfileindex.ssj) will be committed soon.
      
      Authentication (via HTTP-AUTH) will be required if user #0 does not have access to all libraries or all directories within a required library.
      
      file_area.lib[].link has been changed from "/<vdir>/" to just "<vdir>" (no slashes) and renamed to "vdir".
      
      file_area.dir[].link has been changed from "/<vpath>/" to "<vpath>/" (no leading slash) and renamed to "vpath".
      
      Added file_area.dir[].vdir property that contains just the directory's virtual directory name.
      
      I don't think anyone was using these "link" properties since the dynamic FTP HTML index scripting feature is no longer supported.
      
      Added can_user_access_lib() to insure that the user has access to at least one directory of a library before allowing access to the library (e.g. via JS). Something similar should be created for message groups.
      8f730cc3
    • Rob Swindell's avatar
      Use JS_ValueToECMAUint32 for full 32-bit time_t values · c6f12bff
      Rob Swindell authored
      Resolves issue with filelist.js trying to pass 4294967295 (-1) to system.datestr() resulting in:
      !JavaScript  /sbbs/exec/filelist.js line 13: Error: can't convert t to an integer
      c6f12bff
  5. Mar 19, 2022
  6. Mar 18, 2022
  7. Mar 17, 2022
  8. Mar 16, 2022
    • Rob Swindell's avatar
      Optional channel list per server configured in modopts.ini · 9c29ea47
      Rob Swindell authored
      So you have multiple IRC servers configured in modopts.ini and
      you want different channel list per server? Just add more
      keys to the modopts.ini [chat_sec] section of the form:
      <server>=<channel_list>
      
      Where <server> is the IRC server's host name (e.g. irc.synchro.net)
      and <channel_list> is a comma-separated list of channels to override
      the default list of channels (set with the "irc_channel" key).
      
      For DesotoFireflite (VALHALLA)
      9c29ea47
  9. Mar 15, 2022
Loading