def __init__(self, config, doneflag, listen_fail_ok=False): self.config = dict(config) Anomos.Crypto.init(self.config['data_dir']) self.sessionid = Anomos.Crypto.get_rand(8) self.certificate = Anomos.Crypto.Certificate(self.config['identity']) self.ssl_ctx = self.certificate.get_ctx(allow_unknown_ca=True) self.event_handler = EventHandler(doneflag) self.schedule = self.event_handler.schedule self.ratelimiter = RateLimiter(self.schedule) self.ratelimiter.set_parameters(config['max_upload_rate'], config['upload_unit_size']) self.nbr_mngrs = {} self.torrents = {} self.singleport_listener = SingleportListener(self.config, self.ssl_ctx) self.singleport_listener.find_port(listen_fail_ok) self.filepool = FilePool(config['max_files_open']) set_filesystem_encoding(config['filesystem_encoding'])