- Dec 01, 2024
-
-
Rob Swindell authored
getnodedat() now performs a non-locked read by default. Perform more checks of getnodedat() return value before calling putnodedat() to avoid unintentionally zeroing out node.dab records. Add/use unlocknodedat() method for unlocking a node.dab record without writing. Note: The userdat.c getnodedat() and putnodedat() still return int (i.e. 0 on success), so that can be confusing.
-
- Nov 26, 2024
-
-
Rob Swindell authored
to notify sysop (user #1) that they were paged. Previously, this was a hard-coded string. The new string in text.dat is the same, but adds 2 BELs (CTRL-G chars) and is now customizable. Created an sbbs_t::notify() method to make this easier to use and that method supports @-code expansion, so this text.dat string supports @-codes (which I used). This addresses the feature request in issue #828 (beep the sysop in the telegram/short message, when they're paged).
-
- Apr 27, 2024
-
-
Rob Swindell authored
-
- Apr 23, 2024
-
-
Rob Swindell authored
Fix a long standing bug where by sysops could page for chat or send node messages or telegrams to any node, even if there wasn't a user even connected. Regular users were not affected by this bug.
-
- Mar 24, 2024
-
-
Rob Swindell authored
-
- Nov 22, 2023
-
-
Rob Swindell authored
In response to Nelgin's inquiry: DigitalMan would it be difficult to add login/logoff date/time to these messages? Node 2: xxuserxx logged on Telnet Node 2: xxuserxx logged off Now, you can just use @-codes to add that kind of thing to these text.dat strings.
-
- Sep 25, 2023
-
-
Rob Swindell authored
There are other ways to generate forced-upper case expanded @-codes, if that's what you want. Fewer duplicates in text.dat make localization, translation to other languages easier.
-
- Jun 09, 2023
-
-
Rob Swindell authored
So Clang-FreeBSD was warning (in compiles of scfg/scfg*.c by Deuce): result of comparison of constant 100000 with expression of type 'uint16_t' (aka 'unsigned short') is always true Why? Cause a uint16_t's max value is 65535 (less than 100000). Sure we could have just lowered the UIFC max number of config items to 65535, but that would have been too easy. And why are these compared-with values of type uint16_t to begin with? Because most ctrl/*.cnf lists (of configuration items) were limited to 65535 entries cause ... 16-bit DOS, historically. Now that *.cnf files aren't used, we could just increase these scfg_t.*_total type sizes from 16 to 32-bits, yeah? The result is this commit. I went to (signed) int so we could still keep -1 as the special illegal sub/dir num value (e.g. INVALID_SUB, which is sometimes used to indicate the email message base). Theoretically, 2 billion configuration items could be supported in these lists, but SCFG will limit you to 100000 anyway. So there's a whole lot of s/uint/int in this commit. I'd be very surprised if this doesn't result in some new GCC/Clang warnings, but at least the old "comparison of constant 100000" warnings are now gone!
-
- Jun 04, 2023
-
-
Rob Swindell authored
A bunch of possible (but often, not really) use of undefined values. Some ignored return values (e.g. of chsize/ftruncate, read, write, fgets). Other than some added diagnostics upon some of these unexpected syscall failures, there should be no change in behavior from this commit.
-
- Apr 30, 2023
-
-
Rob Swindell authored
After a negative-match of a Guru expression, we were searching for the next '(' anywhere in the subsequent chars of the file rather than just the next line that started with an open-parenthesis character. This bug was the secondary cause of the buffer-overflow crash addresseed in commit 86150e0a which was triggered by my recent updates to the guru.dat.
-
- Apr 29, 2023
-
-
Rob Swindell authored
The trigger was this line in the recent change to guru.dat: Unrealized potential. :-( That open paren was parsed as the beginning of a new guru expression. A very long guru expression that overflowed the stack variable 'str' here.
-
- Apr 17, 2023
-
-
Rob Swindell authored
Fix issue #551
-
- Mar 11, 2023
-
-
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.
-
- Mar 04, 2023
-
-
Rob Swindell authored
Handles integer overflow in the summing of user's credits and remaining daily free credits.
-
- Feb 27, 2023
-
-
Rob Swindell authored
This includes a new JS bbs method: bbs.chat_sec() And the old command shells written in Baja now call the PCMS chat_section function, as they used to, rather than hard-coding the name of the module to execute.
-
- Feb 19, 2023
-
-
Rob Swindell authored
More 'long int' purging.
-
Rob Swindell authored
Vestiges of MS-DOS and 16-bit ints and local keyboard access.
-
- Feb 02, 2023
-
-
Rob Swindell authored
Be sure to let them select a node even when no nodes are technically "in use". As requested by Nelgin in IRC (what, no gitlab issue?)
-
- Jan 30, 2023
-
-
Rob Swindell authored
- Most published messages (besides log entries) have a timestamp (in ISO8601 format) prepended and tab-separated - The order and number of elements in client messages (list and activities) has been updated, now includes user number - Server client lists are now published to .../SERVER/client/list - Server client activities (connect, disconnect, update) are now published to .../SERVER/client/action/# - Server client count is now published to .../SERVER/client (with the maximum client count, if applicable) - Server states are now just represented by name (e.g. initializing, ready, stopping, stopped) and not number - BBS errors are logged to sbbs/BBS/action/error/LEVEL (where LEVEL is the log level name, e.g. "critical" or "error') - All server hack-attempts, SPAM attempts, logins, logouts, uploads, downloads, are published to sbbs/BBS/action/ACTION/* - Chat pages are published to sbbs/BBS/action/page/node/# - New users (on the terminal server) are published to sbbs/BBS/action/newuser - Posted messages and executed external programs (on the terminal server) are published to sbbs/BBS/action/ACTION/CODE topic - The event thread started/stopped status is published to .../SERVER/event Yeah, the wiki will get updated soon to reflect/document all these changes
-
- Oct 21, 2022
-
-
Rob Swindell authored
I didn't look closely enough at which write() call I was instrumenting. This is now more useful, though I think we already found the root-cause based on different log output ("Unexpected ansi_getxy response").
-
Rob Swindell authored
This just resulted in a lot of unhelpful noise in the log output
-
Rob Swindell authored
When reading and writing characters to chat files, log each with a debug-level log message. If a read or a write fails, log with an error-level log message. This will hopefully help root-cause and resolve issue #304.
-
- Oct 20, 2022
-
-
Rob Swindell authored
... for proper error reporting, at least in the terminal server. Also define/use a macro for the user base filename (now user.tab, not user.dat).
-
- Oct 18, 2022
-
-
Rob Swindell authored
Also resolved some 32 vs 64-bit 'long' issues/ambiguities that have long-remained. :-) This commit also removes logon.lst file support. There's a TODO block remaining in js_user.c for setting portions of a user's birthdate (e.g. just the year or month or day).
-
- Apr 14, 2022
-
-
Rob Swindell authored
For the following log files: hungup.log error.log crash.log hack.log spam.log guru.log ... they can be limited in size, in bytes, by the sysop, along with a maximum retention limit (number of *.#.log files). Configured in SCFG->System->Advanced. By default, the limit and keep numbers are 0, so "unlimited" (same behavior as before). Once sufficiently tested, I'll change the default in a stock main.cnf file to use a sensible limit (e.g. 10 log files of 10MB each, something like that).
-
- Mar 24, 2022
-
-
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
-
- Mar 02, 2022
-
-
Rob Swindell authored
-
- Dec 01, 2021
-
-
Rob Swindell authored
Is this the point when the lost chars problem happens?
-
- May 14, 2021
-
-
Rob Swindell authored
I haven't played with this chat pager in *years*! The lowest tones were inaudible (raise the range from 0-800Hz to 400-1200Hz). Increase the msgabort() tone from 1 to 10ms, sounds like those computerized voice recognition phone systems now. Remove the redundant "<user> paged you to chat" notifications (and log message) when turning *off* the chat pager.
-
- Feb 22, 2021
-
-
Rob Swindell authored
Check return value from read().
-
- Feb 15, 2021
-
-
Rob Swindell authored
Reverted the SAFECOPY() NULL source-pointer magic "(null)" string thing as that caused a different Coverity issue. Explicitly check for NULL at the call-sites instead.
-
Rob Swindell authored
Reverted the SAFECOPY() NULL source-pointer magic "(null)" string thing as that caused a different Coverity issue. Explicitly check for NULL at the call-sites instead.
-
- Jan 05, 2021
-
-
Rob Swindell authored
At the request of WitNik (BGGRSCYN)
-
- Nov 25, 2020
-
-
Rob Swindell authored
... when running DOS programs on Linux with a DOSEMU-enabled build.
-
- Nov 06, 2020
-
-
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.
-
- Oct 04, 2020
-
-
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.
-
- Sep 19, 2020
-
-
Rob Swindell authored
-
- Sep 18, 2020
-
-
Rob Swindell authored
This bug would cause the split-screen separator to repeat when the local side scrolled (if the terminal was 24 rows, bug didn't happen when local screen was 25 rows). This bug appears to have "always" been there. The split-screen separator is 80 columns, so that forced a line wrap on the subsequent CRLF and the local_y value was "off-by-one". Just use ansi_gotoxy() instead and put the cursor where you think it is. Also, support > 24 row terminals for longer chat history (bottom half only).
-
Rob Swindell authored
When a sysop wants to chat, he wants to chat right now, damnit!
-