o bC @svdZddlmZddlmZGdddejZGdddeZGdd d ejZ Gd d d eZ Gd d d ej Z dS)z A simple port forwarder. )protocol)logc@s,eZdZdZdZddZddZddZdS) ProxyTNcC ||_dSN)peer)selfrr ?/usr/lib/python3/dist-packages/twisted/protocols/portforward.pysetPeer z Proxy.setPeercCs>|jdur|jjd|_dS|jrtd|dSdS)NzUnable to connect to peer: )r transportloseConnectionnoisyrmsg)rreasonr r r connectionLosts   zProxy.connectionLostcCs|jj|dSr)rr write)rdatar r r dataReceivedszProxy.dataReceived)__name__ __module__ __qualname__rrr rrr r r r r s  rc@seZdZddZdS) ProxyClientcCs@|j||j|jjd|jj|jd|jjdS)NT)rr r registerProducerresumeProducing)rr r r connectionMade!s zProxyClient.connectionMadeN)rrrrr r r r r s rc@s(eZdZeZddZddZddZdS)ProxyClientFactorycCrr)server)rrr r r setServer3r zProxyClientFactory.setServercOs*tjj|g|Ri|}||j|Sr)r ClientFactory buildProtocolr r)rargskwprotr r r r!6s z ProxyClientFactory.buildProtocolcCs|jjdSr)rr r)r connectorrr r r clientConnectionFailed;sz)ProxyClientFactory.clientConnectionFailedN)rrrrrrr!r&r r r r r/s  rc@seZdZeZdZddZdS) ProxyServerNcCsT|j|}|||jdurddlm}||_|j|jj|jj |dS)Nr)reactor) r pauseProducingclientProtocolFactoryrr(twisted.internet connectTCPfactoryhostport)rclientr(r r r rDs    zProxyServer.connectionMade)rrrrr*r(rr r r r r'?s r'c@seZdZdZeZddZdS) ProxyFactoryz% Factory for port forwarder. cCs||_||_dSr)r.r/)rr.r/r r r __init__Zs zProxyFactory.__init__N)rrr__doc__r'rr2r r r r r1Ss r1N) r3r+rtwisted.pythonrProtocolrrr rr'Factoryr1r r r r s