Skip to content
Snippets Groups Projects
  1. Apr 16, 2024
    • Rob Swindell's avatar
      Increase FidoNet echo/area tag max length from 40/50 to 60 chars · f3a09044
      Rob Swindell authored
      Update to commit 85a2de04 (2 years ago).
      
      FSC-74 specifies:
      "The conference name shall be no more than 60 characters in length."
      
      SCFG was limiting sub and dir area-tags to 40 chars and SBBSecho was limiting
      area tags to 50 chars in length.
      
      FSC-74 isn't a standard, but lacking this detail in FTS-4 and considering it
      comes from the same authoritative source (the Conference Mail System User
      Manual), I think it's the best source of truth we have.
      
      Also, since we're no longer using .cnf files, we don't need different max
      area-tag lengths between SBBSecho and SCFG structs - they all now use the same
      macro: FIDO_AREATAG_LEN
      f3a09044
  2. Apr 10, 2024
    • Rob Swindell's avatar
      Resolve CID 492287 - we don't care about the fexistcase() return value here · 76b5c7f4
      Rob Swindell authored
      We're just using it to "fix" the case, if the file indeed exists.
      76b5c7f4
    • Rob Swindell's avatar
      Create/use sbbs_t::flush_output(timeout) · 424dfe10
      Rob Swindell authored
      If client socket is connected, wait up to the specified timeout period (in ms)
      for the output buffer to be emptied.
      
      This is much preferred over blindly calling mswait() after sending some data
      (e.g. a file) and possibly waiting much longer than necessary.
      424dfe10
    • Rob Swindell's avatar
      Reduce the Terminal Server thread outcom timeout from 80 seconds to 800 ms · 221507a8
      Rob Swindell authored
      Since the Terminal Server is a single thread, let's not block for long
      periods of time trying to send bytes to a client (e.g. send the badip.msg
      file contents to a client with a blocked IP address), effectively DoSing the
      terminal server.
      
      This should address the problem reported via IRC:
      <theviper4> │Apr  9 15:38:11 viper-bbs synchronet: term Terminal Server timeout(outcom) 0000 0000
      <theviper4> │Apr  9 15:38:35 viper-bbs synchronet: term Terminal Server !ERROR 110 sending on socket 39
      <theviper4> │Apr  9 15:38:35 viper-bbs synchronet: term Terminal Server !ERROR 32 sending on socket 39
      <theviper4> │Apr  9 15:38:35 viper-bbs synchronet: term Terminal Server !ERROR 32 sending on socket 39
      <theviper4> │Apr  9 15:38:36 viper-bbs synchronet: term 0039 Telnet !CLIENT BLOCKED in ip.can: 117.95.153.33
      
      Also, make the outcom timeout error message more helpful (e.g. include the
      sock descriptor of the client) and don't use the old rioctl() function
      here any more.
      221507a8
  3. Apr 08, 2024
  4. Apr 06, 2024
    • Rob Swindell's avatar
      Introduce system.git_time · bf772802
      Rob Swindell authored
      This is the time_t (seconds since Unix epoch, Jan-1-1970 UTC) date/time of the
      current (most recent) Git commit used to build the running binary.
      
      If a JS developer wants to check if a build is recent-enough to include some
      change, this is the property they should use to check (with >= comparison).
      bf772802
    • Rob Swindell's avatar
    • Rob Swindell's avatar
      Save/restore js.scope property value in sbbs_t::js_execfile() · c3b47aca
      Rob Swindell authored
      This solves the problem of exit() values (e.g. non-zero return codes) not
      getting propagated to callers when nest-called (e.g. via bbs.exec()).
      
      I think it was kk4qbn that pointed this out via IRC: an exit(1) call from
      prextrn.js did not stop the external program from running (as it should, for
      any non-zero exit code). This only happened when the prextrn.js called another
      JS script (e.g. via bbs.exec() or as was the case here, indirectly via "EXEC"
      @-code in the YesNoBar text.dat string (which executed yesnobar.js). This
      nested JS script invocation via sbbs_t::js_execfile() would clobber the stored
      js.scope property value (where the "exit_code" property is written).
      
      Script invoked in their own context (e.g. via js.exec()) wouldn't have this
      issue in the first place.
      c3b47aca
  5. Apr 05, 2024
    • Rob Swindell's avatar
      Default FTN charset to CP437 (not ASCII) for QWK-imported messages · fa91e907
      Rob Swindell authored
      A QWKnet tagline usually contains CP437 character 254 and if/when appended to
      a message during export, would "convert" the message to CP437 thus making the
      "ASCII" charset advertisement incorrect.
      
      If a FIDO CHARSET value was already specified (e.g. in HEADERS.DAT), that
      value will (still) not be overridden. So the *original* import via QWK (before
      it gets exported to a QWKnet) is where this change will take effect.
      
      Fix for issue #741
      fa91e907
  6. Mar 30, 2024
    • Rob Swindell's avatar
      Save and restore the js.exec_path, exec_dir, and exec_file properties · 9013f866
      Rob Swindell authored
      When invoking a nested JS script, these properties of the "js" object would
      be overwritten and not restored, as discovered/reported by Nightfox when his
      trivial game script would indirectly execute yesnobar.js, his subsequent use
      of js.exec_dir would point to the wrong location (the "exec" directory, parent
      of yesnobar.js, and not the direcctory where his game script was located).
      The exec_path and exec_file properties had the same problem as demonstrated
      by a simple test.js placed in (and executed from) a directory other than the
      "exec" dir:
      	function f() {
              print("js.exec_path = " + js.exec_path);
              print("js.exec_dir = " + js.exec_dir);
              print("Js.exec_file = " + js.exec_file);
      	}
      	f();
      	console.yesno("test");
      	f();
      
      This would only trigger the problem when executed from the BBS and whebn the
      YesNoQuestion text.dat string invokes the "yesnobar" module via EXEC @-code and
      yesnobar.js exists (in exec or mods dir), superceding yesnobar.bin which does
      not trigger this issue (not a JavaScript mod).
      9013f866
    • Deucе's avatar
      Unconditionally call sftp_end() when input thread exits. · 0a397616
      Deucе authored
      Hopefully fixes issue where certificate file is left open and so
      can't be deleted.
      0a397616
  7. Mar 29, 2024
  8. Mar 25, 2024
    • Deucе's avatar
      Initial work on cross-building sbbs with mingw · 39a7ff2f
      Deucе authored
      The big remaining issue is defining *_EXPORTS where needed, which
      looks rough from a quick glance.
      39a7ff2f
    • Rob Swindell's avatar
      Simplify the node config menu, eliminating Toggles/Advanced Options menus · da9627ea
      Rob Swindell authored
      There's only one toggle left (Leave node file open) and not very many advanced
      options.
      
      Unfortuantely, can't easily do the cool left-right cycle through nodes since
      each node file has to be saved/loaded, but still, easier to visualize any
      differences between node configs with all the settings on one menu.
      da9627ea
    • Rob Swindell's avatar
      Move "spinning cursor at pause prompt" from node to system config · bb492723
      Rob Swindell authored
      From SCFG->Nodes ... Toggle Options to SCFG->System->Toggle Options
      
      And from a bit flag in node_misc to its own bool member of scfg_t.
      bb492723
    • Rob Swindell's avatar
      Remove the "7-bit only" node option · 9081af2a
      Rob Swindell authored
      The way this option worked was, if enabled (and it was off by default), bit 7
      of all character input *before* successful logon would be stripped and bit 7
      from all character input of terminals configured as US-ASCII (only) would be
      stripped after logon.
      
      Instead, always strip bit 7 (the 8th bit) of each input character from US-ASCII
      (only) terminals. Other detected/configured terminals (CP437, UTF-8, PETSCII)
      won't have bit 7 stripped (ever) since that's likely not a necessary or nice
      thing to do. There's now no different handling of pre/post logon in this
      regard.
      
      If there's a need to strip parity bits from character input from client
      terminals that support CP437, UTF-8, or PETSCII, then we'll re-add this feature
      in but it shouldn't be a per-node setting in that case.
      9081af2a
  9. Mar 24, 2024
  10. Mar 23, 2024
Loading