diff --git a/webssh/worker.py b/webssh/worker.py index 098538e..91e05bd 100644 --- a/webssh/worker.py +++ b/webssh/worker.py @@ -1,4 +1,5 @@ import logging +import secrets import tornado.websocket from tornado.ioloop import IOLoop @@ -36,7 +37,7 @@ class Worker(object): self.chan = chan self.dst_addr = dst_addr self.fd = chan.fileno() - self.id = str(id(self)) + self.id = self.gen_id() self.data_to_dst = [] self.handler = None self.mode = IOLoop.READ @@ -50,6 +51,10 @@ class Worker(object): if events & IOLoop.ERROR: self.close(reason='error event occurred') + @classmethod + def gen_id(cls): + return secrets.token_urlsafe(nbytes=32) + def set_handler(self, handler): if not self.handler: self.handler = handler