コード例 #1
0
 def test_tunnel_sock_failure(self):
     remote_host = '127.0.0.59'
     server = OpenSSHServer(listen_ip=remote_host, port=self.port)
     server.start_server()
     in_q, out_q = deque(), deque()
     try:
         tunnel = Tunnel(self.proxy_host,
                         in_q,
                         out_q,
                         port=self.port,
                         pkey=self.user_key,
                         num_retries=1)
         tunnel._init_tunnel_client()
         channel = tunnel._open_channel_retries(self.proxy_host, self.port,
                                                2150)
         self.assertFalse(channel.eof())
         listen_socket, listen_port = tunnel._init_tunnel_sock()
         client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         client_socket.connect(('127.0.0.1', listen_port))
         client_socket.send(b'blah\n')
         client_socket.close()
         gl1 = spawn(tunnel._read_channel, client_socket, channel)
         gl2 = spawn(tunnel._read_forward_sock, client_socket, channel)
         sleep(1)
         gl1.kill()
         gl2.kill()
         tunnel._sockets.append(None)
         tunnel.cleanup()
     finally:
         server.stop()
コード例 #2
0
 def test_tunnel_init(self):
     proxy_host = '127.0.0.49'
     server = OpenSSHServer(listen_ip=proxy_host, port=self.port)
     server.start_server()
     in_q, out_q = deque(), deque()
     try:
         tunnel = Tunnel(proxy_host,
                         in_q,
                         out_q,
                         port=self.port,
                         pkey=self.user_key,
                         num_retries=1)
         tunnel._init_tunnel_client()
         consume_let = spawn(tunnel._consume_q)
         in_q.append((self.host, self.port))
         while not tunnel.tunnel_open.is_set():
             sleep(.1)
             if not tunnel.is_alive():
                 raise ProxyError
         self.assertTrue(tunnel.tunnel_open.is_set())
         self.assertIsNotNone(tunnel.client)
         tunnel.cleanup()
         for _sock in tunnel._sockets:
             self.assertTrue(_sock.closed)
     finally:
         server.stop()
コード例 #3
0
 def test_tunnel_channel_eof(self):
     remote_host = '127.0.0.59'
     server = OpenSSHServer(listen_ip=remote_host, port=self.port)
     server.start_server()
     in_q, out_q = deque(), deque()
     tunnel = Tunnel(self.proxy_host,
                     in_q,
                     out_q,
                     port=self.port,
                     pkey=self.user_key,
                     num_retries=1)
     tunnel._init_tunnel_client()
     channel = tunnel._open_channel_retries(self.proxy_host, self.port,
                                            2150)
     self.assertFalse(channel.eof())
     channel.close()
     listen_socket, listen_port = tunnel._init_tunnel_sock()
     client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     client_socket.connect(('127.0.0.1', listen_port))
     try:
         client = spawn(self._connect_client, client_socket)
         tunnel._read_channel(client_socket, channel)
         tunnel._read_forward_sock(client_socket, channel)
         self.assertTrue(channel.eof())
         client.kill()
     finally:
         client_socket.close()
         tunnel.cleanup()
         server.stop()
コード例 #4
0
 def test_tunnel_channel_failure(self):
     remote_host = '127.0.0.8'
     remote_server = OpenSSHServer(listen_ip=remote_host, port=self.port)
     remote_server.start_server()
     in_q, out_q = deque(), deque()
     try:
         tunnel = Tunnel(self.proxy_host, in_q, out_q, port=self.port,
                         pkey=self.user_key, num_retries=1)
         tunnel.daemon = True
         tunnel.start()
         in_q.append((remote_host, self.port))
         while not tunnel.tunnel_open.is_set():
             sleep(.1)
             if not tunnel.is_alive():
                 raise ProxyError
         self.assertTrue(tunnel.tunnel_open.is_set())
         self.assertIsNotNone(tunnel.client)
         while True:
             try:
                 _port = out_q.pop()
             except IndexError:
                 sleep(.5)
             else:
                 break
         proxy_client = SSHClient(
             '127.0.0.1', pkey=self.user_key, port=_port,
             num_retries=1, _auth_thread_pool=False)
         tunnel.cleanup()
         spawn(proxy_client.execute, 'echo me')
         proxy_client.disconnect()
         self.assertTrue(proxy_client.sock.closed)
     finally:
         remote_server.stop()
コード例 #5
0
 def test_tunnel_sock_failure(self):
     remote_host = '127.0.0.59'
     server = OpenSSHServer(listen_ip=remote_host, port=self.port)
     server.start_server()
     in_q, out_q = deque(), deque()
     try:
         tunnel = Tunnel(self.proxy_host, in_q, out_q, port=self.port,
                         pkey=self.user_key, num_retries=1)
         tunnel._init_tunnel_client()
         channel = tunnel._open_channel_retries(self.proxy_host, self.port, 2150)
         self.assertFalse(channel.eof())
         listen_socket, listen_port = tunnel._init_tunnel_sock()
         client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         client_socket.connect(('127.0.0.1', listen_port))
         client_socket.send(b'blah\n')
         client_socket.close()
         gl1 = spawn(tunnel._read_channel, client_socket, channel)
         gl2 = spawn(tunnel._read_forward_sock, client_socket, channel)
         sleep(1)
         gl1.kill()
         gl2.kill()
         tunnel._sockets.append(None)
         tunnel.cleanup()
     finally:
         server.stop()
