Пример #1
0
    def onConnect(self, request):
        """autobahn onConnect handler for when a connection has started"""
        track_object(self, msg="onConnect Start")
        self.ps = PushState(settings=self.ap_settings, request=request)

        # Setup ourself to handle producing the data
        self.transport.bufferSize = 2 * 1024
        self.transport.registerProducer(self.ps, True)

        if self.ap_settings.hello_timeout > 0:
            self.setTimeout(self.ap_settings.hello_timeout)
Пример #2
0
    def onConnect(self, request):
        """autobahn onConnect handler for when a connection has started"""
        track_object(self, msg="onConnect Start")
        self.ps = PushState(settings=self.ap_settings, request=request)

        # Setup ourself to handle producing the data
        self.transport.bufferSize = 2 * 1024
        self.transport.registerProducer(self.ps, True)

        if self.ap_settings.hello_timeout > 0:
            self.setTimeout(self.ap_settings.hello_timeout)
Пример #3
0
    def processHandshake(self):
        """Disable host port checking on nonstandard ports since some
        clients are buggy and don't provide it"""
        track_object(self, msg="processHandshake")
        port = self.ap_settings.port
        hide = port != 80 and port != 443
        if not hide:
            return self.parent_class.processHandshake(self)

        old_port = self.factory.externalPort
        try:
            self.factory.externalPort = None
            return self.parent_class.processHandshake(self)
        finally:
            self.factory.externalPort = old_port
Пример #4
0
    def processHandshake(self):
        """Disable host port checking on nonstandard ports since some
        clients are buggy and don't provide it"""
        track_object(self, msg="processHandshake")
        port = self.ap_settings.port
        hide = port != 80 and port != 443
        if not hide:
            return self.parent_class.processHandshake(self)

        old_port = self.factory.externalPort
        try:
            self.factory.externalPort = None
            return self.parent_class.processHandshake(self)
        finally:
            self.factory.externalPort = old_port
Пример #5
0
    def onMessage(self, payload, isBinary):
        """autobahn onMessage processor for incoming messages"""
        if isBinary:
            self.sendClose()
            return

        track_object(self, msg="onMessage")
        data = None
        try:
            data = json.loads(payload.decode('utf8'))
        except:
            pass

        if not isinstance(data, dict):
            self.sendClose()
            return

        # Without a UAID, hello must be next
        if not self.ps.uaid:
            return self.process_hello(data)

        # Ping's get a ping reply
        if data == {}:
            return self.process_ping()

        # Message needs a type
        if "messageType" not in data:
            self.sendClose()
            return

        cmd = data["messageType"]
        # We're no longer idle, prevent early connection closure.
        self.resetTimeout()
        try:
            if cmd == "hello":
                return self.process_hello(data)
            elif cmd == "register":
                return self.process_register(data)
            elif cmd == "unregister":
                return self.process_unregister(data)
            elif cmd == "ack":
                return self.process_ack(data)
            else:
                self.sendClose()
        finally:
            # Done processing, start idle.
            self.resetTimeout()
Пример #6
0
    def onMessage(self, payload, isBinary):
        """autobahn onMessage processor for incoming messages"""
        if isBinary:
            self.sendClose()
            return

        track_object(self, msg="onMessage")
        data = None
        try:
            data = json.loads(payload.decode("utf8"))
        except:
            pass

        if not isinstance(data, dict):
            self.sendClose()
            return

        # Without a UAID, hello must be next
        if not self.ps.uaid:
            return self.process_hello(data)

        # Ping's get a ping reply
        if data == {}:
            return self.process_ping()

        # Message needs a type
        if "messageType" not in data:
            self.sendClose()
            return

        cmd = data["messageType"]
        # We're no longer idle, prevent early connection closure.
        self.resetTimeout()
        try:
            if cmd == "hello":
                return self.process_hello(data)
            elif cmd == "register":
                return self.process_register(data)
            elif cmd == "unregister":
                return self.process_unregister(data)
            elif cmd == "ack":
                return self.process_ack(data)
            else:
                self.sendClose()
        finally:
            # Done processing, start idle.
            self.resetTimeout()