diff --git a/src/calibre/gui2/preferences/server.py b/src/calibre/gui2/preferences/server.py index e72d5a2b78..465528306b 100644 --- a/src/calibre/gui2/preferences/server.py +++ b/src/calibre/gui2/preferences/server.py @@ -171,14 +171,6 @@ class Text(QLineEdit): self.setText(str(val or '')) -class IPAddresses(Text): - - def set(self, val): - if isinstance(val, tuple): - val = ', '.join(map(str, val)) - self.setText(str(val or '')) - - class Path(QWidget): changed_signal = pyqtSignal() @@ -265,8 +257,6 @@ class AdvancedTab(QWidget): w = Text if name in ('ssl_certfile', 'ssl_keyfile'): w = Path - elif name == 'trusted_ips': - w = IPAddresses w = w(name, l) setattr(self, 'opt_' + name, w) self.widgets.append(w) diff --git a/src/calibre/srv/loop.py b/src/calibre/srv/loop.py index ac0e13c1c1..1a280c912c 100644 --- a/src/calibre/srv/loop.py +++ b/src/calibre/srv/loop.py @@ -11,7 +11,7 @@ import socket import ssl import traceback from contextlib import suppress -from functools import partial +from functools import partial, lru_cache from io import BytesIO from calibre import as_unicode @@ -165,7 +165,7 @@ class Connection: # {{{ self.remote_addr = self.remote_port = self.parsed_remote_addr = None self.is_trusted_ip = bool(self.opts.local_write and getattr(self.parsed_remote_addr, 'is_loopback', False)) if not self.is_trusted_ip and self.opts.trusted_ips and self.parsed_remote_addr is not None: - self.is_trusted_ip = is_ip_trusted(self.parsed_remote_addr, self.opts.trusted_ips) + self.is_trusted_ip = is_ip_trusted(self.parsed_remote_addr, parsed_trusted_ips(self.opts.trusted_ips)) self.orig_send_bufsize = self.send_bufsize = 4096 self.tdir = tdir self.wait_for = READ @@ -367,6 +367,11 @@ class Connection: # {{{ # }}} +@lru_cache(maxsize=2) +def parsed_trusted_ips(raw): + return tuple(parse_trusted_ips(raw)) if raw else () + + class ServerLoop: LISTENING_MSG = 'calibre server listening on' @@ -386,8 +391,6 @@ class ServerLoop: self.ready = False self.handler = handler self.opts = opts or Options() - if self.opts.trusted_ips: - self.opts.trusted_ips = tuple(parse_trusted_ips(self.opts.trusted_ips)) self.log = log or ThreadSafeLog(level=ThreadSafeLog.DEBUG) self.jobs_manager = JobsManager(self.opts, self.log) self.access_log = access_log