コード例 #6
0
 def test_tunnel_server_failure(self):
     proxy_host = '127.0.0.9'
     remote_host = '127.0.0.8'
     server = OpenSSHServer(listen_ip=proxy_host, port=self.port)
     remote_server = OpenSSHServer(listen_ip=remote_host, port=self.port)
     for _server in (server, remote_server):
         _server.start_server()
     in_q, out_q = deque(), deque()
     try:
         tunnel = Tunnel(proxy_host,
                         in_q,
                         out_q,
                         port=self.port,
                         pkey=self.user_key,
                         num_retries=1)
         tunnel._init_tunnel_client()
         consume_let = spawn(tunnel._consume_q)
         in_q.append((remote_host, self.port))
         while not tunnel.tunnel_open.is_set():
             sleep(.1)
             if not tunnel.is_alive():
                 raise ProxyError
         self.assertTrue(tunnel.tunnel_open.is_set())
         self.assertIsNotNone(tunnel.client)
         while True:
             try:
                 _port = out_q.pop()
             except IndexError:
                 sleep(.5)
             else:
                 break
         proxy_client = spawn(SSHClient,
                              '127.0.0.1',
                              pkey=self.user_key,
                              port=_port,
                              num_retries=1,
                              _auth_thread_pool=False)
         remote_server.stop()
         tunnel.cleanup()
         self.assertRaises(ConnectionErrorException, proxy_client.get)
     finally:
         for _server in (server, remote_server):
             _server.stop()
コード例 #7
0
 def test_tunnel_channel_failure(self):
     remote_host = '127.0.0.8'
     remote_server = OpenSSHServer(listen_ip=remote_host, port=self.port)
     remote_server.start_server()
     in_q, out_q = deque(), deque()
     try:
         tunnel = Tunnel(self.proxy_host,
                         in_q,
                         out_q,
                         port=self.port,
                         pkey=self.user_key,
                         num_retries=1)
         tunnel.daemon = True
         tunnel.start()
         in_q.append((remote_host, self.port))
         while not tunnel.tunnel_open.is_set():
             sleep(.1)
             if not tunnel.is_alive():
                 raise ProxyError
         self.assertTrue(tunnel.tunnel_open.is_set())
         self.assertIsNotNone(tunnel.client)
         while True:
             try:
                 _port = out_q.pop()
             except IndexError:
                 sleep(.5)
             else:
                 break
         proxy_client = SSHClient('127.0.0.1',
                                  pkey=self.user_key,
                                  port=_port,
                                  num_retries=1,
                                  _auth_thread_pool=False)
         tunnel.cleanup()
         spawn(proxy_client.execute, 'echo me')
         proxy_client.disconnect()
         self.assertTrue(proxy_client.sock.closed)
     finally:
         remote_server.stop()
コード例 #8
0
 def test_tunnel_init(self):
     proxy_host = '127.0.0.49'
     server = OpenSSHServer(listen_ip=proxy_host, port=self.port)
     server.start_server()
     in_q, out_q = deque(), deque()
     try:
         tunnel = Tunnel(proxy_host, in_q, out_q, port=self.port,
                         pkey=self.user_key, num_retries=1)
         tunnel._init_tunnel_client()
         consume_let = spawn(tunnel._consume_q)
         in_q.append((self.host, self.port))
         while not tunnel.tunnel_open.is_set():
             sleep(.1)
             if not tunnel.is_alive():
                 raise ProxyError
         self.assertTrue(tunnel.tunnel_open.is_set())
         self.assertIsNotNone(tunnel.client)
         tunnel.cleanup()
         for _sock in tunnel._sockets:
             self.assertTrue(_sock.closed)
     finally:
         server.stop()
コード例 #9
0
 def test_tunnel_server_failure(self):
     proxy_host = '127.0.0.9'
     remote_host = '127.0.0.8'
     server = OpenSSHServer(listen_ip=proxy_host, port=self.port)
     remote_server = OpenSSHServer(listen_ip=remote_host, port=self.port)
     for _server in (server, remote_server):
         _server.start_server()
     in_q, out_q = deque(), deque()
     try:
         tunnel = Tunnel(proxy_host, in_q, out_q, port=self.port,
                         pkey=self.user_key, num_retries=1)
         tunnel._init_tunnel_client()
         consume_let = spawn(tunnel._consume_q)
         in_q.append((remote_host, self.port))
         while not tunnel.tunnel_open.is_set():
             sleep(.1)
             if not tunnel.is_alive():
                 raise ProxyError
         self.assertTrue(tunnel.tunnel_open.is_set())
         self.assertIsNotNone(tunnel.client)
         while True:
             try:
                 _port = out_q.pop()
             except IndexError:
                 sleep(.5)
             else:
                 break
         proxy_client = spawn(
             SSHClient,
             '127.0.0.1', pkey=self.user_key, port=_port,
             num_retries=1, _auth_thread_pool=False)
         remote_server.stop()
         tunnel.cleanup()
         self.assertRaises(ConnectionErrorException, proxy_client.get)
     finally:
         for _server in (server, remote_server):
             _server.stop()