Skip to content
Snippets Groups Projects
  1. Mar 29, 2022
  2. Mar 24, 2022
    • 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
  3. Mar 13, 2022
  4. Mar 12, 2022
  5. Mar 10, 2022
  6. Mar 09, 2022
    • Rob Swindell's avatar
      Fix EXITINFO.BBS generation for 64-bit time_t and more · 91839936
      Rob Swindell authored
      So I was working on re-writing some of this door file generation code and noticed that the EXITINFO.BBS files generated by SBBS:
      
      1. had a lot of garbage data filling unused string characters (no "harm", but potentially leaking information)
      2. had the wrong total file length due to 64-bit logontime (time_t)
      3. had the wrong total file length due to writing 19 GosubData elements (instead of 20)
      
      The first and last issues appear to be some of those "forever" (20+ year old) bugs.
      
      So I'm guessing no regularly used door games actually use these portions of the EXITINFO.BBS, so most likely: no harm, no foul. But still, best to fix this before I commit the rewrite.
      91839936
  7. Mar 05, 2022
    • Rob Swindell's avatar
      Don't use pointers to the low byte of multi-byte integers · 9b085496
      Rob Swindell authored
      This only works on little endian systems (which is all we support currently).
      
      Fixes CID 174261: Wrong size argument
      
      This binary drop file writing code is pretty terrible and inefficient, but I remember being really proud of it (supporting so many drop files). This really should be re-written to use structures and/or buffered file I/O.
      9b085496
  8. Feb 24, 2022
  9. Dec 01, 2021
    • Rob Swindell's avatar
      Remove the last remnants of Win9x/Me support · e2a88765
      Rob Swindell authored
      Allow "FOSSIL Only" as a configuration option for external programs in SCFG. This is a much easier method of disabling the virtual UART support in the Virtual UART/FOSSIL device driver (if/when necessary) than editing the sbbsexec.ini file (which is still supported).
      e2a88765
  10. Nov 24, 2021
  11. Apr 18, 2021
    • Rob Swindell's avatar
      Update sound (WAV) file play-on-event support in Windows build · b1d61c14
      Rob Swindell authored
      A "hack attempt" sound file is now supported in the Terminal Server, Mail Server,  and Services.
      
      "login" and "logoff" sound files are now supported in the Terminal Server, FTP Server, Web Server, Mail Server, and Services.
      This enhancement fixes Issue #157
      
      The following sound files may now be configured in the [Global] section of the ctrl/sbbs.ini file, if desired to set the default sound files for all servers/services in on place:
      - AnswerSound
      - LoginSound
      - LogoutSound
      - HangupSound
      - HackAttemptSound
      b1d61c14
  12. 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
  13. Feb 15, 2021
  14. Dec 17, 2020
    • Kayz's avatar
      Improvements to linux dosemu support · 52487ec4
      Kayz authored and Rob Swindell's avatar Rob Swindell committed
      The hardcoded external.bat file has been moved to a templated
      /exec/external.bat which can be modified by the sysop. ENV
      vars are in there to be able to customize as needed. emusetup.bat
      is no longer needed, but still supported. The actual dosemu command line
      is now stored in /exec/dosemulaunch.ini and can be customized for
      fossil or i/o command lines. the keystroke is now only sent for i/o, and
      only sent as \n instead of \r which would trigger undesired behavior in
      certain programs. The above 2 files can also be placed in door dirs
      to override. ansi.com has been removed as it was not needed. default
      external.bat includes cmd lines for share, x00, etc. (user will still
      need to provide these in xtrn/dosutils).
      52487ec4
  15. Dec 12, 2020
  16. Dec 11, 2020
    • Rob Swindell's avatar
      Use term_supports() rather than useron.misc for drop file terminal caps · 554c2ca3
      Rob Swindell authored
      Always use the return value of term_supports(), which correctly supports pre-logon and auto-terminal-capability-detection, rather than useron.misc for all door drop file generation.
      
      This should resolve the issue recently discussed in #synchronet with regards to a user getting non-ANSI output from door games even when using an ANSI-capable terminal.
      554c2ca3
  17. Nov 29, 2020
  18. Nov 25, 2020
  19. Nov 18, 2020
  20. Nov 11, 2020
  21. Nov 06, 2020
    • Rob Swindell's avatar
      Replace ctype.h function calls with new MSVC-safe XPDEV macros · ec20d959
      Rob Swindell authored
      I'm fed-up with MSVC assertions in ctype functions (e.g. isdigit, isprint, isspace, etc.) when called with out-of-range (e.g. negative) values.
      
      This problem only affects MSVC debug builds, but if you run them (like I do), these things are like little time bombs that can drive you crazy (knocking your board out of service).
      
      The new macros names are bit more descriptive as well.
      ec20d959
  22. Nov 04, 2020
    • Rob Swindell's avatar
      Move the external program "pause on exit" implementation back to the C++ code. · 7b9243fe
      Rob Swindell authored
      Originally, the "pause on exit" was implemented in the C++ version of
      sbbs_t::xtrn_sec() and not sbbs_t::exec_xtrn(). This meant that the pause
      option was only implemented when the prgoram was invoked from the menu and
      not when invoked directly (e.g. via Baja or JS exec_xtrn function).
      
      When sbbs_t::xtrn_sec() was ported to JS, that functionality was also moved
      to JS. But it really should have been implemented in exec_xtrn() to begin
      with so that regardless of how the program is invoked, that SCFG setting takes
      effect.
      
      Thanks to Michael Long for pointing this out.
      7b9243fe
  23. Oct 04, 2020
    • Rob Swindell's avatar
      New functions to return a user's birthdate in multiple formats · 34c23c9a
      Rob Swindell authored
      e.g. MM/DD/YY for drop files that assume that format, or either MM/DD/YY or
      DD/MM/YY (depending on sysop preference) for backwards compatibility in
      expanded @-codes, Guru chat keyword.
      
      Fixed the birthdate check while logging on to work with new/all birthdate
      formats.
      34c23c9a
  24. Oct 03, 2020
  25. Oct 02, 2020
    • Rob Swindell's avatar
      Add option to create drop files in node's temp directory. · 717b8864
      Rob Swindell authored
      Enabling this feature causes the node's temp directory to be cleared before
      running the external program and causes the drop file(s) to be created-in and
      read back from (when appropriate) the node's temp directory.
      
      Creating drop files in a node's temp directory eliminates the possiblity of
      an external program (e.g. door game) accidentally reading the wrong drop
      file (e.g. wrong-cased name or a stale file of a different type).
      
      Note: Synchronet/XSDK doors *always* read their drop file (xtrn.dat) from the
      node directory, so don't try to use this option with those doors. Only doors
      where you can configure the drop file path or specify on the command-line
      (e.g. %g for the temp dir or %f for the fullpath of the drop file) should
      potentially use this new feature.
      717b8864
  26. Sep 19, 2020
  27. Aug 30, 2020
    • Rob Swindell's avatar
      External program "use shell" option can be used to use a new JS context · 1decdc69
      Rob Swindell authored
      Rather than introduce yet-another-external-program/config flag to enable
      the "new JS run-time/context" per invocation of any particular JS command,
      I'm using the XTRN/EX_SH ("Use Shell") option as it had no function for
      JavaScript command-lines and the concept is similar.
      
      So if you want to invoke a JS external program/timed-event in its own
      "sandbox", enable the "Use Shell / New Context" option for that
      program/command in SCFG. There may be performance penalties when running
      JS mods in this way, but you get the benefit of isolating one JS module
      from all others, if/when necessary.
      1decdc69
  28. Aug 16, 2020
  29. Aug 01, 2020
    • rswindell's avatar
      An experimental external() mode flag that runs JS modules in their own... · b898eb73
      rswindell authored
      An experimental external() mode flag that runs JS modules in their own separate runtime and context - currently does not work (appears to corrupt the shared JS context). Not actually used currently.
      The reason I wanted to run a JS module (actually JS doorgame) in its own context was to get useful error messages (filenames and line numbers) when the module throws an exception. Currently, the error is just reported as occuring in xtrn_sec.js, which isn't helpful or correct.
      b898eb73
  30. May 10, 2020
  31. Apr 23, 2020
    • rswindell's avatar
      2 more configurable loadable modules: · 5a192c0e
      rswindell authored
      - external programs section (default: "xtrn_sec")
      - logon list (default: "logonlist")
      
      This ties the Baja XTRN_SECTION and USERLIST_LOGONS functions and the
      JS bbs.xtrn_sec() and bbs.list_logons() methods to the loadable modules (if
      configured) automatically without the exec_bin hackery in *.src.
      
      Also, allow the xtrn section argument to be passed to the JS/C++ method to
      go directly to a specific xtrn program section.
      
      The bbs.list_logons() can also accept an argument to pass to the module
      (e.g. "-y" for yesterday's logons).
      5a192c0e
  32. Mar 28, 2020
    • rswindell's avatar
      Stop searching-for and deleting INTRSBBS.DAT before running any external. · 67622426
      rswindell authored
      This is an artifact from SBBS v2 for DOS:
      The file would contain the address of a shadow of the modem status register
      (written by execdos.exe) for dropped-carrier detection in xsdk doors (or the
      "dcdwatch" utility) while the BBS was "shrunk" out of memory to execute the
      external program with maximal available memory.
      67622426
  33. Aug 20, 2019
    • rswindell's avatar
      Address issue raiseed by Immortal: · 0bcc0416
      rswindell authored
      On Linux, using DOSEMU, he would end up with both door.sys and DOOR.SYS in the
      node directory and some doors would open the wrong file and fail to initialize.
      Solution: delete all case-versions of drop filenames before creating them.
      Don't you just love case-sensitive file systems? :-(
      0bcc0416
Loading