Я хочу, чтобы веб-сервер подключался к прокси-серверу, отправлял команду связывания и прослушивал соединение.
Как настроить http.server для привязки и прослушивания удаленного порта?
Я пытался переопределить server_bind без успеха:
Код: Выделить всё
class TestHTTPServer ( http.server.HTTPServer ):
def __init__ ( self, server_address, RequestHandlerClass, proxy_host=None, proxy_port=None, bind_and_activate=True ):
if ':' in (str)(server_address[0]):
self.address_family = socket.AF_INET6
else:
self.address_family = socket.AF_INET
self.proxy_host = proxy_host
self.proxy_port = proxy_port
super().__init__ ( server_address, RequestHandlerClass, bind_and_activate )
def serve_forever ( self, poll_interval = 0.5 ):
self.socket.settimeout ( poll_interval )
while not stop_unittest_event.is_set ():
try:
self.handle_request ()
except OSError:
pass
def server_bind ( self ):
if self.proxy_host is None or self.proxy_port is None:
super().server_bind ()
else:
self.socket = socks.socksocket()
self.socket.set_proxy(socks.SOCKS5, self.server_address[0], self.server_address[1])
self.socket.bind(self.server_address)
Это то, что FTP-сервер делает в активном режиме.
Подробнее здесь: https://stackoverflow.com/questions/792 ... ocks-proxy