- Jan 21, 2024
-
-
Deucе authored
Previously, once a pubkey was attempted, you could not use a password.
-
Deucе authored
-
Rob Swindell authored
328:25: warning: ‘pubkey’ may be used uninitialized
-
Deucе authored
-
Deucе authored
-
Deucе authored
TLS 1.2. For static services and JS sockets, add a new tls_minver socket property which can be set to use a lower minver (down to the wildly insecure TLS 1.0). TLS 1.0 and 1.1 have been not reccomended since 2015, and deprecated since 2021.
-
-
Rob Swindell authored
The client_socket_dup is overwritten after with the return value of accept(), so this was likely a socket/handle leak (since commit 74470573, 17 years ago). Noticed this only after logging a new error in an SSH connection when this call to DuplicateHandle() failed for some reason (WinError 6), but it seems like it's been redundant code for a long time now. So just ace it and possibly fix a resource leak.
-
- Jan 20, 2024
-
-
Rob Swindell authored
scfgnet.c:1463:25: warning: result of comparison of constant 100000 with expression of type 'uint16_t' (aka 'unsigned short') is always true
-
Deucе authored
really no useful way to recover from failure.
-
Rob Swindell authored
-
Rob Swindell authored
This should fix the Clang warning that Deuce reported: str.cpp:131:18: warning: passing an object that undergoes default argument promotion to 'va_start' has undefined behavior
-
Rob Swindell authored
-
Rob Swindell authored
Still using BOOL where we need Win32 API compatibility. Using JSBool instead of BOOL or bool where it matters. Changed most relevant TRUE/FALSE to true/false too (though it's not as critical). You shouldn't need to #include <stdbool.h> anywhere now - gen_defs.h should do that automatically/correctly based on the language/version/tool. In C23, stdbool.h isn't even needed for bool/true/false definitions (they're keywords), so we don't bother including stdbool.h in that case. Microsoft didn't define __STDC_VERSION__ in their older tool chains (even though they were C99 compatible and had stdbool.h), so we use a _MSC_VER check to know that there's a stdbool.h we should use in that case. For other/old compilers (e.g. Borland C) we #define bool/true/false following the pattern of stdbool.h (doesn't use a typedef). I didn't convert UIFC yet. This addresses issue #698
-
Deucе authored
TLS clients don't (currently) add a certificate, so there's no need to delete it.
-
Deucе authored
Use cryptDestroySession() instead.
-
Deucе authored
-
Deucе authored
-
Deucе authored
With this, it's not strictly necessary to clear cert_list in ssl_sync() when the certificate changes, but it's still a good idea to prevent unusable memory from being held onto.
-
Rob Swindell authored
warning: value computed is not used
-
Deucе authored
Now each lock has an easily understandable purpose, and covers the lowest possible amount of code.
-
- Jan 19, 2024
-
-
- Jan 18, 2024
-
-
Deucе authored
It looks like Windows actually uses the name for matching existing events, so if two events have the same name, they end up being the same object.
-
Deucе authored
On Win32, the name param is an LPCSTR which apparently is Microsoft talk for const char *. In C we're allowed to do whatever we want, but in C++, this matters more.
-
Deucе authored
Just running git commit --amend doesn't do -a it seems. :)
-
Deucе authored
This should fix a long-standing issue where someone could connect to the SSH port and do nothing, which would prevent other incoming terminal sessions from being accepted until it times out. Unfortunately, this means that Synchronet can't send any data until authentication is completed, which means useful messages about why you're being disconnected (ie: "Sorry, all terminal nodes are in use or otherwise unavailable.") as well as usless information nobody ever cares about (ie: The IP you're connecting from, that it is resolving your hostname, etc). can no longer be sent to the user.
-
- Jan 17, 2024
-
-
Rob Swindell authored
-
- Jan 16, 2024
-
-
Rob Swindell authored
Reported by Max (WESTLINE)... Introduced in commit 75c5c9e5, since we are now calling the set_state() callback periodically, and in sbbsctrl, it sets/resets the pause button checked (depressed) state in response to this callback (should it?), this was resetting the pause button checked/depressed state peridically (at the configured sem file check interval, default 2 seconds). The fix: if the new server state is the same as the previously set server state, don't call the set_state() callback. I considered this as a potential optimization when I first wrote that commit, but didn't see any obvious downside to calling the set_state() callback redundantly. Now that I see a downside, let's implement this saving/checking of the state to avoid redundant "set" calls.
-
Rob Swindell authored
... with a socket descriptor value of -1.
-
Rob Swindell authored
The 5th character must be a digit. Prevent future stupidity such as happened with recently added and then fixed NODE_USER @-code.
-
- Jan 15, 2024
-
-
Rob Swindell authored
Since "NODE*" is a match for a node number status (ugh), and this comparison happened before the comparison for "NODE_USER", we'd never hit that condition. Thought I tested this before original commit, but I guess I did not. Oops.
-
Rob Swindell authored
This recent enhancement (Commit 61a3ab2d) introduced security and usability concerns. So I created (and am now using where requested) a wrapper for formatting text.dat/ini strings which will automaticlaly detect @-code encoded strings and expand/use them *only* (instead of printf %-specifiers). This might impact issue #696 since although unintentionally, it actually was possible to mix @-codes and %-specifier usage in certain (node status) text.dat/ini strings, but that should not be possible now. It's either/or: @-codes or %-specifiers, not both.
-
- Jan 13, 2024
-
-
Rob Swindell authored
Needed for exactly reproducing built-in node status string formatting using @-codes (only).
-
Rob Swindell authored
Note: format specifiers (e.g. %s) cannot be combined with @-codes (use one or the other, not both). Fixes issue #696 If you need additional text strings to support @-codes, you'll have to specify them explicitly in feature request issues.
-
Rob Swindell authored
We have checks/loops/timeouts waiting for active clients to disconnect and child thread threads to terminate whenever shutting down or recycling already, so this should be safe. This pretty simple change fixes issue #236 (can't terminate server under heavy load). Also as part of this commit, introduced the ability to "pause" a server (prevent it from accepting new connections) with the ctrl/pause semaphore file or via the MQTT server/pause (and resume) topics. This feature is useful when debugging server issues where you don't necessarily want to fully shutdown/terminate the server, but don't want any new connections to be accepted (the listen backlog will fill up with incoming connections though). Unlike a server shutdown, a server pause can be "undone" via MQTT (by publishing a message to the "resume" topic). The "pause" semaphore file is just an "existence" semaphore file - its date/time stamp doesn't matter. If the file exists, the server will enter a paused state (and periodically log messages to that fact) until the semfile is deleted. This server pause feature is not the same as the pause button function in sbbsctrl, which just pauses server log output.
-
- Jan 11, 2024
-
-
Rob Swindell authored
that doesn't log an error
-
- Jan 10, 2024
-
-
Rob Swindell authored
Support was accidentally removed as part of commit 22e8d2e3, meaning the ftpalias.cfg wasn't used at all in responses to the MLSx commands as reported by Max (WESTLINE) using Total Commander, FileZilla and Directory opus. The traditional "LIST" commands still worked fine with ftpalias.cfg contents just fine. The reason this code was accidentally removed was due to the errant copy/pasted comparison with startup->html_index_file that did not belong here and made the block appear related to HTML index file generation. It was not. This was just a bug in the initial implementation of MLSx support in commit d4deb4b3. Also included in this commit: - Return the date/size of the user's QWK packet file, if it exists, in MLSx response. - send_mlsx_entry() won't report negative time_t values as file modify dates (flength returns -1 upon failure/file-not-found). - get_owner_name() returns the string, making it easier to use in function calls. There appears to still be some work to do to make the MLSx commands fully compliant with RFC 3659 (e.g. "mlst filename" from ftpalias.cfg should work but does not), but at least FileZilla displays ftpalias.cfg files and directories correctly now.
-
- Jan 09, 2024
-
-
Rob Swindell authored
-
Rob Swindell authored
Reusing the variable 'str' here for multiple purposes meant the QWK packet filename was overwritten by the owner name (the system's BBS-ID): ftp> mlsd 229 Entering Extended Passive Mode (|||2001|) 150 Opening ASCII mode data connection for MLSD. Type=file;Perm=r;UNIX.ownername=VERT; 00index Type=cdir;Perm=elc;UNIX.ownername=VERT; / Type=file;Perm=r;UNIX.ownername=VERT; VERT That last file there should have been "VERT.qwk"
-
Deucе authored
Since lock_ssl_cert() is a reader lock, there shouldn't be a whole lot of contention on aquiring it anyway, and we can thundering herd our way out of it when it clears.
-