[Twisted-Python] Status of current proxy support (of various kinds)
Peter Le Bek
peter at hyperplex.net
Mon Aug 8 20:10:50 MDT 2011
Myself and another are working on adding SOCKS client support to Twisted for
use in Tor related projects. I'm also convinced there's an abstraction that would
make it easier to implement proxy clients (or any transparent data/endpoint
modifying protocol) in Twisted. I agree that it's difficult to generalise, but there's a
class of protocol that does one or more of the following, transparently, and little
else:
- append data, before switching to application protocol (SSL handshake,
SOCKS connect/bind)
- prepend data, after losing connection on application protocol (SSL shutdown)
- modify application data (SSL "recordification", encryption)
- modify the endpoint (any proxy)
Endpoints can do all these things - SSL4ClientEndpoint, for example, does the first
three - but does it make sense to use Endpoints for this purpose?
Endpoints aren't stackable, so no good if I want to run a SOCKS client over SSL.
Also, with a proxied connection you have two Endpoints, one to the proxy server
and one 'virtual Endpoint' to wherever. The Endpoints API doesn't accommodate
this.
Would it make sense to have Endpoint wrappers for this purpose? A sort of
middleware (hate that word) to intercept transport events (including transport
formation, i.e. Endpoint.connect()).
I'm looking forward to being proven wrong on this as it will make my SOCKS work
easier, or else if this turns out to be interesting then I have more ideas on how it
should be implemented.
Cheers,
Peter.
More information about the Twisted-Python
mailing list