ckwin icon indicating copy to clipboard operation
ckwin copied to clipboard

Refactor the whole SSH subsystem into a DLL

Open davidrg opened this issue 2 years ago • 1 comments

Move the whole SSH subsystem (all of it) into a DLL. This would allow the current libssh-based implementation to be swapped out with another without requiring any changes to the rest of CKW (or even a recompile).

This would involve:

  • [ ] Elimination of all SSH-related global variables (all of them)
  • [ ] Elimination of some of the static command tables (eg the options for set ssh v2 hostkey-algorithms needs to come from the ssh subsystem rather than being hard-coded in CKW)
  • [ ] ckoshs, ckossh and ckorbf move into a DLL
  • [ ] Availability of SSH commands should now depend on the presence of the SSH subsystem DLL

Once this is done we can investigate the possibility of building an alternative SSH subsystem based on code from PuTTY to provide SSH support on older windows systems

davidrg avatar Apr 21 '23 11:04 davidrg

An additional reason to do this: Enabling GSSAPI support in libssh means requiring MIT Kerberos for Windows to be installed - CKW won't start without it. CKW now ships with two versions of ssh.dll with the user having to swap them around if they want GSSAPI support.

We could do a LoadLibrary for ssh-gssapi.dll and if that fails try ssh.dll but its going to be a lot easier to GetProcAddress the limited API the SSH subsystem exposes than do it for libssh.

davidrg avatar May 30 '23 06:05 davidrg