- Mar 18, 2023
-
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
this insures that inactive dumb (bot) connections will be disconnected even when using a script (e.g. animated pause prompt) that doesn't time-out. Also, if the connected node is the last node (for this sbbs instance), divide the socket inactivity timeout value in half. These changes (along with sbbs v3.20) should help with DOS (denial-of-service, not MS-DOS) prevention. Mainly for Krueger.
-
Rob Swindell authored
-
Rob Swindell authored
- New keys in [BBS] section of sbbs.ini: MaxLoginInactivity (default: 10 minutes) MaxNewUserInactivity (default: 60 minutes) MaxSessionInactivity (default: none/unlimited) - Each configured external program/door in SCFG can have its own maximum inactivity setting (or else the session max inactivity is applied) - moved node-specific sec_hangup to system-wide/shared max_getkey_inactivity (configured in SCFG->System->Advanced) - moved node-specific sec_warn (seconds of inactivity before sending warning) to inactivity_warn (a percentage of elapsed max inactivity before sending warning), also configured in SCFG->System->Advanced and used for both socket and getkey inactivity detection - Renamed JS console.inactivity_hangup to console.max_getkey_inactivity (old name remains as alias) - Renamed JS console.timeout to console.last_getkey_activity (old name remains as alias) - Removed JS console.inactivity_warning - Added JS console.max_socket_inactivity (current input_thread inactivity threshold) - New text.dat string: InactivityAlert (just contains 3 ^G/BELLs by default) used for non-visual inactive-user warning The MaxLoginInactivity setting in particular solves the problem of custom scripts (e.g. animated pause prompts) that just poll indefinitely for user input and never time-out - these will no longer cause nodes to be tied-up with inactive/bot users at login. You may ask yourself, how did I get here? No, you may ask yourself: why configure these socket inactivity max values in sbbs.ini? The reason is consistency: sbbs.ini is where the MaxInactivity is configured for all the other TCP servers and services. This fixes issue #534 for Krueger in #synchronet
-
Rob Swindell authored
Instead of copy/pasta. No change in function,.
-
- Mar 16, 2023
-
-
Rob Swindell authored
... to make property names more consistent (e.g. with bbs.last_node). The old names (without the underscores) are still usable but won't appear in JSDOCS (i.e. jsobjs.html).
-
Rob Swindell authored
This allows scripts (e.g. login.js) to have custom behavior (e.g. shortening the maximum inactivity timeout) based on how close the current node is to the configured last node number. There may be other uses too, but for the vast majority of Synchronet systems, first_node will always be 1 and last_node the same as system.nodes/lastnode. Ugh, inconsistent naming. :-(
-
Rob Swindell authored
Added a new configurable text string: scanningMessageText See merge request !267
-
- Mar 15, 2023
-
-
Eric Oulashin authored
-
Rob Swindell authored
DDMsgReader: Makes use of console.aborted for proper screen updates after the user quits @ help screen pause. Shows sub-board status during a new message scan. See merge request !266
-
DDMsgReader: Makes use of console.aborted for proper screen updates after the user quits @ help screen pause. Shows sub-board status during a new message scan.
-
- Mar 14, 2023
-
-
Rob Swindell authored
Add some missing descriptions, fix the order of others.
-
Rob Swindell authored
-
Rob Swindell authored
Mainly capitalization, but some typos and added details.
-
Rob Swindell authored
This mimics default.src very closely, even the curious clear-screens before the menu displays only when in non-expert mode (?). I'll likely be using this to recreate some other command shells. There's a couple of RIP-specific calls to getlines in default.src that I did not port over (yet). This commit fixes issue #526 for Nelgin (and any other JavaScript devs). Note: this file supercedes default.bin, so beware if you have customized default.src (and built your own custom default.bin), you'll want to move those to your mods directory to continue to use them. Another nail in Baja's coffin.
-
Rob Swindell authored
Use rmfiles() to recursively clean the temp dir, if available. Don't count sub-directories (if somehow created) as files. Clean the temp dir when exiting this module too.
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
-
Rob Swindell authored
number rmfiles(directory, spec=*, keep=0) Removes files and sub-directories, recursively. Use with caution!
-
Rob Swindell authored
-
Rob Swindell authored
sbbs_t::pause() and JS console.pause()... now excepts an optional set_abort argument (default is true) which controls whether this method will set the global console-output aborted flag (sys_status&SS_ABORT in C++, console.aborted in JS) when the user hits the Quit or No key at the pause prompt. This method now returns a bool: false if the user entered No, Quit, or Ctrl-C at the pause prompt. Nothing makes use of either of these new pause() features yet, but its generally better to not set/rely on global state wherever possible.
-
- Mar 13, 2023
-
-
Rob Swindell authored
-
Rob Swindell authored
For archives with directories, the first call to extract_files_from_archive() from extract_diz() would create sub-directories in the target (temp) directory, but no files within them. To correctly solve the original problem identified in commit 79a302f4, introduce/use a new 'recurse' argument to extract_files_from_archive() which means to recursively apply the file_list filter (if specified). Always pass 'with_path' argument as false to prevent sub-dir creation. The JS Archive.extract() method now excepts an additional boolean argument (recurse) following the file list arguments, default is false. Remove extra whitespace in Archive JSDOC method descriptions to be consistent with other object/class docs.
-
Rob Swindell authored
-
Rob Swindell authored
The connected TCP port detection method only worked for IPv4, so automatically detecting a CBM/PETSCII connection over IPv6 didn't work. Thanks to Deuce's xp_sockaddr and helper functions, this was an easy change.
-
Rob Swindell authored
-
Rob Swindell authored
-
- Mar 12, 2023
-
-
Rob Swindell authored
exit()ing from a load()ed script can cause the parent script to terminate and we don't want that.
-
Rob Swindell authored
-
Rob Swindell authored
service_client->client is NULL in these failure/error cases, so get the protocol string from the service_client->service (which is not NULL) instead.
-
Rob Swindell authored
To replace some copy/pasta in *.src (and later *.js shells)
-
Rob Swindell authored
It's possible that some values (e.g. "16384P") exceed the storage (count of bytes) of a 64-bit integer, and such values were causing floating point exceptions when running sbbsctrl.exe, e.g. Faulting application name: sbbsctrl.exe, version: 3.20.0.0, time stamp: 0x00000000 Faulting module name: gdi32full.dll, version: 10.0.19041.2604, time stamp: 0x2b5302d5 Exception code: 0xc0000090 but interesting (and perhaps a clue), not with sbbs.exe. Anyway, this added range checking, limiting the maximum value to INT64_MAX (after division by unit, though there was no division-unit in the problem case, the "min_dspace" value parsing in scfglib2.c). Using conditional/ternary return statement had the same floating point exception occurrences, so this if-statement shouldn't be removed/changed/optimized! I suspect this has something to do with mix of Borland and MSVC run-time libs and perhaps different expectations or setups with regards to floating point exceptions. I did notice that when stepping through read_file_cfg(), I would get different return values for the same call to iniGetBytes() depending on whether it was initiated from sbbsctrl.exe (built with C++Builder) or sbbs.dll (built with MSVC). Thanks to Codefenix for providing the sample file.ini file that demonstrated the issue. This problem would've been very hard to root-cause otherwise!
-
- Mar 11, 2023
-
-
Rob Swindell authored
Previously, there was no good way for the caller to determine if the\ user opted (when prompted) to actually log-off or not.
-
Rob Swindell authored
It's SCAN_CONT (for continuous). <sigh> Leave SCAN_CONST alias for backwards-compatibility, but deprecated.
-
Rob Swindell authored
No change in behavior. Eventually would like to get rid of all the CRLF (and CLS) macro usage.
-
Rob Swindell authored
That's all these macros were doing anyway, so no change.
-
Rob Swindell authored
Does exactly the same thing, no change in behavior and unlikely there's any change in performance.
-
Rob Swindell authored
-