def server_loop(self): """ Main server loop. As clients connect to the proxy, pass the connection on to the upstream server and bind it to a 'connection'. Start sniffing all packets as they fly by. :return: """ (self._client_reader, self._client_writer) = \ yield from asyncio.open_connection(self.config['upstream_host'], self.config['upstream_port']) self._client_loop_future = asyncio.ensure_future(self.client_loop()) try: while True: packet = yield from read_packet(self._reader, Direction.TO_SERVER) # Break in case of emergencies: # if packet['type'] not in [17, 40, 43, 48, 51]: # logger.debug('c->s {}'.format(packet['type'])) if (yield from self.check_plugins(packet)): yield from self.write_client(packet) except asyncio.IncompleteReadError: # Pass on these errors. These occur when a player disconnects badly pass except Exception as err: logger.error('Server loop exception occurred:' '{}: {}'.format(err.__class__.__name__, err)) finally: self.die()
def server_loop(self): """ Main server loop. As clients connect to the proxy, pass the connection on to the upstream server and bind it to a 'connection'. Start sniffing all packets as they fly by. :return: """ (self._client_reader, self._client_writer) = \ yield from asyncio.open_connection(self.config['upstream_host'], self.config['upstream_port']) self._client_loop_future = asyncio.ensure_future(self.client_loop()) try: while True: packet = yield from read_packet(self._reader, Direction.TO_SERVER) # Break in case of emergencies: # if packet['type'] not in [17, 40, 41, 43, 48, 51]: # logger.debug('c->s {}'.format(packet['type'])) if (yield from self.check_plugins(packet)): yield from self.write_client(packet) except asyncio.IncompleteReadError: # Pass on these errors. These occur when a player disconnects badly pass except asyncio.CancelledError: logger.warning("Connection ended abruptly.") except Exception as err: logger.error("Server loop exception occurred:" "{}: {}".format(err.__class__.__name__, err)) finally: self.die()
def client_loop(self): try: while True: packet = yield from read_packet(self._client_reader, "Server") send_flag = yield from self.check_plugins(packet) if send_flag: yield from self.write(packet) finally: self.die()
def client_loop(self): try: while True: packet = yield from read_packet(self._client_reader, Direction.TO_STARBOUND_CLIENT) send_flag = yield from self.check_plugins(packet) if send_flag: yield from self.write(packet) finally: self.die()
def server_loop(self): (self._client_reader, self._client_writer) = yield from asyncio.open_connection("127.0.0.1", 21024) self._client_loop_future = asyncio.Task(self.client_loop()) try: while True: packet = yield from read_packet(self._reader, "Client") if (yield from self.check_plugins(packet)): yield from self.write_client(packet) finally: self.die()
def client_loop(self): """ Main client loop. Sniff packets originating from the server and bound for the clients. :return: """ try: while True: packet = yield from read_packet(self._client_reader, Direction.TO_CLIENT) # Break in case of emergencies: # if packet['type'] not in [7, 17, 23, 27, 43, 49, 51]: # logger.debug('s->c {}'.format(packet['type'])) send_flag = yield from self.check_plugins(packet) if send_flag: yield from self.write(packet) finally: self.die()
def listen_server_side_aux_router(self): received_message = check.socket_recv( self.socket_server_side, self.router_id ) if(received_message is not None and len(received_message) > 0): parsed_message = utils.read_packet(received_message) msg = " ".join(["message received from:", self.server_ip]) utils.show_status(self.router_id, msg) utils.report( self.router_id, parsed_message, "reading packet received" ) self.handle_message_server_side(parsed_message)
def listen_packets(self): received_message = check.socket_recv(self.client_connection, self.client_id) if (received_message is not None and len(received_message) > 0): parsed_message = utils.read_packet(received_message) time.sleep(2) # give time to router to show its status msg = " ".join( ["message received from:", parsed_message["source_ip"]]) utils.show_status(self.client_id, msg) utils.report(self.client_id, parsed_message, "reading received packet") if (parsed_message["destination_mac"] == BROADCAST_MAC): msg = " ".join([ "received an ARP request from", parsed_message["source_ip"] ]) utils.show_status(self.client_id, msg) self.send_message(parsed_message.get("source_ip"), "{ARP reply}")
def client_loop(self): """ Main client loop. Sniff packets originating from the server and bound for the clients. :return: """ try: while True: packet = yield from read_packet(self._client_reader, Direction.TO_CLIENT) # Break in case of emergencies: # if packet['type'] not in [7, 17, 23, 27, 31, 43, 49, 51]: # logger.debug('s->c {}'.format(packet['type'])) send_flag = yield from self.check_plugins(packet) if send_flag: yield from self.write(packet) except asyncio.IncompleteReadError: logger.error("IncompleteReadError: Connection ended abruptly.") finally: self.die()