- Feb 28, 2023
-
-
Rob Swindell authored
SMTP commands have a shorter limit (510 versus 998) and the body text line limit needed to account for dot-stuffing.
-
Rob Swindell authored
-
Rob Swindell authored
Log a warning message and send a "500 Line too long" before disconnecting any SMTP client that sends lines > 998 characters in length. Technically, we can handle lines up to 1023 characters, but then we could get out of sync with the client if it sends exactly 1023 chars and then a new-line char (which we would interpret as a blank line, separating the message header and body) - so just punt the client who doesn't obey the rules of the protocol.
-
- Feb 27, 2023
-
-
Rob Swindell authored
Update newuserdefaults() to use the new sysop-configured Chat and QWK new user settings/values (commit 56b8fd86). Use newuserdefaults() in newuser.cpp and makeuser.c, eliminating a lot of copy/pasta.
-
Rob Swindell authored
Added chat-settings to SCFG->System->New User Values->Toggle Options Added new menu: SCFG->System->New User Values->QWK Packet Settings Moved SCFG->System->New User Values->Question Toggles to: SCFG->System->New User Prompts... This fixes issue #11
-
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.
-
Rob Swindell authored
Most sysops didn't know it, but if exec/feedback.* existed, it would be executed just before any user sent an email to the sysop (user #1), excluding new user validation requests: - make this module name configurable and loadable from mods - support JS module here (exit(1) to abort the feedback) - invoke for email being sent to *any* sysop (not just user #1) - don't invoke the module when sending *from* a sysop account This fixes issue #16
-
Rob Swindell authored
-
- Feb 26, 2023
-
-
Rob Swindell authored
This fixes issue #525 Thanks to Nelgin for providing the test platform.
-
Rob Swindell authored
You want to replace the built-in batch file transfer menu with your own loadable module across all command shells? Now you can.
-
Rob Swindell authored
-
Rob Swindell authored
Apparently I missed this in commit bcce78c6.
-
Rob Swindell authored
Many dynamically-generated (e.g residential) hostnames are much > 30 chars. And we can now increase user.tab fields fairly arbitrarily, so let's. :-) Also rename LEN_COMP to LEN_HOST. Some day I'll change all the user_t comp references to 'host', but not today.
-
Rob Swindell authored
Reversed the order of the pwmod date and the password itself. The number of chars of the user's password displayed depends on the terminal width. e.g. on an 80 column terminal, 18 chars will be displayed. If the user's password is longer than what can be displayed, this is indicated with a trailing "..". Wider displays (e.g. 132 column) can display all 40 chars of a user's password. This fixes issue #442 When passwords aren't displayed (due to sysop configuration), show "<hidden>" instead of "XXXXXXXX" to make that more clear.
-
Rob Swindell authored
Pass argument of 'true' to clear upload queue, otherwise download queue is cleared. This fixes issue #488
-
Rob Swindell authored
We don't yet really work with a 0-byte main.ini file, but this gets us a little closer.
-
Rob Swindell authored
and prefixes, suffixes.
-
- Feb 25, 2023
-
-
Rob Swindell authored
-
Rob Swindell authored
Remove the (now) unnecessary explicit initializations (e.g. to zero, blank, etc.) from the sbbs_t constructor.
-
Rob Swindell authored
Configured in SCFG->System->Loadable Modules: Scan Dirs: User scans one or more directories for (e.g. new) files List Files: User lists files within a file directory View File Info: User views detailed information on files in a directory This addresses/fixes feature request #521 for Nightfox Will need to document the mode argument bit values on the wiki, but it's the usual suspects: FL_* for scandirs and listfiles and FI_* for fileinfo. The scandirs_mod will be passed an extra bool (0/1) arg that indicates whether or not the user is scanning *all* directories. Test results would be welcome
-
- Feb 23, 2023
-
-
Rob Swindell authored
-
- Feb 22, 2023
-
-
Rob Swindell authored
from sysop input, automatically.
-
Rob Swindell authored
e.g. this a way to set the K_TRIM mode globally for all keyboard input
-
Rob Swindell authored
K_TRIM causes leading and trailing whitespace to be trimmed. K_NOSPACE disallows any whitespace characters to be added to the string. Previously, trailing whitespace was always trimmed. Now, only do that if/when K_TRIM is specified.
-
Rob Swindell authored
When sending an SMB message header via SMTP or POP3, some header fields (lines) could potentially be longer than 1024 and yet sockprintf() was limited to sending 1024 bytes (actually 1022 plus CRLF). This could result in some messages not being sent correctly: header field truncated, not CRLR-terminated, and notably resulting in MIME message contents not being decoded properly in a message viewer/reader. Example (Content-Type is part of the previous header field/line): x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?cm9T1Q9G65VC/lKTTqhODKhy5lHT2y6WWMb/WyvJ+EeGEwYmY7ILhzE3yfNM?= =?us-ascii?Q?KeFWN9T/PqHBya1plKf/sHgaw0iRmI7Hq+u9Dp4bG8OqdniKQlK+Aa27oXMd?= =?us-ascii?Q?Hly6OEYaSu7jbhGGY89LF0gyRVqquqxkaMfpKvG+h4cQnnu4Tl8YAKeE39a2?= =?us-ascii?Q?lHW3372ulmb9jvvZU72J2RtZYkuoIr+Wsqhfyuj39wTZ/+C4qKCsYrmTxrki?= =?us-ascii?Q?fBZ4gMPzWkrcWAr7zPcXBg8bphJJB8VJFUjQyksA3EG4dtH8+TZeEcNNBmHf?= =?us-ascii?Q?oCGnV9wHr9HszzrSkkZ2GGyh3QZLHAVDNe7wDXSy7HJttZugf9kNqKGeaYQL?= =?us-ascii?Q?TpljH1aHPe7MiSP9Dmp/xHQ/DWQOZDx5guNS+iMciMt5p5ad+SkQye0hWRhd?= =?us-ascii?Q?usHvpllclzIee6lxJ0VSPAzHGlAOhtOolrHdDB2ODjvkEzU7L2Fj2f5x7p9q?= =?us-ascii?Q?9d6sUgSz7vZVx8yyR3KPq3jIX0QUnl0xr2Mix9xcmMNcg0yFLPcznqBdLVa8?= =?us-ascii?Q?IC7j0+8oy4BjYxr8Z3elxMC2JKq13gPYgR95cwm6hMDiZbMB4EW/J1uJhD/I?= =?us-ascii?Q?RIIqTZ+Ywt8nKOfXj6/a9Aauf0wN71QKKA+in7KY9oksIhkUGvWOrtJwkVDL?= =?us-ascii?Q?Q2UFrBBJyQHJgumj5Y+bG8FDk/55IfyV9XYEcsdLL4bCF+HX4QPHZCw4P+li?= =?us-ascii?Q?bRvN+UxOO8hgXVkgB1q8mNJ62yQuaj0AContent-Type: multipart/alternative; boundary="_000_SN6PR07MB454477F4C32C66D48BA0B02187A09SN6PR07MB4544namp_" Solved by using asprintf() instead of snprintf() for dynamic string formatting and allocation in one go. Using realloc() to expand the buffer for the appended/required CRLF.
-
- Feb 21, 2023
-
-
Rob Swindell authored
Yes, finally, you can write a command shell in JS without needing a .bin "stub" Baja module to execute it. Fixes issue #504.
-
Rob Swindell authored
User list is more similar to logonlistl and nodelist is more similar to 'who's online'.
-
Rob Swindell authored
Also modifying the existing (sample) userlist.js to mimic the hard-coded sbbs_t::userlist() function (from str.cpp), suitable as a user list module. Also added sort-by-laston-date functionality to this module, thus fixing issue #518.
-
- Feb 20, 2023
-
-
Rob Swindell authored
Previously, many/most loadable modules were limited to just 8 chars, so while technically you could include a command-line option with a very short module name, now all modules can be configured with full (up to 63 char) command-lines.
-
Rob Swindell authored
-
Rob Swindell authored
using gcc version 12.2.0 (Debian 12.2.0-14), e.g. js_console.cpp: In function ‘JSBool js_handle_ctrlkey(JSContext*, uintN, jsval*)’: sbbs.h:230:56: warning: writing 8 bytes into a region of size 2 [-Wstringop-overflow=] 230 | (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \ | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~ js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’ 670 | JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL); | ^~~~~~~~~~~~~~~~~~ In file included from sbbs.h:255: /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:36: note: destination object of size 2 allocated by ‘__builtin_alloca’ 77 | #define alloca(sz) __builtin_alloca(sz) | ~~~~~~~~~~~~~~~~^~~~ sbbs.h:228:43: note: in expansion of macro ‘alloca’ 228 | if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \ | ^~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~ js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’ 670 | JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL); | ^~~~~~~~~~~~~~~~~~ sbbs.h:230:56: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 230 | (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \ | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~ js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’ 670 | JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL); | ^~~~~~~~~~~~~~~~~~ /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:36: note: at offset 2 into destination object of size 2 allocated by ‘__builtin_alloca’ 77 | #define alloca(sz) __builtin_alloca(sz) | ~~~~~~~~~~~~~~~~^~~~ sbbs.h:228:43: note: in expansion of macro ‘alloca’ 228 | if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \ | ^~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~ js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’ 670 | JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL); | ^~~~~~~~~~~~~~~~~~ /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:36: note: at offset 2 into destination object of size 2 allocated by ‘__builtin_alloca’ 77 | #define alloca(sz) __builtin_alloca(sz) | ~~~~~~~~~~~~~~~~^~~~ sbbs.h:228:43: note: in expansion of macro ‘alloca’ 228 | if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \ | ^~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~ js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’ 670 | JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL); | ^~~~~~~~~~~~~~~~~~ /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:36: note: at offset 2 into destination object of size [1, 2] allocated by ‘__builtin_alloca’ 77 | #define alloca(sz) __builtin_alloca(sz) | ~~~~~~~~~~~~~~~~^~~~ sbbs.h:228:43: note: in expansion of macro ‘alloca’ 228 | if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \ | ^~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~ js_console.cpp:670:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’ 670 | JSVALUE_TO_ASTRING(cx, argv[0], keystr, 2, NULL); | ^~~~~~~~~~~~~~~~~~ sbbs.h:230:56: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 230 | (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \ | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~
-
Rob Swindell authored
Limited to 6 chars, yet some values are as long as 12 chars. Also, eliminates this warning from RELEASE builds (only) using gcc version 12.2.0 (Debian 12.2.0-14): js_uifc.c: In function ‘js_uifc_init’: sbbs.h:230:56: warning: writing 8 bytes into a region of size 7 [-Wstringop-overflow=] 230 | (ret)[JSSTSpos]=(char)JSSTSstrval[JSSTSpos]; \ | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~ js_uifc.c:609:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’ 609 | JSVALUE_TO_ASTRING(cx, argv[1], mode, 7, NULL); | ^~~~~~~~~~~~~~~~~~ In file included from sbbs.h:255: /home/rswindell/sbbs/src/sbbs3/../xpdev/genwrap.h:77:20: note: destination object of size 7 allocated by ‘__builtin_alloca’ 77 | #define alloca(sz) __builtin_alloca(sz) | ^~~~~~~~~~~~~~~~~~~~ sbbs.h:228:43: note: in expansion of macro ‘alloca’ 228 | if(((ret)=(char *)alloca((*JSSTSlenptr)+1))) { \ | ^~~~~~ sbbs.h:242:9: note: in expansion of macro ‘JSSTRING_TO_ASTRING’ 242 | JSSTRING_TO_ASTRING((cx), JSVTSstr, (ret), (maxsize), (lenptr)); \ | ^~~~~~~~~~~~~~~~~~~ js_uifc.c:609:17: note: in expansion of macro ‘JSVALUE_TO_ASTRING’ 609 | JSVALUE_TO_ASTRING(cx, argv[1], mode, 7, NULL); | ^~~~~~~~~~~~~~~~~~
-
Rob Swindell authored
Missing part of yesterday's commit, whoops
-
Rob Swindell authored
Move the pack and unpack commands to an "Advanced" sub-menu since they are completely optional now. Set QWKhub 'VERT' to disabled by default in a new install. Fixes issue #506
-
Rob Swindell authored
warning: passing argument 1 of ‘ra’ discards ‘const’ qualifier from pointer target type
-
Rob Swindell authored
-
- Feb 19, 2023
-
-
Rob Swindell authored
More 'long int' purging.
-
Rob Swindell authored
If login by number is supported and a client attempts login with an invalid usernumber, don't log an error, e.g. mail 3264 SMTPS [46.148.x.x] !ERROR -2 getting data on user (6123) But rather treat it as an invalid login attempt. Also change lastuser() and total_users() to return int instead of uint. 2 billion users should be plenty.
-
Rob Swindell authored
Vestiges of MS-DOS and 16-bit ints and local keyboard access.
-
Rob Swindell authored
Make the wizard use the same width (76) as the help screen to help identify text wrapping issues. Looks a bit better too.
-