Skip to content
Snippets Groups Projects
  1. Mar 04, 2023
  2. Mar 03, 2023
    • Rob Swindell's avatar
      Introduced user download_cps property · c27b78a9
      Rob Swindell authored
      Will track the user's last succsesful file-download transfer rate
      in characters (bytes) per second.
      
      I'm not calculating or storing this rate yet, but will be soon. This
      will make the file download ETAs more realistic and no longer
      hard-coded to 3000 cps (which now defaults to 10000 cps, to keep up
      with the times).
      
      New field added to user.tab placed adjacent to the other File xfer stats,
      which means the leech attempt counter (likely always 0) was moved to the end
      of the user record.
      c27b78a9
    • Rob Swindell's avatar
      Better access enforcement to files in batch download queues · f2adb547
      Rob Swindell authored
      If a file gets added to a batch download queue that a user doesn't have download-access to (at the time of batch download), deal with that gracefully and consistently.
      
      start_batch_download():
      - Now checks current user access to download the file in both single-file and batch modes
      - Now performs credit-check in single-file mode (wasn't doing so previously)
      - totalsize of multi-file batch download queue is now calculated again (apparently removed/broken in the new filebase conversion of v3.19), so download ETA should be calculated more accurately (?) again
      - Use gettimetodl() to calculate each file's download time for multi-file downloads
      - Using new putnode_download() method to write node downloading "action" and ETA-in-aux fields
      - The node status wasn't being updated at all before start of download in single-file mode - fixed
      
      create_batchdn_lst() :
      - Checks each file still downloadable by the user and if not, removes from the queue (and the generated list file).
      - Performs credit check and removes files that exceed available user credit
      - returns true only when 1 or more files is added to the batch download list file
      
      addtobatdl()
      - Removed redundant 'D' restriction check - this is handled by can_user_download() check already.
      - Use the 'reason' out parameter from can_user_download() to determine which error string to display (not always CantDownloadFromDir).
      f2adb547
    • Rob Swindell's avatar
      Remove defunct files from batch download queue during logon · 9308d1bc
      Rob Swindell authored
      If a user doesn't have access to download a file that's in their batch queue, remove it without saying anything to the user (but log a notice-level message about it) during logon. Files that no longer exist in the filebase are treated the same way.
      9308d1bc
    • Rob Swindell's avatar
      Use the new putnode_downloading() function · c97d71de
      Rob Swindell authored
      Eliminate some copy/pasta.
      c97d71de
    • Rob Swindell's avatar
      Avoid possible divide-by-zero in gettimetodl() · e57da65b
      Rob Swindell authored
      Default to 100000 (cps) if passed a rate_cps argument value of 0.
      e57da65b
    • Rob Swindell's avatar
      Create sbbs_t::putnode_downloading() · 71ed7426
      Rob Swindell authored
      Migrated from sbbs_t::start_batch_download(), this just calculates the ETA (of transfer completion) and writes to the node's aux field in the proper format.
      71ed7426
    • Rob Swindell's avatar
      The NoAccess* text.dat strings are not appropriate 'reason' codes · 65ce3484
      Rob Swindell authored
      These text.dat strings require an argument (and normally used with the NOACCESS @-code which uses the noaccess_str and noaccess_val member variables), so not appropriate to use as a reason code here. Use more generic (no argument) text.dat item numbers instead.
      65ce3484
  3. Mar 02, 2023
    • Rob Swindell's avatar
      Re-publish the server error_count topic in mqtt_startup() · 0cdde0cd
      Rob Swindell authored
      Fixes a stale non-zero error_count retained topic.
      0cdde0cd
    • Rob Swindell's avatar
      Fix false FORGED mail header 'FROM' field detection/rejection · 7727cc8b
      Rob Swindell authored
      Pretty much any From field that contains an '@' in the username portion
      was subject to comparison to the full email address, but clearly some of
      these rejected emails were not forge attempts:
      
      'Chris @ StubHub' vs 'events@mail.stubhub.com'
      'Eric S. Raymond (@esr)' vs 'gitlab@mg.gitlab.com'
      
      Fixed by requiring that the sender name is actually a well-formed Internet
      email address using smb_netaddr_type(), which was also recently improved to
      be more accurate.
      
      Unrelated change: include reverse-path (email address for bounces) in
      ILLEGALLY-LONG body and header line log messages (usually SPAM from what
      I can tell).
      7727cc8b
    • Rob Swindell's avatar
      netaddr_type() now returns NET_NONE when passed null or undefined · d8e4182c
      Rob Swindell authored
      ... instead of undefined, to match what the documentation already stated.
      d8e4182c
    • Rob Swindell's avatar
      Better automatic network address type detection · ce5f8ccc
      Rob Swindell authored
      smb_netaddr_type():
      - if passed NULL or a string that begins with whitespace, now returns NET_NONE.
      - if passed a string that begins with '@', now returns NET_UNKNOWN.
      - if the user.name portion of an otherwise value Internet email address
        contains a space, now returns NET_NONE.
      
      smb_get_net_type_by_addr()
      - if passed a string that begins with '@', now returns NET_UNKNOWN.
      - if passed a string with space following '@', will now return NET_UNKNOWN.
      - if passed a string without a dot following '@', will never return NET_INTERNET.
      
      Unrelated change: Add the missing FILE attribute to smb_msgattrstr()
      ce5f8ccc
  4. Feb 28, 2023
  5. Feb 27, 2023
    • Rob Swindell's avatar
      Update/use newuserdefaults() · 8d9183e9
      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.
      8d9183e9
    • Rob Swindell's avatar
      Make new user QWK-related and Chat-related settings configurable · 56b8fd86
      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
      56b8fd86
    • Rob Swindell's avatar
      Add configurable chat section module, defaults to "chat_sec" · 87bee5d8
      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.
      87bee5d8
    • Rob Swindell's avatar
      Add optional/configurable feedback module · b0a85a1e
      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
      b0a85a1e
    • Rob Swindell's avatar
      019b259f
  6. Feb 26, 2023
  7. Feb 25, 2023
  8. Feb 23, 2023
  9. Feb 22, 2023
    • Rob Swindell's avatar
      Use the new UIFC input mode flags to trim spaces where inappropriate · f5e58c70
      Rob Swindell authored
      from sysop input, automatically.
      f5e58c70
    • Rob Swindell's avatar
      Add uifcapi_t.kmode that can be used to set global key-input mode flags · 640c1355
      Rob Swindell authored
      e.g. this a way to set the K_TRIM mode globally for all keyboard input
      640c1355
    • Rob Swindell's avatar
      Add input K_TRIM and K_NOSPACE mode flags · 5e0d2ef7
      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.
      5e0d2ef7
    • Rob Swindell's avatar
      Fix corrupted RFC822 msg headers when a header field was > 1024 chars · b77a0ba6
      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.
      b77a0ba6
  10. Feb 21, 2023
Loading