def handle_request_and_create_destination(self, event):
"""Handle the socks request from source
Create destination connection
Returns:
tuple: (dest_stream, host, port)
"""
if event.cmd != REQ_COMMAND["CONNECT"]:
logger.debug("Unsupport connect type")
yield self.send_event_to_src_conn(Response(
RESP_STATUS["COMMAND_NOT_SUPPORTED"],
event.atyp, event.addr, event.port), raise_exception=False)
raise ProtocolError("Unsupport bind type")
try:
dest_stream = yield self.create_dest_stream((str(event.addr), event.port))
except gen.TimeoutError as e:
yield self.handle_timeout_error(e, event)
except iostream.StreamClosedError as e:
yield self.handle_stream_closed_error(e, event)
else:
yield self.send_event_to_src_conn(Response(
RESP_STATUS["SUCCESS"],
event.atyp, event.addr, event.port))
raise gen.Return((dest_stream, event.addr, event.port))
评论列表
文章目录