Beispiel #1
0
    def handshake(self):
        client_hs = http.read_request(self.rfile)
        websockets.check_client_handshake(client_hs.headers)

        self.wfile.write(http.response_preamble(101) + "\r\n")
        headers = websockets.server_handshake_headers("malformed key")
        self.wfile.write(headers.format() + "\r\n")
        self.wfile.flush()
        self.handshake_done = True
Beispiel #2
0
    def handshake(self):
        client_hs = http.read_request(self.rfile)
        websockets.check_client_handshake(client_hs.headers)

        self.wfile.write(http.response_preamble(101) + "\r\n")
        headers = websockets.server_handshake_headers("malformed key")
        self.wfile.write(headers.format() + "\r\n")
        self.wfile.flush()
        self.handshake_done = True
Beispiel #3
0
 def test_check_client_handshake(self):
     headers = websockets.client_handshake_headers("key")
     assert websockets.check_client_handshake(headers) == "key"
     headers["Upgrade"] = ["not_websocket"]
     assert not websockets.check_client_handshake(headers)
Beispiel #4
0
            s = str(s)
            self.info(s)
            self.addlog(dict(type="error", msg=s))
            return False

        for i in self.server.anchors:
            if i[0].match(path):
                self.info("crafting anchor: %s" % path)
                again, retlog["response"] = self.serve_crafted(i[1])
                self.addlog(retlog)
                return again

        if not self.server.nocraft and utils.matchpath(
                path, self.server.craftanchor):
            spec = urllib.unquote(path)[len(self.server.craftanchor) + 1:]
            key = websockets.check_client_handshake(headers)
            self.settings.websocket_key = key
            if key and not spec:
                spec = "ws"
            self.info("crafting spec: %s" % spec)
            try:
                crafted = language.parse_response(spec)
            except language.ParseException, v:
                self.info("Parse error: %s" % v.msg)
                crafted = language.make_error_response(
                    "Parse Error",
                    "Error parsing response spec: %s\n" % v.msg + v.marked())
            again, retlog["response"] = self.serve_crafted(crafted)
            self.addlog(retlog)
            return again
        elif self.server.noweb:
Beispiel #5
0
        except http.HttpError, s:
            s = str(s)
            self.info(s)
            self.addlog(dict(type="error", msg=s))
            return False

        for i in self.server.anchors:
            if i[0].match(path):
                self.info("crafting anchor: %s" % path)
                again, retlog["response"] = self.serve_crafted(i[1])
                self.addlog(retlog)
                return again

        if not self.server.nocraft and utils.matchpath(path, self.server.craftanchor):
            spec = urllib.unquote(path)[len(self.server.craftanchor) + 1:]
            key = websockets.check_client_handshake(headers)
            self.settings.websocket_key = key
            if key and not spec:
                spec = "ws"
            self.info("crafting spec: %s" % spec)
            try:
                crafted = language.parse_response(spec)
            except language.ParseException, v:
                self.info("Parse error: %s" % v.msg)
                crafted = language.make_error_response(
                    "Parse Error",
                    "Error parsing response spec: %s\n" % v.msg + v.marked()
                )
            again, retlog["response"] = self.serve_crafted(crafted)
            self.addlog(retlog)
            return again
Beispiel #6
0
 def test_check_client_handshake(self):
     headers = websockets.client_handshake_headers("key")
     assert websockets.check_client_handshake(headers) == "key"
     headers["Upgrade"] = ["not_websocket"]
     assert not websockets.check_client_handshake(headers)