From f64062b6f13dfc340fedcdfdf24156ae21414c1c Mon Sep 17 00:00:00 2001 From: SomberNight Date: Tue, 31 Jul 2018 20:25:53 +0200 Subject: [PATCH] add --noonion option to filter out onion servers closes #4531 --- electrum/commands.py | 1 + electrum/network.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/electrum/commands.py b/electrum/commands.py index 62d2ed6f4..8d6f4ac5d 100644 --- a/electrum/commands.py +++ b/electrum/commands.py @@ -826,6 +826,7 @@ def add_network_options(parser): parser.add_argument("-1", "--oneserver", action="store_true", dest="oneserver", default=None, help="connect to one server only") parser.add_argument("-s", "--server", dest="server", default=None, help="set server host:port:protocol, where protocol is either t (tcp) or s (ssl)") parser.add_argument("-p", "--proxy", dest="proxy", default=None, help="set proxy [type:]host[:port], where type is socks4,socks5 or http") + parser.add_argument("--noonion", action="store_true", dest="noonion", default=None, help="do not try to connect to onion servers") def add_global_options(parser): group = parser.add_argument_group('global options') diff --git a/electrum/network.py b/electrum/network.py index 07bad8dc4..d31569d69 100644 --- a/electrum/network.py +++ b/electrum/network.py @@ -89,6 +89,10 @@ def filter_version(servers): return {k: v for k, v in servers.items() if is_recent(v.get('version'))} +def filter_noonion(servers): + return {k: v for k, v in servers.items() if not k.endswith('.onion')} + + def filter_protocol(hostmap, protocol='s'): '''Filters the hostmap for those implementing protocol. The result is a list in serialized form.''' @@ -409,6 +413,8 @@ class Network(util.DaemonThread): continue if host not in out: out[host] = {protocol: port} + if self.config.get('noonion'): + out = filter_noonion(out) return out @with_interface_lock