1. 30 Dec, 2020 3 commits
    • Rob Swindell's avatar
      Allow the max concurrent connections setting to be edited here · f00fe334
      Rob Swindell authored
      Also, disable the QWK packet creation timeout edit when QWK packet
      download support is disabled.
      f00fe334
    • Rob Swindell's avatar
      Implement max concurrent connections for FTP · 8b2b02e1
      Rob Swindell authored
      Support optional limit on concurrent connections from the same IP address to the FTP server by setting MaxConcurrentConnections in the [ftp] section of sbbs.ini. Unlike the mail server and the terminal server, this concurrent-connection count is not discounted by the number of authenticated logins. The default value is 0 (unlimited).
      
      This closes issue #156
      8b2b02e1
    • Rob Swindell's avatar
      Connection and logon linked lists need re-init for every recycle · b5d19603
      Rob Swindell authored
      Each list mutex is destroyed in the call to listFree() in cleanup(). Without a call to listInit(), the mutex is not recreated and thus the lists are no longer mutex-protected after a recycle. No negative consequences were observed from this issue, but a potential issue it is (was).
      b5d19603
  2. 29 Dec, 2020 3 commits
  3. 28 Dec, 2020 8 commits
  4. 27 Dec, 2020 4 commits
  5. 25 Dec, 2020 5 commits
  6. 24 Dec, 2020 1 commit
  7. 23 Dec, 2020 4 commits
  8. 22 Dec, 2020 3 commits
    • Rob Swindell's avatar
      Remove dynamic HTML index support from FTP server · 0d01544d
      Rob Swindell authored
      The days of browsers rendering HTML served-up via FTP are over, so remove this feature. This also removes all JavaScript support from the FTP server and that is a bit odd as it was one of the first Synchronet components for which I added JS support.
      
      Removing this feature was pretty painless; much easier than adding it was. The main motivation was less cruft to port to the file base in the works. There should be no more references to 00index.html anywhere at this point. Bye bye cool feature, we'll miss you.
      0d01544d
    • Rob Swindell's avatar
      Comment block update. No code change. · 438f8540
      Rob Swindell authored
      438f8540
    • Rob Swindell's avatar
      A little more ctype (isdigit isalnum) cleanup · f204efa8
      Rob Swindell authored
      A couple of stragglers here, the isalnum() call caught by an MSVC exception.
      f204efa8
  9. 21 Dec, 2020 9 commits
    • Rob Swindell's avatar
      Fix next-forced-exclusive event time calculation · d6a2af22
      Rob Swindell authored
      Jump the time forward (in 24-hour chunks) to find the next date/time the event will run rather than just adding 24-hours and assuming it's an event that runs every day (of the week or month) at a specific time.
      
      Also, expose the next-run-date/time for an event as a new `next_run` property for `xtrn_area.event[]` (in `time_t` format) for easier debugging of these kinds of issues.
      Also expose the error log level as a new property: `error_level` while we're here.
      d6a2af22
    • Rob Swindell's avatar
      20001425
    • Rob Swindell's avatar
      We don't actually have/use nspr.h for Windows builds · 260eb7c4
      Rob Swindell authored
      We only use NSPR to build libmozjs, not to build sbbs. So define our own MIN and MAX macros if they're not already defined (e.g. from sys/param.h on *nix). Such a simple can o' worms, but wormful can it was.
      260eb7c4
    • Rob Swindell's avatar
      a0284de9
    • Rob Swindell's avatar
      Update to previous fix for REP packing · 2ccb08c8
      Rob Swindell authored
      Thanks to TRMB for being the guinea pig, I see now that REP packets can't be opened in append mode because we write and then seek back and write some more in msgtoqwk(). Oops.
      2ccb08c8
    • Rob Swindell's avatar
      If minimum password length is > 8, use that length for random password · 540f62d6
      Rob Swindell authored
      length... for WitNik.
      540f62d6
    • Rob Swindell's avatar
      Fix 18 year old bug with updating/appending existing REP packets · faadb5b9
      Rob Swindell authored
      18 years, 10 months ago I introduced a bug whereby .MSG files in outgoing REP packets were *always* truncated before newly-exported messages were added. Even though the log message would say "Updating /path/to/HUBID.REP" (rather than the usual "Creating ...") it was actually truncating the .MSG file, thus discarding any existing messages that were not previously successfully sent (!). I'm not sure what the problem was I was trying to solve at the time (some "Unix .rep creation bug") - but the change I made at the time was most definitely was not the correct fix. :-(
      
      How I noticed this problem was the HEADERS.DAT Conference Number check I added to qwk_parse_header_list() back in August of 2019. I've been catching/logging those errors here on Vertrauen and collecting *.rep.bad files from occasional QWKnet node-submitted REP packets, but I didn't look into the cause until today: the HEADERS.DAT and VOTING.DAT files were being correctly appended even though the .MSG file was being truncated, so the files would be out-of-sync and this was the root-cause of the crossed-up message bodies/headers seen on DOVE-Net a year or more ago and apparently also the cause of occasionally lost messages from QWKnet (e.g. DOVE-Net) nodes.
      
      To trigger this bug from the node side, you'd have to create a REP packet with one or more message in it and then fail to send it to your hub (e.g. VERT), for any reason. And then when you attempt another pack/call-out, the previously packed messages would be lost and the HEADERS.DAT file would contain stale/out-of-sync information. 
      
      To simplify things, I'm now just using fopen(..., "ab") (append, binary) - fnopen() should not be needed when opening files in the temp_dir. In append mode, no subsequent fseek(..., SEEK_END) should be needed, so don't do that. And use fprintf() for its intended purpose.
      faadb5b9
    • Rob Swindell's avatar
      Comment header block update. Nothing else. · 6e451021
      Rob Swindell authored
      6e451021
    • Rob Swindell's avatar
      Don't log errno info for ERR_CHK errormsg() calls · 48f73ca1
      Rob Swindell authored
      The errno (global error number) information is not relevant for any sbbs "checking" type errors.
      Also, use safe_strerror() for thread-safe errno descriptions.
      48f73ca1