- 12 Apr, 2019 1 commit
-
-
rswindell authored
(default: off) - when enabled, the current terminal width (columns) will be saved in the msg header. When using the internal msg editor or raw intput mode, the columns are always saved in the message editor. fseditor.js should have this option enabled.
-
- 11 Apr, 2019 1 commit
-
-
rswindell authored
-
- 24 Mar, 2019 1 commit
-
-
rswindell authored
- bbs.show_msg() - bbs.show_msg_header() Re-worked the JS bbs.netmail() implementation sbbs::show_msg(), show_msghdr(), msgtotxt() now take an smb_t* argument (don't use the pseudo-global 'smb' in these functions any longer) sbbs_t::putmsg() and JS console.putmsg() now accept an optional orig_columns argument to specify the original column width of a text for intelligent re-word-wrapping (e.g. as taken from a message header field). Previously, the original-column value was hard-coded to 80 columns (technically, 79). sbbs_t::show_msghdr() no longer sends a CRLF if the cursor is already at the top-of-screen (TOS). sbbs_t::show_msg() now uses the stored "columns" msg header fields to pass to putmsg() to intelligently re-word-wrap message bodies for display. sbbs_t::show_msg() and msgtotxt() return bool now instead of void. JS MsgBase.get_all_msg_headers() now supports an optional "expand_fields" argument (defaults to true). I contemplated just getting rid of the (few) expanding header fields (more like default-value-header fields, like 'id'), but decided against it, at least for now. JS MsgBase.put_msg_header(), the "number_or_offset" argument is optional and not needed if a header object argument is provided. Make this clear in this JS docs for this method Note: I sat on this commit for a while because I noticed occasional errors like this: Node 1 <Digital Man> !ERROR 2 (No such file or directory) (WinError 0) in readmsgs.cpp line 217 (sbbs_t::loadposts) locking "path/to/sub" access=-100 info=smb_locksmbhdr msgbase not open started cropping up after introducing these changes and which I never root-caused. But after a clean-build and waiting a week, I haven't seen it again, so hopefully it was just a incomplete rebuild issue and not a new bug.
-
- 08 Mar, 2019 1 commit
-
-
rswindell authored
by Deuce. If 'top' is passed in as NULL, assign a blank string constant to it since we dereference top a few places in this function and pass it to putmsg().
-
- 20 Feb, 2019 1 commit
-
-
rswindell authored
(JS bbs.post_msg()): If the WM_QUOTE mode flag is *not* set, then it will auto- create the quote file (quotes.txt) and add the WM_QUOTE mode bit before calling sbbs_t::writemsg(). So if existing JS scripts call bbs.post_msg(..., WM_QUOTE) with a custom-created quote file (e.g. with msg tails), that'll still work as before (e.g. DDMsgReader.js). bbs.email() and bbs.netmail() now support an optional reply_header_object argument which works like bbs.post_msg(). These methods (and the underlying C++ methods: sbbs_t::email(), netmail(), inetmail(), all auto-create the quote file now, when the WM_QUOTE mode flag is *not* set. The auto-created quotes.txt now includes the plain-text version of MIME-encoded messages. the bbs.post_msg(), email(), and netmail() methods now all support reply header objects that came directly from bbs.get_msg_header() *or* copies of such header objects (but the auto-quoting feature won't work when supplied this type of header object). So if passed a header object returned from bbs.get_msg_header(), we can now use the message base (for auto-quoting) and the underlying msg storage directly (no JS parsing necessary). This is what the new js_GetMsgHeaderObjectPrivates() function is used for. js_ParseMsgHeaderObject() (and the underlying parse_header_object() function) now supports either an actual internally-generated msg header object (e.g. returned from bbs.get_msg_header()) or one that is a copy or hand-constructed. quotemsg() no longer tries to get a copy of the msg index/header. It shouldn't have to since we can now get to underlying msg storage in the js_msgbase.c via js_GetMsgHeaderObjectPrivates(). quotemsg() now reads only the plain-text portion of MIME-encoded messages. As part of this effort, I modernized the method prototypes using default argument values (e.g. WM_NONE for wm_mode arguments) and removed some extraneous WM_EMAIL and WM_NETMAIL specifications (these wm_mode flags are automatically added by the sbbs_t::email() and *netmail() functions). savemsg() now *does* support reply-IDs/thread-linkage via the additional 'remsg' argument (when non-NULL). Replaced some use of nulstr with NULL. Replaced more boilerplate SMB open code with calls to smb_open_sub().
-
- 19 Feb, 2019 1 commit
-
-
rswindell authored
When the WM_QUOTE mode flag is set and the 'remsg' is specified, the original message will quoted (excluding message tails, using the proper word-wrapping). If the quote file already exists before calling postmsg()/bbs.post_msg(), it will be over-written. This allows JS script to initiate reply-posts with quoted text without having to create their own quotes file. It also means there's no need to call sbbs_t::quotemsg() before calling sbbs_t::postmsg(). sbbs_t::quotemsg() now takes an smb_t* arg (stop using the sbbs_t 'global' smb) and now returns bool.
-
- 21 Jan, 2019 1 commit
-
-
rswindell authored
the internal message editor. It doesn't redraw the lines below the deleted line or do anything terribly fancy, but at least it behaves more as one would expect.
-
- 15 Jan, 2019 1 commit
-
-
rswindell authored
is the likely cause of missing lines or "Aborted" messages upon saving with the internal editor.
-
- 31 Dec, 2018 1 commit
-
-
rswindell authored
has type 'size_t'
-
- 30 Dec, 2018 1 commit
-
-
rswindell authored
data-type and API. This works better for terminals < 80 cols in width and has some other improvements with inserting/deleting lines using the arrow keys, but still not great. No longer does tab-expansion on text read from a file - may want to add that back in <shrug>.
-
- 20 Dec, 2018 1 commit
-
-
rswindell authored
quote files (ain't nobody got time for that!).
-
- 12 Dec, 2018 1 commit
-
-
rswindell authored
- include errno description (strerror output) - exclude (redundant) node number
-
- 07 Dec, 2018 2 commits
-
-
rswindell authored
created) before this funciton is called, so we can't *always* delete the quote file. Delete it if restoring a draft or if quoting is disabled only.
-
rswindell authored
going to recover a draft message or quote a source message or whatever. Lingering QUOTES.TXT files interferred with recovering draft messages.
-
- 09 Nov, 2018 3 commits
-
-
rswindell authored
More log output when saving/restoring drafts of if there is an error doing so.
-
rswindell authored
log a message when a draft message is saved.
-
rswindell authored
and maybe lose all that eloquent prose you've painstakingly written? Well, Synchronet will now save your unsaved draft (assuming your editor saves it before exiting due to disconnetion) and will give you the option of restoring that draft when you attempt to email or post again within 48 hours. The message's subject is saved/restored along with the draft body text as well. Drafts older than 48 hours are just ignored. This duration is currently hardcoded, but that could easily be changed.
-
- 30 Oct, 2018 1 commit
-
-
rswindell authored
message text (when relevant and available) - this helps when re-wrapping the message text (e.g. for quoting) and not always guessing "80 columns".
-
- 29 Oct, 2018 1 commit
-
-
rswindell authored
File not found. d:\sbbs\text\menu/msgtabs.asc
-
- 26 Oct, 2018 1 commit
-
-
rswindell authored
menu() if it does (exist) and doing something else if it doesn't.
-
- 22 Oct, 2018 1 commit
-
-
rswindell authored
So Omegix recently asked in the Synchronet Discussion group whether or not a PETSCII (Commodore) terminal could be used to access his Synchronet BBS. Now, the answer is "Yes". :-) The major issues addressed: - detecting a PETSCII terminal, solved by assigning specific (configurable): TCP ports to be used for incoming PETSCII connections, by default: port 64 is for 40-column PETSCII and port 128 is for 80-column PETSCII, but if the terminal sends a Telnet Window Size reply (e.g. SyncTERM), then either size terminal should fine on either port. The port numbers are configurable in the [BBS] section of your sbbs.ini file using the new keys: PET40Port (default value: 64) and PET80Port (default value: 128). Having these keys set doesn't make make the terminal server listen on that additional port - you'll need to add more IP:port combinations to one of Interfaces values, example: TelnetInterface=71.95.196.34,71.95.196.34:64,71.95.196.34:128 And you don't have to use Telnet for the PETSCII connections - you could use RLogin or SSH instead (or in addition). - support for terminal widths < 80 columns: This was achieved through a combination of text.dat changes (numerous), new Ctrl-A and @-codes and new optional terminal-width-specific menu files (e.g. text/menu/main.40col.asc) A side effect of these changes is actually better support for terminals *wider* than 80 columns as well! - support for terminals that don't expand tabs to spaces (e.g. PETSCII): The terminal server now handles tab expansion with a run-time settable tab-size (default size: 8) - conditional access based on PETSCII (or small) terminal use (or not): + New PETSCII ARS keyword (boolean) + New COLS and ROWS ARS keywords (for terminal width and height requirements) + New TERM (string) ARS keyword New @-codes: - WORDWRAP, when placed at the top of a file, enables auto-wordwrap for lines longer than the terminal width - CENTER, the text following before an end of line will be displayed centered on the terminal (whatever the width, in columns) - CLEAR, like CLS, except it ignores (doesn't display) a CRLF that follows - COLS, current number of terminal columns (width) - ROWS, current number of terminal rows (height) - TERM, the auto-detected or reported terminal type (e.g. ANSI, TTY, etc.) - SYSONLY, toggles "echo" (display) off/back-on for non-sysops similar to the Ctrl-A( and ) codes, but more convenient to use (and PabloDraw won't strip the @-code from the file like it does with Ctrl-A codes it doesn't support) New Ctrl-A codes: - \ conditional new-line/continuation when the terminal width is < 80 cols prints the new text.dat string LongLineContinuationPrefix yesno() will now return true if passed a blank string. noyes() will now return false if passed a blank string. getstr()'s input length limiting based on terminal width is more broadly applied now (not just when using the K_LINE mode flag). New JS bbs object method: menu_exists(<base_filename>) returns Boolean New JS console object property: tabstop (Number) New JS console object methods: getbyte() and putbyte() to recv/send raw byte value with (very little) interpretation/intervention by the terminal server New JS console object method: creturn() - performs a carriage return (or equivalent) New JS (and C) printfile() mode flag: P_TRUNCATE, causes long lines to be truncated, rather than displaying causing a line-wrap. New text.dat strings: - NoAccessTerminal (for ARS check failures) - LongLineContinuationPrefix (for breaking long lines for 40col terminals) - Scanning (replaces a previously hard-coded "Scanning" string) - Done (replaces a previusly hard-coded "Done") - Scanned (when finished scannning, clears the progress bar)
-
- 03 Oct, 2018 1 commit
-
-
rswindell authored
from both ends of the input string automatically and disallow (ignore) more than one consecutive space character mid-string. The returned value is still the non-trimmed string length - perhaps that should be changed.
-
- 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.
-
- 25 Jul, 2018 1 commit
-
-
rswindell authored
fix the resulting warnings.
-
- 10 Mar, 2018 2 commits
- 20 Feb, 2018 1 commit
-
-
rswindell authored
-
- 12 Jan, 2018 1 commit
-
-
rswindell authored
-
- 07 Jan, 2018 1 commit
-
-
rswindell authored
- if the sysop had text/menu/<filename>.bak (for example), the optoinal menu would attempt to load, resulting in an error ("<filename>.asc not found") - if the sysop specified menu_file or menu_dir (e.g. via Baja), the existing checks for optional menu file existance would not work
-
- 24 Nov, 2017 1 commit
-
-
rswindell authored
logic everywhere. Enforce the sys_misc SM_DELREADM flag (SCFG->Message Options->Kill Read E-mail) in more places (set the Kill After Read flag automatically). Create a Message-ID (RFC822-style) for locally created email messages.
-
- 15 Nov, 2017 1 commit
-
-
rswindell authored
server log) using the new magic sbbs_t::lputs(). No more SSH errors if an SSH client's IP is blocked in ip.can (trying to send the block msg). New SSHConnectTimeout cfg value (in sbbs.ini [BBS]), defaults to 10 seconds. Previously, fails SSH connections could block the bbs_thread for 30 seconds (the Cryptlib default network connection timeout). Overhauled a lot of the SSH-related log output to make it less chatty and more meaningful. getmail() is now more flexibility with regards to filtering by attribute flags (not just SPAM). Allow SPAM header attribute to be toggled with sysop 'C' command.
-
- 27 Nov, 2016 1 commit
-
-
rswindell authored
change-attributes sub-op menu).
-
- 23 Nov, 2016 1 commit
-
-
rswindell authored
-
- 18 Nov, 2016 1 commit
-
-
rswindell authored
- Closures (polls can be closed for new voting by the pollster) - Results can have configurable visibility: a. Only to voters (and the pollster) - the default b. Everyone c. Everyone once the poll has closed d. Only the pollster Changes to smb_getmsgtxt(): Main change: poll questions can now be quoted when replying to a posted poll (the results cannot be quoted). Also: there's now automatically a blank line inserted between comment header fields and poll answers or the msg body text. Also: upon any malloc failure, the function now returns NULL. New functions: smb_msg_is_from() and smb_addpollclosure().
-
- 04 Dec, 2015 1 commit
-
-
rswindell authored
*after* the to-net-addr value (if there is one), so the header display makes more logical sense when viewing QWK netmail sent to a QWKnet node on the QWKnet hub system. Update the msgtotxt() prototype to follow the norm (e.g. passing through the mode argument to smb_getmsgtxt())
-
- 26 Nov, 2015 1 commit
-
-
rswindell authored
writemsg() now handles the anonymous name in the drop files (using WM_ANON for the first time?). A little mixed-case NETMAIL.MSG paranoia (for case-sensitive file systems). More use of SAFEPRINTF(). More use of removecase(). More attribute flags represented (with a single character) in the 'A' column of mail and sub-board message listings.
-
- 25 Nov, 2015 1 commit
-
-
rswindell authored
files and editors have the correct sender name in all situations (not just when posting on "real name only" sub-boards). "ANONYMOUS" postings work too, but mainly Internet & FidoNet Netmail were fixed. Use removecase() for NETMAIL.MSG (in case there's a lowercase version). Use subj in place of title and to in place of dest in argument names. Some constification of argument types.
-
- 02 Nov, 2015 1 commit
-
-
deuce authored
(read email)
-
- 03 Oct, 2015 1 commit
-
-
rswindell authored
If the user does not meet the configured "Access Requirements" of the external text/message editor that they have selected in their "default configuration", rather than changing their default setting to the internal message editor (a change that would become persistent as soon as the user's record was saved in the user database), use the internal editor rather than the configured external editor and don't change their configuration. This fixes the "problem" of a user having selected an editor which has "ANSI" as an access requirement, that user then logging on without ANSI support (e.g. not auto-detected) and then logging-off which would then revert their configured editor to the dreaded internal line editor, leaving the user to figure out how to re-select the external (e.g. full-screen) editor they had previous configured.
-
- 20 Sep, 2015 1 commit
-
-
rswindell authored
-