- Mar 14, 2023
-
-
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 59200e33, 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
-
Rob Swindell authored
But... as rightful member of sbbs_t, thus useful from other scopes. Should get rid of all use of SYNC/ASYNC now then.
-
Rob Swindell authored
Before now, if the sysop enabled login-by-user-number and the specified login ID *started* with a decimal digit, it'd be treated as a user number and converted to a 32-bit integer. This could result in weird stuff, like this error I got today: SMTP ... !ERROR -2 getting data on user (7000401005.gc7gg@synchro.net) 7,000,401,005 is clearly greater than the number of users in my user base on Vert, but since 7B is > 2.1B (0x7fffffff), the number would be parsed as a *negative* integer value and thus less than the total number of users in my userbase. An obvious solution would be to just turn of login-by-user-number, and for most systems, I suggest doing that (a system is less secure with it enabled). However, I want to leave the option for sysops (at least for now) and don't want this weird behavior so, a login by user number now requires that the entire login ID is just decimal numbers, nothing else, and the number is parsed as an unsigned integer. So yes, roll-over can happen for very high numbers (>4.2B), but in no instance will the number be parsed as negative and thus lead to an invalid user record look-up attempt.
-
- Mar 10, 2023
-
-
Rob Swindell authored
and suggestions how to achieve what the reader/sysop is wanting.
-
Rob Swindell authored
Previously, in order to just specify the terminal-type string, the sysop would also have to pass new values for the tg-mode, client-name and server-name, which was not very friendly. We still support the old syntax where order of arguments matters, but also a new better syntax for options (which may now come before or after the required address[:port] argument): -c <client-name> (default: user alias) -s <server-name> (default: user real name) -t <terminal-type> (e.g. "xtrn=doorcode" to auto-exec door on server) -T <connect-timeout-seconds> (default: 10 seconds) -m <telnet-gateway-mode> (Number or TG_* vars OR'd together, default: 0) -p send current user alias and password as server and client-name values -q don't display banner or pause prompt displayed (quiet) -P don't pause for user key-press -C don't clear screen after successful session For arguments that take a value (e.g. -c, -s, -t, -T, -m), the value may immediately follow the option letter (e.g. "-cMyName") or be specified in the following argument (e.g. "-c MyName"). Multiple options cannot be stuck together in the same option (e.g. use '-C -P' instead of '-CP'). If the RLogin server is a Synchronet BBS, you probably want to specify the '-p' option which will send the current user's alias and password in the RLogin connection parameters that Synchronet expects them. The sysop now has better control over the output (banner, screen-clearing) and the pause prompt that was previously hard-coded.
-
Rob Swindell authored
Previously, there was no real way to tell if the call to telnet_gate() or rlogin_gate() was successful (e.g. to display or an error message to the user), though there were error/warning messages logged for the sysop. Equivalent JS bbs object methods now return Boolean too. Include ":port" part of address argument to bbs.[telnet|rlogin]_gate methods in JSDOCS. Removed a bunch of extraneous (copy-pasted?) JS_SET_RVAL() calls from js_bbs.cpp. This just makes the code a little easier to grok.
-
- Mar 09, 2023
-
-
Rob Swindell authored
DDMsgReader: Fixes for time zone alignment and key help for the message list. Should fix #531 Closes #531 See merge request !265
-
Eric Oulashin authored
-
- Mar 06, 2023
-
-
Deucе authored
1) In the BBS list, show flow control, not TCP port 2) Properly ignore DCD
-
Rob Swindell authored
Also added 2 new menu options: R - re-load msg scan config & pointers W - save msg scan config & pointers Leaving the menu file named "maincfg.msg" even though that's a pretty badly named file - should rename that file at some point, but keep 8.3 format for DOS (e.g. TheDraw, AcidDraw) compatibility. mscancfg.msg maybe? Ah, the fun of abbreviating things to 8 chars again.
-
Rob Swindell authored
These methods aren't normally needed (msg scan config/ptrs are automatically loaded upon logon and saved upon logoff), but for users (e.g. sysops) that can be logged-in concurrently or experimenting with scans, these methods can be useful and I plan to expose in a loadable module next.
-
Rob Swindell authored
Clarify the JS bbs.reinit_msg_ptrs() method description a bit.
-
- Mar 05, 2023
-
-
Rob Swindell authored
-
Rob Swindell authored
If all descriptions start a fixed offset and the default parsing logic (regex) isn't working for the sysop, they can specify the exact error offset to use for the beginning of each file's description. This offset is only used for the initial line of the description, not the continuation lines, but perhaps that could be done if needed. This is an attempt to address issue #530 I first attempted to use "Lookbehind Assertions" in the regex, but didn't have any success and decided the brute force method that the old addfiles utility used might be as simpler solution and provide an effective work-around for more potential issues with auto-detecting the beginning of the useful file description. I also added descriptions of the optional arguments to the help output.
-
Rob Swindell authored
This fixes issue #62
-
Rob Swindell authored
to track the user's preference for reverse-ordering when listing/reading mail messages. The Un-read mail command still just always uses reverse ordering.
-
Rob Swindell authored
Right now, the only preference is reverse mail listings (oldest first or newest first). These settings are only used when reading "your mail", not any other kind of mail reading. bbs.read_mail() now returns the user-adjusted loadmail_mode value and this allows us to determine the user's preferences and save them after this function/method is called. A readmail_mod can now return a number (other than 0) and that will be used as the return value of this method. sbbs_t::readmail() now does the adjustment of the passed lm_mode before calling any installed readmail_mod, so if for example, deleted message viewing is enabled by the sysop, those LM_* flags might be set now in the argument to the readmail_mod, wherase they never would before. There is not yet any way for the sysop to set a new user's default mail_settings, they'll just default to 0 for now. email_sec.js will get some adjustments to use/store the user.mail_settings next.
-
- Mar 04, 2023
-
-
Rob Swindell authored
Handles integer overflow in the summing of user's credits and remaining daily free credits.
-
Rob Swindell authored
Caught by a GCC warning.
-
Rob Swindell authored
-
Rob Swindell authored
-