Example #1
0
    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
Example #4
0
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