Skip to content
Snippets Groups Projects
  1. Apr 10, 2021
    • Simon Tatham's avatar
      New GUI for protocol selection. · 0f9e0d6e
      Simon Tatham authored
      This replaces the pure radio-button setup that we've always had on the
      Session config panel.
      
      Since the last release, that set of radio buttons has been getting out
      of hand. We've added two new protocols (SUPDUP, and the 'bare
      ssh-connection' aka psusan protocol), neither of which is mainstream
      enough to be a sensible thing to wave at all users on the front page
      of the config GUI, so that they perhaps start wondering if that's the
      protocol they want to use, or get sidetracked by going and looking it
      up.
      
      The replacement UI still has radio buttons, but only for the most
      common protocols, which will typically be SSH and serial. Everything
      else is relegated to a drop-down list sitting next to a third radio
      button labelled "Other".
      
      In every be_* module providing a backends[] list, there's also a
      variable n_ui_backends which indicates how many of the backends ought
      to appear as first-level radio buttons.
      
      (Credit where due: this patch is a joint effort between Jacob and me,
      and is one of those rare cases where it would be nice to be able to
      put both our names into the Author field of the commit. Failing that,
      I can at least mention it here.)
      0f9e0d6e
  2. Nov 28, 2020
  3. Mar 10, 2020
  4. Feb 22, 2020
    • Simon Tatham's avatar
      New protocol: PROT_SSHCONN, bare ssh-connection. · 22b492c4
      Simon Tatham authored
      This is the same protocol that PuTTY's connection sharing has been
      using for years, to communicate between the downstream and upstream
      PuTTYs. I'm now promoting it to be a first-class member of the
      protocols list: if you have a server for it, you can select it in the
      GUI or on the command line, and write out a saved session that
      specifies it.
      
      This would be completely insecure if you used it as an ordinary
      network protocol, of course. Not only is it non-cryptographic and wide
      open to eavesdropping and hijacking, but it's not even _authenticated_
      - it begins after the userauth phase of SSH. So there isn't even the
      mild security theatre of entering an easy-to-eavesdrop password, as
      there is with, say, Telnet.
      
      However, that's not what I want to use it for. My aim is to use it for
      various specialist and niche purposes, all of which involve speaking
      it over an 8-bit-clean data channel that is already set up, secured
      and authenticated by other methods. There are lots of examples of such
      channels:
      
       - a userv(1) invocation
       - the console of a UML kernel
       - the stdio channels into other kinds of container, such as Docker
       - the 'adb shell' channel (although it seems quite hard to run a
         custom binary at the far end of that)
       - a pair of pipes between PuTTY and a Cygwin helper process
       - and so on.
      
      So this protocol is intended as a convenient way to get a client at
      one end of any those to run a shell session at the other end. Unlike
      other approaches, it will give you all the SSH-flavoured amenities
      you're already used to, like forwarding your SSH agent into the
      container, or forwarding selected network ports in or out of it, or
      letting it open a window on your X server, or doing SCP/SFTP style
      file transfer.
      
      Of course another way to get all those amenities would be to run an
      ordinary SSH server over the same channel - but this approach avoids
      having to manage a phony password or authentication key, or taking up
      your CPU time with pointless crypto.
      22b492c4
  5. Oct 06, 2018
  6. Sep 19, 2018
    • Simon Tatham's avatar
      Turn Backend into a sensible classoid. · eefebaaa
      Simon Tatham authored
      Nearly every part of the code that ever handles a full backend
      structure has historically done it using a pair of pointer variables,
      one pointing at a constant struct full of function pointers, and the
      other pointing to a 'void *' state object that's passed to each of
      those.
      
      While I'm modernising the rest of the code, this seems like a good
      time to turn that into the same more or less type-safe and less
      cumbersome system as I'm using for other parts of the code, such as
      Socket, Plug, BinaryPacketProtocol and so forth: the Backend structure
      contains a vtable pointer, and a system of macro wrappers handles
      dispatching through that vtable.
      eefebaaa
  7. Jun 30, 2007
  8. Aug 28, 2006
    • Simon Tatham's avatar
      Support for Windows PuTTY connecting straight to a local serial port · 34f74742
      Simon Tatham authored
      in place of making a network connection. This has involved a couple
      of minor infrastructure changes:
       - New dlg_label_change() function in the dialog.h interface, which
         alters the label on a control. Only used, at present, to switch
         the Host Name and Port boxes into Serial Line and Speed, which
         means that any platform not implementing serial connections (i.e.
         currently all but Windows) does not need to actually do anything
         in this function. Yet.
       - New small piece of infrastructure: cfg_launchable() determines
         whether a Config structure describes a session ready to be
         launched. This was previously determined by seeing if it had a
         non-empty host name, but it has to check the serial line as well
         so there's a centralised function for it. I haven't gone through
         all front ends and arranged for this function to be used
         everywhere it needs to be; so far I've only checked Windows.
       - Similarly, cfg_dest() returns the destination of a connection
         (host name or serial line) in a text format suitable for putting
         into messages such as `Unable to connect to %s'.
      
      [originally from svn r6815]
      34f74742
  9. Apr 06, 2003
    • Simon Tatham's avatar
      Now that we have `appname', make much wider use of it. In · b0ee81ab
      Simon Tatham authored
      particular, the config box uses it in place of the word `PuTTY',
      which means mid-session reconfig in pterm will look less strange
      once I implement it. Also, while I'm at it, I've personalised all
      the dialog boxes and menu items and suchlike so that PuTTYtel
      actually claims to be PuTTYtel rather than PuTTY.
      
      [originally from svn r3074]
      b0ee81ab
  10. Jan 15, 2003
    • Jacob Nevins's avatar
      Implement Simon's suggestion of moving DEFAULT_PROTOCOL into a per-backend- · e8ebb4c8
      Jacob Nevins authored
      link-module const variable `be_default_protocol' which suggests a sensible
      default to the front end (which can ignore it). (DEFAULT_PORT is replaced by a
      lookup in the backend[] table.)
      Still not pretty, but it does mean that the recent fix for `ssh-default'
      doesn't break PuTTYtel.
      
      [originally from svn r2613]
      e8ebb4c8
  11. Oct 30, 2002
    • Simon Tatham's avatar
      More preparatory work: remove the <windows.h> include from lots of · 52bdffbf
      Simon Tatham authored
      source files in which it's no longer required (it was previously
      required in anything that included <putty.h>, but not any more).
      Also moved a couple of stray bits of exposed WinSock back into
      winnet.c (getservbyname from ssh.c and AF_INET from proxy.c).
      
      [originally from svn r2160]
      52bdffbf
  12. Jan 19, 2001
  13. Oct 23, 2000
    • Simon Tatham's avatar
      Created a shiny new abstraction for the socket handling. Has many · bbbda411
      Simon Tatham authored
      advantages:
       - protocol modules can call sk_write() without having to worry
         about writes blocking, because blocking writes are handled in the
         abstraction layer and retried later.
       - `Lost connection while sending' is a thing of the past.
       - <winsock.h> is no longer needed in most modules, because
         "putty.h" doesn't have to declare `SOCKET' variables any more,
         only the abstracted `Socket' type.
       - select()-equivalent between multiple sockets will now be handled
         sensibly, which opens the way for things like SSH port
         forwarding.
      
      [originally from svn r744]
      bbbda411
  14. Oct 09, 2000
  15. Mar 15, 2000
    • Simon Tatham's avatar
      First stab at the ability to compile puttytel.exe, an SSH-free · 96dbf9c6
      Simon Tatham authored
      variant which is patent-safe in the US and legal in France and
      Russia. This is a horrible hack in some ways: it's shown up serious
      deficiencies in the module boundaries. Needs further work, probably
      once the SSH implementations are recombined.
      
      [originally from svn r410]
      96dbf9c6
Loading