def __init__(self, factory): EndpointBaseProtocol.__init__(self) self.__factory = factory self.__configured = False self.__session_id = None self.__relay_host = None self.__relay_port = None self.__buffer_cleared = False self.__real_server = EndpointServer(self)
def __init__(self, factory): EndpointBaseProtocol.__init__(self) self.__factory = factory self.__configured = False self.__session_id = None; self.__relay_host = None; self.__relay_port = None; self.__buffer_cleared = False self.__real_server = EndpointServer(self)
class HostProcess(EndpointBaseProtocol): """This is a connection to the relay server. It knows how to configure itself, and then forward all subsequent data to the "RealServer" instance. """ def __init__(self, factory): EndpointBaseProtocol.__init__(self) self.__factory = factory self.__configured = False self.__session_id = None; self.__relay_host = None; self.__relay_port = None; self.__buffer_cleared = False self.__real_server = EndpointServer(self) def connectionLost(self, reason): log.msg("Host-process with session-no (%d) has had its connection " "dropped." % (self.__session_id)) self.__real_server.shutdown() def connectionMade(self): log.msg("We've successfully connected to the relay server. " "Sending hello.") hello = build_msg_data_hphello() self.write_message(hello) def __handle_configuration_data(self, data): """Our connection has not been configured yet.""" self.push_data(data) message_raw = self.get_initial_message() if message_raw is None: return response = self.parse_or_raise(message_raw, HostProcessHelloResponse) self.__session_id = response.session_id; self.__relay_host = response.relay_host; self.__relay_port = int(response.relay_port); log.msg("Received hello response: SESSION-NO=(%d) RHOST=[%s] " "RPORT=(%d)" % (self.__session_id, self.__relay_host, self.__relay_port)) self.__configured = True self.__factory.resetDelay() def dataReceived(self, data): try: if self.__configured is False: self.__handle_configuration_data(data) else: if self.__buffer_cleared is False: data = self.get_and_clear_buffer() + data self.__buffer_cleared = True self.__real_server.receive_data(data) except Exception as e: log.err() @property def session_id(self): return self.__session_id
class HostProcess(EndpointBaseProtocol): """This is a connection to the relay server. It knows how to configure itself, and then forward all subsequent data to the "RealServer" instance. """ def __init__(self, factory): EndpointBaseProtocol.__init__(self) self.__factory = factory self.__configured = False self.__session_id = None self.__relay_host = None self.__relay_port = None self.__buffer_cleared = False self.__real_server = EndpointServer(self) def connectionLost(self, reason): log.msg("Host-process with session-no (%d) has had its connection " "dropped." % (self.__session_id)) self.__real_server.shutdown() def connectionMade(self): log.msg("We've successfully connected to the relay server. " "Sending hello.") hello = build_msg_data_hphello() self.write_message(hello) def __handle_configuration_data(self, data): """Our connection has not been configured yet.""" self.push_data(data) message_raw = self.get_initial_message() if message_raw is None: return response = self.parse_or_raise(message_raw, HostProcessHelloResponse) self.__session_id = response.session_id self.__relay_host = response.relay_host self.__relay_port = int(response.relay_port) log.msg("Received hello response: SESSION-NO=(%d) RHOST=[%s] " "RPORT=(%d)" % (self.__session_id, self.__relay_host, self.__relay_port)) self.__configured = True self.__factory.resetDelay() def dataReceived(self, data): try: if self.__configured is False: self.__handle_configuration_data(data) else: if self.__buffer_cleared is False: data = self.get_and_clear_buffer() + data self.__buffer_cleared = True self.__real_server.receive_data(data) except Exception as e: log.err() @property def session_id(self): return self.__session_id