4 from robot.utils
import PY2, WINDOWS
5 from .logger
import logger
11 import socketserver
as SocketServer
16 socket.inet_pton(socket.AF_INET6, ip)
23 def __init__(self, port, host, transport, bind_address):
37 t = threading.Thread(target=self.
serverserver.serve_forever)
40 logger.info(
"Now forwarding port %d to %s:%d ..." % (local_port, self.
hosthost, self.
portport))
44 self.
serverserver.shutdown()
46 logger.log_background_messages()
47 except AttributeError:
53 allow_reuse_address =
True
55 def __init__(self, server_address, RequestHandlerClass, ipv6=False):
57 ForwardServer.address_family = socket.AF_INET6
58 SocketServer.ThreadingTCPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate=
True)
62 host, port, ssh_transport =
None,
None,
None
67 self.request.getpeername())
68 except Exception
as e:
69 logger.info(
"Incoming request to %s:%d failed: %s" % (self.
hosthost, self.
portport, repr(e)))
72 logger.info(
"Incoming request to %s:%d was rejected by the SSH server." % (self.
hosthost, self.
portport))
74 logger.info(
"Connected! Tunnel open %r -> %r -> %r" % (self.request.getpeername(),
78 r, w, x = select.select([self.request, chan], [], [])
80 data = self.request.recv(1024)
85 data = chan.recv(1024)
88 self.request.send(data)
89 peername = self.request.getpeername()
92 logger.info(
"Tunnel closed from %r" % (peername,))
def __init__(self, server_address, RequestHandlerClass, ipv6=False)
def forward(self, local_port)
def __init__(self, port, host, transport, bind_address)