def __init__(self, args, url): self.args = args self.tuntap = tuntap.tuntap(args.tuntap) self.ws = WebSocket() self.ws.connect(url) self.greenlets = [ gevent.spawn(self.read_ws), gevent.spawn(self.read_fd) ]
try: msg = os.tp_read(self.tuntap.fd, 1500) if not msg: break except IOError: break if self.ws.closed: break self.ws.send(msg, True) def on_open(self): self.reader = gevent.spawn(self.read_fd) def on_close(self, reason): if (hasattr(self, 'reader')): self.reader.kill() def on_message(self, msg): if not msg: return os.tp_write(self.tuntap.fd, msg) if __name__ == "__main__": server.tuntap = tuntap.tuntap(args.tuntap) wss = WebSocketServer((args.src, args.port), Resource({args.loc: server})) try: wss.serve_forever() except KeyboardInterrupt: wss.close()