from judge.bridge.base_handler import ZlibPacketHandler class EchoPacketHandler(ZlibPacketHandler): def on_connect(self): print("New client:", self.client_address) self.timeout = 5 def on_timeout(self): print("Inactive client:", self.client_address) def on_packet(self, data): self.timeout = None print( "Data from %s: %r" % (self.client_address, data[:30] if len(data) > 30 else data) ) self.send(data) def on_disconnect(self): print("Closed client:", self.client_address) def main(): import argparse from judge.bridge.server import Server parser = argparse.ArgumentParser() parser.add_argument("-l", "--host", action="append") parser.add_argument("-p", "--port", type=int, action="append") parser.add_argument("-P", "--proxy", action="append") args = parser.parse_args() class Handler(EchoPacketHandler): proxies = args.proxy or [] server = Server(list(zip(args.host, args.port)), Handler) server.serve_forever() if __name__ == "__main__": main()