Skip to content
Snippets Groups Projects
  1. Mar 03, 2024
    • Deucе's avatar
      Fix issue when third SSH authentication attempt succeeds · 393241ca
      Deucе authored
      Because the session is activated on the *next* time through the
      loop, if the third attempt to authenticate (including public key)
      fails, it would leave the session inactive and fail to log in with
      a confusing error about an obsolete cryptlib.
      
      On success, decrement ssh_failed to ensure another pass through
      the loop.
      
      Also, add more debug logging around the auth so you can clearly
      see each failure, and log client_socket each time so it's clearly
      grouped.
      393241ca
    • Rob Swindell's avatar
      Add configurable SFTP session inactivity timer (default: 5 minutes) · bdc7fde8
      Rob Swindell authored
      Allow SFTP support to be enabled/configured in SCFG->Servers and
      SBBSCTRL->Terminal->Configure.
      
      SFTP session inactivity applies to 'H' exempt users too (intentionally).
      bdc7fde8
    • Rob Swindell's avatar
      Add some log lines for SFTP logins, non-filebase file transfers · 72bd94af
      Rob Swindell authored
      Q for Deuce: record_transfer() is being called multiple times for non-filebase
      file transfers, resulting in duplicate log messages. This doesn't happen for
      filebase file transfer (downloads, anyway).
      72bd94af
    • Rob Swindell's avatar
      Address the SFTP logon issues (timeout waiting for keypress, node status, etc) · f1276068
      Rob Swindell authored
      For SFTP sessions, there's no shell/terminal, so no need to run command
      shells (with their input timeouts, etc.). Reflect the node connection as
      "via sftp" in the node status. Handle node interruption signal. Probably more
      to do here with node status/actions (e.g. it'd be nice to set the action to
      "uploading or "downloading" when appropriate).
      f1276068
  2. Mar 02, 2024
  3. Feb 29, 2024
  4. Feb 28, 2024
  5. Feb 27, 2024
  6. Feb 17, 2024
  7. Feb 16, 2024
    • Rob Swindell's avatar
      UTF-8 improvements · 2584a864
      Rob Swindell authored
      Don't corrupt UTF-8 strings with SAFECOPY() (use new SAFECOPY_UTF8).
      
      Some terminals (notably, Windows Terminal) display zero width UNICODE chars
      as a single column-wide space. <sigh> Auto-detect the zero-width "width"
      (1 or 0) of the terminal during connection and UTF-8 auto-detection.
      
      getstr() works a lot better now with UTF-8 strings with wide chars (e.g.
      emojis), but likely much more to do.
      2584a864
  8. Jan 23, 2024
  9. Jan 21, 2024
  10. Jan 18, 2024
    • Deucе's avatar
      Whoops, missed this bit. · 8c276ee8
      Deucе authored
      Just running git commit --amend doesn't do -a it seems. :)
      8c276ee8
    • Deucе's avatar
      Move SSH authentication into answer() · ba2608b1
      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.
      ba2608b1
  11. Dec 28, 2023
  12. Dec 24, 2023
    • Deucе's avatar
      As I was starting to add support for detecting non-interactive · b99d161b
      Deucе authored
      SSH channels, I noticed that I hand't ever finished the terminal
      type/size "stuff", and while fixing that, I noticed that the hack
      for SyncTERM was done wrong.
      
      Fix the whole thing, and now Synchronet and SyncTERM both properly
      support terminal type and size over SSH.  It also looks trivial to
      support the SSH window size change message, but I'm not doing that
      tonight.
      
      Unfortunately, this is a patch on a patch, so is a bit fragile.
      It should really have the patches merged at some point.
      b99d161b
  13. Sep 24, 2023
  14. Mar 18, 2023
    • Rob Swindell's avatar
      Add terminal-client socket inactivity detection/disconnection · 53b26318
      Rob Swindell authored
      - New keys in [BBS] section of sbbs.ini:
        MaxLoginInactivity (default: 10 minutes)
        MaxNewUserInactivity (default: 60 minutes)
        MaxSessionInactivity (default: none/unlimited)
      - Each configured external program/door in SCFG can have its own maximum inactivity setting (or else the session max inactivity is applied)
      - moved node-specific sec_hangup to system-wide/shared max_getkey_inactivity (configured in SCFG->System->Advanced)
      - moved node-specific sec_warn (seconds of inactivity before sending warning) to inactivity_warn (a percentage of elapsed max inactivity before sending warning), also configured in SCFG->System->Advanced and used for both socket and getkey inactivity detection
      - Renamed JS console.inactivity_hangup to console.max_getkey_inactivity (old name remains as alias)
      - Renamed JS console.timeout to console.last_getkey_activity (old name remains as alias)
      - Removed JS console.inactivity_warning
      - Added JS console.max_socket_inactivity (current input_thread inactivity threshold)
      - New text.dat string: InactivityAlert (just contains 3 ^G/BELLs by default) used for non-visual inactive-user warning
      
      The MaxLoginInactivity setting in particular solves the problem of custom scripts (e.g. animated pause prompts) that just poll indefinitely for user input and never time-out  - these will no longer cause nodes to be tied-up with inactive/bot users at login.
      
      You may ask yourself, how did I get here? No, you may ask yourself: why configure these socket inactivity max values in sbbs.ini? The reason is consistency: sbbs.ini is where the MaxInactivity is configured for all the other TCP servers and services.
      
      This fixes issue #534 for Krueger in #synchronet
      53b26318
  15. Feb 19, 2023
  16. Jan 04, 2023
  17. Dec 30, 2022
    • Rob Swindell's avatar
      Common login control (e.g. via real name) using new find_login_id() function · 7679dcf8
      Rob Swindell authored
      Previously, many servers and services didn't support login by real name
      (e.g. issue #469) even if the sysop had that option enabled in SCFG.
      
      Move login control settings from node.ini to system (main.ini -> login)
      
      The 3 node toggle options:
      - Allow Login by User Number
      - Allow Login by Real Name
      - Always Prompt for Password
      
      ... have been now moved from SCFG->Nodes->Node x->Toggle Options to
      SCFG-System->Toggle Options.
      
      If you upgraded to v3.20a before now, you'll want to double-check these
      settings to make sure they're how you want them set. New upgraders that run
      upgrade_to_v320.js (e.g. via 'jsexec update') will get these settings migrated
      automatically.
      
      Added some error detection/logging to upgrade_to_v320.js when failing to open
      .cnf files.
      
      Constified some more user/login related function args and return types.
      7679dcf8
    • Rob Swindell's avatar
      9e654038
  18. Dec 02, 2022
  19. Oct 18, 2022
    • Rob Swindell's avatar
      Full read/write support of new user.tab userbase file · 8a22b246
      Rob Swindell authored
      Also resolved some 32 vs 64-bit 'long' issues/ambiguities that have long-remained. :-)
      
      This commit also removes logon.lst file support.
      
      There's a TODO block remaining in js_user.c for setting portions of a user's birthdate (e.g. just the year or month or day).
      8a22b246
  20. Feb 21, 2022
    • Rob Swindell's avatar
      Change the semantics of the "Allow Sysop Logins" setting in SCFG->System · 5a743878
      Rob Swindell authored
      As Andre pointed out while documenting this setting on the wiki, the option seemed confusing: if a sysop could not login with "system operator access", how could they login at all? Answer: they could not.
      
      This setting used to be called "Allow Remote Sysop Logins", back when there was the concept of a "local login", so setting this option to "No" would mean that user accounts with sysop access could only be used for *local* login. But in Synchronet v3, there's really no such concept as a "local login", so it was changed to just "Allow Sysop Logins" (period) and not a lot of thought given to how/why a sysop would actually set to this "No" or what the implications would be (presumably, nobody ever sets this to "No").
      
      So rather than just get rid if the option altogether, I changed it to mean: an account with sysop access (i.e. level 90+) can still login, but any action that normally requires the system password will not be allowed. This includes the sysop-actions available in the FTP server when authenticating with <user-pass>:<system-pass> as the password. The sysop-user can still authenticate (and login), but none of those sysop-actions will be available to them.
      5a743878
  21. Feb 11, 2021
  22. Nov 07, 2020
    • Rob Swindell's avatar
      Store client terminal information in node#/terminal.ini · c1637082
      Rob Swindell authored
      In preparation for node-spy applications that can support multiple terminal sizes/types (none exist yet). The file is updated whenever there is new/updated information about the client's terminal.
      
      Exposed as JS method: console.term_updated().
      c1637082
  23. Nov 02, 2020
    • Rob Swindell's avatar
      Manual terminal settings were cleared when logging in via SSH or RLogin · 5a7f918c
      Rob Swindell authored
      This appears to go back to a change Deuce made in 2004 (rev 1.41) where ANSI, COLOR, RIP and WIP user terminal settings were always cleared when logging in via RLogin.
      
      I happened to notice that manually enabling iCE color support wasn't working when logging in via RLogin (the iCE color flag would be cleared every login, but worked fine when logging in via Telnet). Upon investigation, I found that *all* user's manual terminal settings were cleared for either RLogin or SSH logins (copy/pasted bug). So... stop doing that. The method of dynamic terminal capability detection/checking has changed since 2004, so we should not need to mess with the user's misc flags.
      5a7f918c
  24. Oct 23, 2020
Loading