Skip to content
Snippets Groups Projects
  1. Jan 21, 2024
  2. 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
  3. Dec 28, 2023
  4. 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
  5. Sep 24, 2023
  6. 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
  7. Feb 19, 2023
  8. Jan 04, 2023
  9. 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
  10. Dec 02, 2022
  11. 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
  12. 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
  13. Feb 11, 2021
  14. 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
  15. 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
  16. Oct 23, 2020
  17. Sep 17, 2020
  18. Aug 16, 2020
  19. Aug 02, 2020
  20. Aug 01, 2020
    • rswindell's avatar
      Auto-detect non-Telnet connections to the terminal server's Telnet port and · 40d829f2
      rswindell authored
      automatically revert to Raw/TCP mode. This resolves the issue of users that
      connect using modem/serial emulators over TCP that do not actually support Telnet and then either try to transfer files, which usually will not work due to escaped (or unescaped) IAC (0xFF) characters, or the user may be sent Telnet Go Ahead (GA) sequences which may display as periodic garbage in their terminal program.
      
      This seemed like a better solution than having (yet another) dedicated terminal server port for "raw" connections over TCP, though a "raw" port still might not be a bad idea for a future enhancement. RLogin is already super close to "raw", so it's probably not really necessary to have another port configured/listening.
      40d829f2
  21. May 27, 2020
  22. May 08, 2020
    • rswindell's avatar
      Add mouse hot spot support: · 87c9982c
      rswindell authored
      - hot spots are clickable screen areas (e.g. in menus and prompts) that   generate key-strokes
      - commands may be from 1 to 127 ASCII-characters in length
      - currently using the X10 mouse reporting mode, may change
      - all mnemonics strings (~Example) are automatically hot-spots
      - The new ~ @-code defines a hot spot
      - Any screen-clear operation clears all hot spots
      - sbbs now tracks the current screen (cursor position) row
      - eliminated the old "tos" (top-of-screen) boolean (row == 0 indicates "tos")
      - created an sbbs_t::ungetstr() method
      - keep track if in pause (hit a key) prompt, for special mouse behavior
      
      new JS console object:
      - row property
      - tos property is now read-only (and deprecated)
      - new methods:
        add_hotspot()
        clear_hotspots()
        scroll_hotspots()
      
      redrwstr() gets some UTF8 touch-ups as part of this commit. <shrug>
      87c9982c
  23. Apr 08, 2020
  24. Mar 31, 2020
    • rswindell's avatar
      Added SCFG->System->Toggle Option->Require Sys Pass for Sysop Login · 57afe753
      rswindell authored
      (should default to current behavior: Yes). Set to No to not require the system
      password while logging in as a system operator (level >= 90). The system
      password will be required while logged-on and performing administrative-like
      operations.
      Added by request from Altere.
      57afe753
  25. Sep 27, 2019
    • rswindell's avatar
      Support UTF-8 auto-detection for MacOS Terminal v2.8.3 (404.1): · 96eff48e
      rswindell authored
      Unexpectedly, a ZWNBSP (U+FEFF) received/echoed by the MacOS Terminal while in
      the first column causes a subsequent cursor position report to indicate the 2nd
      column as the current only. I suppose in some weird world a zero-width
      character can can't as a column position. So if the cursor position has moved
      less than 2 columns (not exactly 0 columns), then consider it a UTF-8 terminal.
      Non-UTF-8 terminals normally move the cursor 3 columns when echoing a UTF-8
      encoded ZWNBSP. So to summarize, when echoing a ZWNBSP:
      
      - Non-UTF-8 terminals: moves 3 columns
      - MacOS terminal: moves 1 columns
      - Other UTF-8 terminals: moves 0 columns
      96eff48e
  26. Aug 21, 2019
    • rswindell's avatar
      Always use a passthru (proxy) socket when executing external programs that · 53884cce
      rswindell authored
      use socket I/O (e.g. sexyz, door32.sys doors, sync-xsdk doors) - not just when
      the client is connected via SSH. This solves a number of problems:
      - programs that change socket options
      - programs that don't support non-CP437 charsets (e.g. PETSCII, UTF-8)
      - programs that don't support Telnet-IAC escaping
      
      This greatly simplifies (reduces the need for) input_thread locking.
      
      The passthru_thread now handles chunks of up to 4000 bytes per transfer
      between socket and ringbuf, instead of a char at a time, greatly improving the
      performance.
      53884cce
  27. Aug 13, 2019
  28. Jul 16, 2019
    • rswindell's avatar
      Move login username/number parsing into a the C++ code (from login.js) since we · be7a590d
      rswindell authored
      need that internal for SSH and RLogin support of fast-logons.
      So, now, even if logging in via SSH or Rlogin, the sys_status SS_FASTLOGON
      flag will be set when the user specifies "!username-or-number" during logon and
      then the logon.js can use that to determine what to display (or not) to the
      user, during logon.
      
      The QWK logon support ("*username-or-number") is also handled in this new
      sbbs_t method: parse_login().
      
      This means the fast_logon_char is no longer configurable (hard-coded to '!')
      and the modopts.ini options are going to be parsed by logon.js from the [logon]
      section (not the [login] section).
      
      You still must set fast_logon=true in the [logon] section of modopts.ini to
      enable the fast-logon option for users.
      be7a590d
  29. Jul 12, 2019
  30. Jun 28, 2019
    • rswindell's avatar
      Initial support for UTF-8 terminals. At this time, just performs charset · 11d3f59f
      rswindell authored
      translation from CP437 -> UTF-8 and only when using high-level text output
      functions - so the output from native/DOS doors and scripts that use low-level
      output methods won't be translated.
      UTF-8 is auto-detected (only) at this time during answer (before login) by
      sending a ZWNBSP and checking (via ANSI) if the cursor position moved - an
      idea "borrowed" from Ozz Nixon (aka SqZ).
      
      This commit requires the new "encode" library (src/encode), so you may need
      to perform a cvs checkout to get that module!
      11d3f59f
  31. Oct 25, 2018
    • rswindell's avatar
      Update display/menu file selection logic based current terminal capabilities. · 68e52292
      rswindell authored
      Newly supported files: text/menu/*.msg (higher priority than .asc when the
      terminal supports IBM extened ASCII, aka CP437). These are the same format
      as .asc files (and supported more readily by PabloDraw).
      Newly supported files: text/menu/*.seq - native PETSCII files for PETSCII
      terminals only. Support in the underlying putmsg() function is still
      pending.
      Also, the text/*.msg files now supports alternative file formats for
      RIP/ANSI/PETSCII, if the files exist.
      WIP menu support removal.
      The new menu/display file selection priority will be detailed on
      wiki.synchro.net, but rest assured, it's backwards compatible with
      the previous/old priority with the exception of the removal of WIP support
      and HTML support.
      68e52292
Loading