def test_parse_websocket_frames(self): wf = language.parse_websocket_frame("wf:x10") assert len(list(wf)) == 10 tutils.raises( language.ParseException, language.parse_websocket_frame, "wf:x" )
def handle_websocket(self, logger): while True: with logger.ctx() as lg: started = time.time() try: frm = websockets.Frame.from_file(self.pathod_handler.rfile) except exceptions.NetlibException as e: lg("Error reading websocket frame: %s" % e) return None, None ended = time.time() lg(repr(frm)) retlog = dict( type="inbound", protocol="websockets", started=started, duration=ended - started, frame=dict( ), cipher=None, ) if self.pathod_handler.ssl_established: retlog["cipher"] = self.pathod_handler.get_current_cipher() self.pathod_handler.addlog(retlog) ld = language.websockets.NESTED_LEADER if frm.payload.startswith(ld): nest = frm.payload[len(ld):] try: wf_gen = language.parse_websocket_frame(nest.decode()) except language.exceptions.ParseException as v: logger.write( "Parse error in reflected frame specifcation:" " %s" % v.msg ) return None, None for frm in wf_gen: with logger.ctx() as lg: frame_log = language.serve( frm, self.pathod_handler.wfile, self.pathod_handler.settings ) lg("crafting websocket spec: %s" % frame_log["spec"]) self.pathod_handler.addlog(frame_log) return self.handle_websocket, None
def handle_websocket(self, logger): while True: with logger.ctx() as lg: started = time.time() try: frm = language.websockets_frame.Frame.from_file(self.pathod_handler.rfile) except exceptions.NetlibException as e: lg("Error reading websocket frame: %s" % e) return None, None ended = time.time() lg(repr(frm)) retlog = dict( type="inbound", protocol="websockets", started=started, duration=ended - started, frame=dict( ), cipher=None, ) if self.pathod_handler.tls_established: retlog["cipher"] = self.pathod_handler.get_current_cipher() self.pathod_handler.addlog(retlog) ld = language.websockets.NESTED_LEADER if frm.payload.startswith(ld): nest = frm.payload[len(ld):] try: wf_gen = language.parse_websocket_frame(nest.decode()) except language.exceptions.ParseException as v: logger.write( "Parse error in reflected frame specifcation:" " %s" % v.msg ) return None, None for frm in wf_gen: with logger.ctx() as lg: frame_log = language.serve( frm, self.pathod_handler.wfile, self.pathod_handler.settings ) lg("crafting websocket spec: %s" % frame_log["spec"]) self.pathod_handler.addlog(frame_log)
def test_parse_websocket_frames(self): wf = language.parse_websocket_frame("wf:x10") assert len(list(wf)) == 10 with pytest.raises(language.ParseException): language.parse_websocket_frame("wf:x")