1. 29 Jan, 2022 1 commit
  2. 28 Jan, 2022 5 commits
    • Rob Swindell's avatar
      Use sbbs.ini [web] FileVPathPrefix to configure web filebase prefix · acd808d3
      Rob Swindell authored
      It bothered Deuce having a web server setting in scfg_t/SCFG->File Options, so I moved this setting to [web_]startup_t and the sbbs.ini file.
      
      The downside is that file_area.web_file_prefix is no longer available to JS environments outside of the web server and terminal server, but meh, probably not going to use it elsewhere anyway? I can imagine use cases for JSexec scripts to want to generate URLs to filebase files. If that ends up being a need, they'll have to find and parse the "right" sbbs.ini file to determine the vpath prefix. 
      acd808d3
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      fc3addb6
    • Rob Swindell's avatar
      Add 'vdir' (virtual directory name) member to lib_t and dir_t · 51ab0a7f
      Rob Swindell authored
      This change is just for internal consistency and convenience right now: the lib_t.vdir is a "sanitized" copy of the lib's short name (spaces are converted to dots or underscores based on the logic that the FTP server used in dotname()) and the dir_t.vdir is just a pointer to the dir's code_suffix. No other permutations are made (e.g. lower-casing the strings). Although the virtual directory names of libraries will now appear in mixed case in the FTP server (previously, they were all lowercase), the directory names are actually treated case-insensitively, so it should not make any difference. If forced-lowercase is preferred for some reason, please speak up.
      
      This change leads the way to eventually, possibly, making these virtual path elements sysop-configurable. For now, it's just better to have a *copy* of the lib's short name that is appropriately modified to make a suitable directory name and have that vpath element available globally (to all servers and services) in a consistent manner.
      
      So Nelgin asked (about filebase access via http), what if the library short name has a space in it? The answer now is, the spaces are replaced with a '.' or '_' (if there's already dots in the name).
      51ab0a7f
    • Rob Swindell's avatar
      Fix up the directory internal code suffix help text · 19fbeaea
      Rob Swindell authored
      ... more aligned with a sub-board's internal code help text.
      19fbeaea
  3. 27 Jan, 2022 2 commits
    • Rob Swindell's avatar
      Allow files to be removed from batch queues by number · 86e39e82
      Rob Swindell authored
      This fixes issue #328.
      
      The user actually *can* remove files from the batch queues in v3.19b, but you have to type the filenames which is not obvious from the prompt which implies you need to type the file index position (e.g. '1' for the first file in the queue). In all Synchronet versions prior, you could only remove by number (and not by name).
      
      The fix is to allow either the number or the name of the file to be entered at the RemoveWhich prompt and the file is removed from the queue successfully.
      
      Thanks Ragnarok!
      86e39e82
    • Rob Swindell's avatar
      Ignore VDD WriteFile() failures if the child process has terminated · 9445866c
      Rob Swindell authored
      If the child process (e.g. door game) has terminated, don't log errors if/when WriteFile() to the mailslot fails. This would be expected as the mailslot is created/owen-by sbbsexec.dll which would also terminate along with the process, thus closing the mailslot. 
      
      Hopefully resolves the errors reported by DesotoFireflite (VALHALLA).
      9445866c
  4. 26 Jan, 2022 2 commits
  5. 23 Jan, 2022 4 commits
    • Rob Swindell's avatar
      create_archive() will skip directories in supplied file_list · 77e2d88e
      Rob Swindell authored
      The file_list[] parameter was expected to contain only files, but the directory() function (used to create that file_list[]) returns a list of all directory entries, including sub-directories. I could (and maybe will) add an option to directory() to only include files or dirs, but this seemed the more direct fix for the problem reported by DesotoFireflite (VALHALLA):
      
      TickIT's nodelist_handler.js appears to be creating and leaving behind a sub-directory of the temp directory, triggering this error:
       1/23  11:36:56a  QNET libarchive error -1 (13 opening c:\SBBS\temp\event\nodelist_handler/) creating c:\SBBS\data\VERT.REP 
      
      Why isn't the temp directory fully cleaned up after/between events? That's another thing to look into.
      77e2d88e
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Add case fall-through comment · ca9bac80
      Rob Swindell authored
      To address CID 345626
      ca9bac80
    • Rob Swindell's avatar
      Basic PETSCII output column/line counting in putmsg() · 09a32c0d
      Rob Swindell authored
      When printing a PETSCII Sequence (.seq) file, count the lines/rows and columns similar to how we would if we were using outchar() (but we don't, we use the lower-level outcom() to bypass any translations).
      
      This is related to issue #325:
      PETSCII seq files seem to display just fine, the problem I saw was with the auto-pausing (e.g. before a screen-clear) after displaying them.
      09a32c0d
  6. 22 Jan, 2022 3 commits
    • Rob Swindell's avatar
      Handle duplicate names and aliases better · 55be2129
      Rob Swindell authored
      So some cute user (mine@demon.com) created a new user account on Vertrauen with the alias and real name of "Rob Swindell". Funny.
      
      Now, duplicate user aliases are already and always forbidden (even those that just vaguely match an existing alias) - everyone expects those to be unique. And we already forbid new user real names to match an existing user alias (check_name() enforces this and we use that when checking new user real names too), however, nothing prevented a new user account's alias from matching another existing user's real name. And this is a problem:
      
      1. This new/fake user could post a message or send an email/netmail and it would appear to possibly come from the other/original user (we do have options to send mail and post messages using real names)
      
      2. Received email for real names is supported and if enabled, this second account could be used to intercept mail for the original/first account if it was receiving mail for the original/real user's real name.
      
      So disallowing a new user's real name to match an existing alias fixes one problem. 
      However, systems *can* be configured to allow duplicate real names (which is convenient for QWKnet accounts, for example) and so we needed another solution for that problem: meet the 'O' restriction. This restriction flag will prevent a user account from posting messages no sub-boards that require real names. New user accounts that have a duplicate real name (the same as another user account's real name), will automatically be assigned the 'O' restriction flag. Systems that don't allow duplicate real names wouldn't have this issue in the first place.
      
      Scripts that allow the creation of new user accounts might need some updating to match this security logic.
      55be2129
    • Rob Swindell's avatar
      Call can_user_post() rather than manual checks · 9ae0448c
      Rob Swindell authored
      Eliminate some redundant code. Use the userdat lib function provided for this purpose.
      9ae0448c
    • Rob Swindell's avatar
      Remove some commented-out code · cac09153
      Rob Swindell authored
      Posting restrictions are handled one QWK-message at a time (and have been for a long time). No actual change here.
      cac09153
  7. 20 Jan, 2022 4 commits
  8. 19 Jan, 2022 2 commits
  9. 18 Jan, 2022 3 commits
  10. 17 Jan, 2022 1 commit
  11. 16 Jan, 2022 5 commits
    • Rob Swindell's avatar
      Fix printf format issue in previous commit. · 27f8668c
      Rob Swindell authored
      27f8668c
    • Rob Swindell's avatar
      Add JS properties to assist with web-access to filebase · 9f772107
      Rob Swindell authored
      file_area.web_vpath_prefix
      file-metadata-object (return value of FileBase.get()).vpath
      9f772107
    • Rob Swindell's avatar
      Correct JSDOCS for get_path, get_size, and get_time methods · 3e5326e0
      Rob Swindell authored
      These methods also (optionally) accept a file-meta-object as an argument.
      3e5326e0
    • Rob Swindell's avatar
      Add support for web request path aliases (defined in web_alias.ini) · f2858ee6
      Rob Swindell authored
      Similar to the ctrl/ftpalias.cfg file, the new ctrl/web_alias.ini file (optional) can be used to map a portion (the first portion, only) of a web request path to a different physical or virtual path. For example, I'm using it to map:
      /Synchronet/ = /files/main/sbbs/
      for filebase access to my main->sbbs directory of Vertrauen's filebase using a /Synchronet/* web request (i.e. for slightly prettier or shorter custom URLs, if desired).
      f2858ee6
    • Rob Swindell's avatar
      Add direct filebase access from the web server (optional) · 1ab2956b
      Rob Swindell authored
      By setting SCFG->File Options->Web File Virtual Path Prefix to something (e.g. "/files/"), all HTTP or HTTPS requests to the Synchronet Web Server with request paths beginning with this prefix will be interpreted as filebase access requests (with full access control enforcement). This is configured here (in SCFG) rather than, say, the [web] section of sbbs.ini, because I have plans for the terminal server to use this prefix to generate Web-URLs for files to display or email to users.
      
      Currently, only requests to *files* (for download) are supported (no index generation, file information, etc. and definitely no upload support). Full access control (using HTTP auth, not cookies) is used for libraries and directories with controlled access. Credits are deducted and awarded and uploaders are notified of downloads, as one would expect. Requests to any dynamic-web-content files (e.g. .SSJS, .XJS, etc.) will be treated as static file download requests (no script will be executed).
      
      I'm reusing the same virtual path parsing logic from the FTP server (moved to the userdat lib), so the virtual path to a file for download would be, for example, http://yourdomain/files/lib/dir-code/filename.ext
      
      The main motivation for this feature is: FTP-links in email and web pages are just not useful to many users these days and I don't think that sysops should have to rely on a SSJS web UI (e.g. ecWebv4, cool as it is), to provide web-access to the filebases. Using this feature, you can share simpler/shorter web links to your files that will be more enduring.
      1ab2956b
  12. 14 Jan, 2022 2 commits
    • Rob Swindell's avatar
      Address Coverty reported issue about dereferencing a NULL pointer · 063d4700
      Rob Swindell authored
      CID 345291
      It's actually a false positive because if an extension (".suffix") exists in filespec, it must also exist in newfilespec since it's a copy, but whatever. It's better form to check.
      063d4700
    • Rob Swindell's avatar
      Disable libarchive support for creating/appending bundles · 55962a41
      Rob Swindell authored
      libarchive apparently cannot be used for in-place modification of (e.g. adding files to) existing archives, so if a bundle already exists, this code would over-write it with a new archive containing just the latest packet. Issue reported by acn (IMZADI) via DOVE-Net.
      
      I could and might create an update_archive() function which extracts and re-creates an archive with additional files, but since I don't have that yet, just disable this for now and always use an external archive utility to create or update bundles (so again, an "Archive" configuration is required in your sbbsecho.ini file, which you most likely already have).
      55962a41
  13. 13 Jan, 2022 4 commits
  14. 11 Jan, 2022 2 commits