- Apr 10, 2024
-
-
Rob Swindell authored
We're just using it to "fix" the case, if the file indeed exists.
-
Rob Swindell authored
If client socket is connected, wait up to the specified timeout period (in ms) for the output buffer to be emptied. This is much preferred over blindly calling mswait() after sending some data (e.g. a file) and possibly waiting much longer than necessary.
-
Rob Swindell authored
Since the Terminal Server is a single thread, let's not block for long periods of time trying to send bytes to a client (e.g. send the badip.msg file contents to a client with a blocked IP address), effectively DoSing the terminal server. This should address the problem reported via IRC: <theviper4> │Apr 9 15:38:11 viper-bbs synchronet: term Terminal Server timeout(outcom) 0000 0000 <theviper4> │Apr 9 15:38:35 viper-bbs synchronet: term Terminal Server !ERROR 110 sending on socket 39 <theviper4> │Apr 9 15:38:35 viper-bbs synchronet: term Terminal Server !ERROR 32 sending on socket 39 <theviper4> │Apr 9 15:38:35 viper-bbs synchronet: term Terminal Server !ERROR 32 sending on socket 39 <theviper4> │Apr 9 15:38:36 viper-bbs synchronet: term 0039 Telnet !CLIENT BLOCKED in ip.can: 117.95.153.33 Also, make the outcom timeout error message more helpful (e.g. include the sock descriptor of the client) and don't use the old rioctl() function here any more.
-
- Apr 09, 2024
-
-
Rob Swindell authored
DDFileLister Fix: Searching by file date as a loadable module now does the new file search See merge request !432
-
Eric Oulashin authored
-
Rob Swindell authored
Oops
-
- Apr 08, 2024
-
-
Rob Swindell authored
yes, this is a Y2K38 (or Y2106) issue, but we should have that worked out when upgrading to the next libmozjs. Need something like NUMBER_TO_JSVAL() and equivalent LAZY_NUMBER macro that can deal with >32-bit ints correctly (or just always convert to double?).
-
Rob Swindell authored
... while the mods/*.bin command shell filenames could be any-case! Only impacted non-Windows systems (UNIX file systems are case-sensitive). Discovered while making this tutorial video: https://youtu.be/HlwQ0uX4S04
-
- Apr 07, 2024
-
-
Rob Swindell authored
-
- Apr 06, 2024
-
-
Rob Swindell authored
This is the time_t (seconds since Unix epoch, Jan-1-1970 UTC) date/time of the current (most recent) Git commit used to build the running binary. If a JS developer wants to check if a build is recent-enough to include some change, this is the property they should use to check (with >= comparison).
-
Rob Swindell authored
Displays messages about non-existing files when in verbose mode
-
Rob Swindell authored
De-duplicate the data_dirs first (most sysops use a single data dir for all file directories). Also, don't print non-existing old files when run with -q (quiet) option.
-
Rob Swindell authored
-
Rob Swindell authored
This solves the problem of exit() values (e.g. non-zero return codes) not getting propagated to callers when nest-called (e.g. via bbs.exec()). I think it was kk4qbn that pointed this out via IRC: an exit(1) call from prextrn.js did not stop the external program from running (as it should, for any non-zero exit code). This only happened when the prextrn.js called another JS script (e.g. via bbs.exec() or as was the case here, indirectly via "EXEC" @-code in the YesNoBar text.dat string (which executed yesnobar.js). This nested JS script invocation via sbbs_t::js_execfile() would clobber the stored js.scope property value (where the "exit_code" property is written). Script invoked in their own context (e.g. via js.exec()) wouldn't have this issue in the first place.
-
Rob Swindell authored
First pass at making a useful top-level build doc. A lot of content from the wiki should likely be moved here.
-
- Apr 05, 2024
-
-
Rob Swindell authored
Build instructions should stored in the repo along with the source, so that archives of the source include the current (at the time) build instructions
-
Rob Swindell authored
A QWKnet tagline usually contains CP437 character 254 and if/when appended to a message during export, would "convert" the message to CP437 thus making the "ASCII" charset advertisement incorrect. If a FIDO CHARSET value was already specified (e.g. in HEADERS.DAT), that value will (still) not be overridden. So the *original* import via QWK (before it gets exported to a QWKnet) is where this change will take effect. Fix for issue #741
-
- Apr 04, 2024
-
-
Rob Swindell authored
At Keyop's request This script does not (yet anyway): - clean-up any obsoleted/renamed files in the text directories - clean-up old filebase files that are not stored in the default (data/dirs)
-
Rob Swindell authored
-
Rob Swindell authored
0-byte or non-existent files can't be http-downloaded anyway
-
- Apr 03, 2024
-
-
Rob Swindell authored
new_install needs to be 'true' to auto-run the config wizard
-
- Apr 01, 2024
-
-
Rob Swindell authored
DDMsgReader: Fix for checkmark refresh when selecting all/none in the message list See merge request !431
-
- Mar 31, 2024
-
-
Eric Oulashin authored
-
Deucе authored
-
Deucе authored
-
- Mar 30, 2024
-
-
Rob Swindell authored
When invoking a nested JS script, these properties of the "js" object would be overwritten and not restored, as discovered/reported by Nightfox when his trivial game script would indirectly execute yesnobar.js, his subsequent use of js.exec_dir would point to the wrong location (the "exec" directory, parent of yesnobar.js, and not the direcctory where his game script was located). The exec_path and exec_file properties had the same problem as demonstrated by a simple test.js placed in (and executed from) a directory other than the "exec" dir: function f() { print("js.exec_path = " + js.exec_path); print("js.exec_dir = " + js.exec_dir); print("Js.exec_file = " + js.exec_file); } f(); console.yesno("test"); f(); This would only trigger the problem when executed from the BBS and whebn the YesNoQuestion text.dat string invokes the "yesnobar" module via EXEC @-code and yesnobar.js exists (in exec or mods dir), superceding yesnobar.bin which does not trigger this issue (not a JavaScript mod).
-
Rob Swindell authored
-
Rob Swindell authored
Good Time Trivia: Make a copy of js.exec_dir on startup and use the copy, since js.exec_dir could change indirectly (i.e., console.yesno() running yesnobar.js in sbbs/exec) See merge request !430
-
Good Time Trivia: Make a copy of js.exec_dir on startup and use the copy, since js.exec_dir could change indirectly (i.e., console.yesno() running yesnobar.js in sbbs/exec)
-
Deucе authored
Hopefully fixes issue where certificate file is left open and so can't be deleted.
-
- Mar 29, 2024
-
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
Renamed output file setup.exe to install_SBBS_v*.exe because InnoSetup Warning: Setting the [Setup] section "OutputBaseFileName" to "setup" is not recommended, all executables named "setup.exe" are shimmed by Windows application compatibility to load additional DLLs, such as version.dll. These DLLs are loaded unsafely by Windows and can be hijacked. Use a different name, for example "mysetup".
-
- Mar 28, 2024