- 30 Jan, 2023 1 commit
-
-
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
-
- 13 Jan, 2023 1 commit
-
-
Rob Swindell authored
Allows for more/better wildcard matching in viewable and testable file types and download-events (e.g. "tar.gz" or "tar.*"). This solves the "double-dot" problem in some file types/extensions. An implicit "*." is prepended before the configured file type/extension.
-
- 17 Nov, 2022 1 commit
-
-
Rob Swindell authored
Upload and Download ARS must be matched *and* the directory's upload and download ARS. Operator and Exemption ARS must be matched *or* the directory's operator and exemption ARS.
-
- 18 Oct, 2022 1 commit
-
-
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).
-
- 30 Apr, 2022 1 commit
-
-
Rob Swindell authored
1. Was not setting f->dir to the correct directory number, so only ftp-uploads to the *first* directory (dirnum = 0) would extract DIZ files of uploaded files. Removing the 'dirnum' parameter to addfile() since that implied that you did not have to initialize the 'dir' element of the passed file_t, but you do: to get the correct file path for file size/date detection and the DIZ extraction. 2. Was getting heap-corruption when freeing the imported/formatted DIZ text on Windows once the above problem was fixed: can't free() in one DLL memory that was allocated in another DLL. Created and now using free_diz() to free the memory allocated in read_diz(). format_diz() handles a NULL 'lines' argument correctly/gracefully, so no need for the NULL lines check in sbbs_t::uploadfile(). Added FTP server log messages for successful file upload or update by user.
-
- 28 Mar, 2022 1 commit
-
-
Rob Swindell authored
*/dsts.dab (daily statistics and running totals) -> */dsts.ini */csts.dab (cumulative statistics / log) -> */csts.tab * dsts.ini now has both daily and total stats for all fields (not just timeon and logons). * dsts.ini is now an easily modifiable text file - no longer need dstsedit (here-by deprecated and soon to be deleted) * dsts.ini and csts.tab support 64-bit upload/download byte stats and are very extensible for future fields to be added or extended > 32-bit (this was the main inspiration for this overhaul, but it was overdue and already designed for v4, pretty much) * csts.tab is a tab-delimited fixed length record format suitable for easy import to a spreadsheet program or parsing with scripts. Each day is a 128-character LF-delimited record with tab-delimited fields of plain ASCII text. * All fields except timeon in dsts.ini files are updated immediately and by more non-terminal servers (e.g. post statistics from web UI scripts). * New user stats are tracked more than just for "today". The upgrade of these files is automatic and built-into SBBS. Still to do: overhaul the slog utility to support the new csts.tab file format.
-
- 24 Mar, 2022 1 commit
-
-
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
-
- 21 Mar, 2022 1 commit
-
-
Rob Swindell authored
To fully support files > 4GB in size in file bases, credit values larger than 32-bits must be supported too. There's a couple of todo comments/items included in this commit, but that's mainly to do with messages (which don't really have costs anyway). The main thing to deal with now is the fact that users can't have more than 4GB in credits in the first place! That's got to be fixed next.
-
- 14 Mar, 2022 3 commits
-
-
Rob Swindell authored
-
Rob Swindell authored
std::min() requires both arguments be of same type too.
-
Rob Swindell authored
Resolve issues displaying file sizes > 4GB and calculating credit values.
-
- 23 Feb, 2022 1 commit
-
-
Rob Swindell authored
When no file description was provided (e.g. blind/batch file uploads), I noticed that the short file description (summary) could be set to "(null)". This problem was introduced in commit bc7030d3 with the sbbsfile.des creation and post-processing support. I also noticed that the extended description processing in sbbs_t::uploadfile() was not entirely consistent with other methods of adding/uploading files. Let prep_file_desc() do its just of processing the extended description into a suitable short description/summary (including truncation).
-
- 01 Feb, 2022 3 commits
-
-
Rob Swindell authored
This one was one of the last TODO items for the new filebase implementation: It's been supported (for a *long* time) that a file tester/upload processor could change the uploaded file's name or description by modifying the contents of the sbbsfile.nam and sbbsfile.des files in the node's directory (I know, great names, eh?). These files were not read-back into sbbs to apply any changes in v3.19b and that's now "fixed" though I'm not sure any file upload tester/processor actually ever made use of this feature. Also as part of this change, the '%s' specifier for the tester command-line will now be replaced with the path to the sbbsfile.des file and not the file's description itself (which could easily have been problematic for a command-line). Updated SCFG help text to suit.
-
Rob Swindell authored
Testable File Types and Download Events support working strings (display before/while the command-line executes). Clear the current line (displaying this working string) when the execution completes.
-
Rob Swindell authored
Issue introduced in v3.19: Testable Files (a.k.a. upload processors) with a specified file extension/type (e.g. "ZIP" and not "*") would never run because the file extension comparison logic was "off by one". Testable Files with an extension of "*" (all files/types) would still run however. This fixes issue #331 reported by Nightfox.
-
- 20 Jan, 2022 1 commit
-
-
Rob Swindell authored
Default the progress time interval to 500 milliseconds (twice a second). Don't specify a count/call interval in the call-sites, since we really want to use time-based progress updates now only and the default probably will work fine everywhere.
-
- 18 Nov, 2021 1 commit
-
-
Rob Swindell authored
The internal line editor's quoting feature add some hard-coded strings ("Done" and "All") and the (L)ist key was hard-coded. Use the text.dat string (new and pre-existing) for these now. Also, use the new sbbs_t *_key() methods for referencing the configured key bindings (via text.dat) for these common key-stroke commands. Convert the text.dat strings for keys (e.g. YNQP) to uppercase always as well.
-
- 12 Nov, 2021 2 commits
-
-
Rob Swindell authored
Found during review of previous commit. Introduced as part of the new file base branch merge (commit fcf58640).
-
Rob Swindell authored
Environment variables are shared among all threads of a process (e.g. all nodes of a instance of sbbs), so this scheme of passing the uploaded filename and description to an external file tester (upload processor) via environment variables has always been fraught with the possibility of failure or flakiness in Synchronet v3. Since I very much doubt that any upload processor is actually using this scheme, just remove it. Upload processors can and should)use the sbbsfile.nam and sbbsfile.des text files created in the node directory instead.
-
- 10 Jun, 2021 1 commit
-
-
Rob Swindell authored
It's anticipated that this will be used for JS-populated file metadata in JSON format in the future (and not just "archive contents" in .ini format). Also, fix the double-free issue that was occurring when moving files with extended file descriptions (sbbs_t::movefile()). This was actually the primary problem I was fixing here, but noticed the metadata issue: metadata would not have been moved along with the other file info between bases.
-
- 06 Jun, 2021 3 commits
-
-
Rob Swindell authored
Don't need no stinking pre/appended white-space in our filenames!
-
Rob Swindell authored
-
Rob Swindell authored
(prints the bad filename) - also, checkfname() is going to do the file.can (trashcan) checking, so no need here
-
- 24 Apr, 2021 1 commit
-
-
Rob Swindell authored
Inspired by Blocktronics (and other ANSI art group) packs' FILE_ID.DIZ/ANS files: * Support (and prioritize) FILE_ID.ANS * Convert ANSI color/attribute sequences in DIZ files to Ctrl-A equivalent (uses SAUCE width and ICE color, if specified) * Don't treat DIZ as a series of lines, they're not always nowadays. * New putmsg() mode: P_INDENT to print files indented by current column * Display full (up to 64-char) filenames in lists when using 132+ column terminal. * Use the Author, Group, and Title fields from the SAUCE if present/non-blank * 2 new text.dat strings: 301 (FiAuthor) and 302 (FiGroup) * Also fix bug with repeated Cost header field on bulk-uploaded files. I know this'll break the *nix build (sauce.c dependency), but I'll fix that next.
-
- 22 Apr, 2021 2 commits
-
-
Rob Swindell authored
-
Rob Swindell authored
Increase total extended description length from 1024 to 4000 characters. Perhaps this should be configurable?
-
- 17 Apr, 2021 1 commit
-
-
Rob Swindell authored
I forget who it was that said they were still using this feature in v3.18, but here you go, it's working again (the /D and /U commands). I'm not migrating any file sender/recipient info from v3.18, so only files added after upgrading to this will be downloadable from the "user" directory (if you have one). Something that I never implemented before but noticed is missing is the removal (or dereferencing) of user-to-user files that were sent from/to a user that is then deleted. So that's still a TODO item.
-
- 04 Apr, 2021 1 commit
-
-
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...
-
- 06 Nov, 2020 1 commit
-
-
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.
-
- 19 Sep, 2020 1 commit
-
-
Rob Swindell authored
-
- 16 Aug, 2020 1 commit
-
-
Rob Swindell authored
-
- 02 Aug, 2019 1 commit
-
-
rswindell authored
(defauls to enabled, for backward compatibility). Added new autohang args to bbs.send_file() and bbs.receive_file() (default:true) Added support for "description" argument to bbs.send_file() as well.
-
- 17 Jul, 2019 1 commit
-
-
rswindell authored
-
- 03 Aug, 2018 1 commit
-
-
rswindell authored
sbbs::lputs() will log the current user alias already, logline()->lputs() would create log messages with the user alias twice.
-
- 28 Aug, 2015 1 commit
-
-
rswindell authored
set the "extended description" flag for all subsequently added files if one of the files uploaded/added contained an embedded description (FILE_ID.DIZ) causing garbage extended description display when viewing extended information on files that did not in fact have an embedded description.
-
- 28 Apr, 2015 1 commit
-
-
rswindell authored
was never used. This was intended to be a method for internationalization, letting the sysop change which key is used as the uiniversal "quit" key. This commit replaces most of the uses of the hard-coded 'Q' for quit wtih the 3rd charcter in the text.dat YNQP string. Some hard-coded menus still have the 'Q' key hard-coded and will need to be addressed later. The text.h YN index macro was changed to YNQP and the JS text index variable name will change as well.
-
- 19 Oct, 2011 1 commit
-
-
rswindell authored
all exported functions and data types using a 32-bit time_t (time32_t). (part 2 of 2)
-
- 21 Sep, 2011 1 commit
-
-
rswindell authored
longer (use lprintf(LOG_ERR,...) instead, which does). Added sbbs_t::hacklog() for convenience.
-
- 06 Aug, 2011 1 commit
-
-
rswindell authored
of configured upload requirements) and exceed the "max files" settings per dir. Also, directory operators now always have upload permissions.
-
- 11 Mar, 2010 1 commit
-
-
rswindell authored
32-bit file size limitation.
-