forked from bitcoinafterlife/bal-electrum-plugin
v0.5.16: skip .onion will-executors from download when not on Tor
This commit is contained in:
@@ -121,7 +121,7 @@ class BalPlugin(BasePlugin):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_version = None
|
_version = None
|
||||||
__version__ = "0.5.15" # AUTOMATICALLY GENERATED DO NOT EDIT
|
__version__ = "0.5.16" # AUTOMATICALLY GENERATED DO NOT EDIT
|
||||||
|
|
||||||
# Command used to open an .ics calendar file, per operating system.
|
# Command used to open an .ics calendar file, per operating system.
|
||||||
default_app = {
|
default_app = {
|
||||||
|
|||||||
@@ -68,6 +68,47 @@ CHECK_GLOBAL_DEADLINE = NETWORK_DEADLINE
|
|||||||
_logger = get_logger(__name__)
|
_logger = get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------- #
|
||||||
|
# Tor / .onion helpers
|
||||||
|
# --------------------------------------------------------------------------- #
|
||||||
|
# A .onion will-executor is only reachable when Electrum routes traffic through
|
||||||
|
# Tor. There is no point downloading .onion servers from welist when Electrum is
|
||||||
|
# not on Tor: they would only waste time (unreachable). We therefore drop them
|
||||||
|
# from the downloaded list unless Tor is confirmed active. Electrum itself gates
|
||||||
|
# .onion the same way (`if host.endswith('.onion') and not self.is_proxy_tor`).
|
||||||
|
|
||||||
|
|
||||||
|
def is_onion_url(url):
|
||||||
|
"""True if the URL points to a Tor hidden service (.onion host)."""
|
||||||
|
if not url:
|
||||||
|
return False
|
||||||
|
try:
|
||||||
|
u = url.lower()
|
||||||
|
if "://" in u:
|
||||||
|
u = u.split("://", 1)[1]
|
||||||
|
host = u.split("/", 1)[0].split(":", 1)[0]
|
||||||
|
return host.endswith(".onion")
|
||||||
|
except Exception:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def is_tor_active():
|
||||||
|
"""True only if Electrum is CONFIRMED connected through Tor.
|
||||||
|
|
||||||
|
Reads Network.is_proxy_tor defensively (network may be None in offline
|
||||||
|
mode). It is TRI-STATE (True / False / None); we require True, so False and
|
||||||
|
None (undetermined) both mean "Tor not active". Available in Electrum 4.7.2
|
||||||
|
and 4.8.0.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
network = Network.get_instance()
|
||||||
|
if network is None:
|
||||||
|
return False
|
||||||
|
return network.is_proxy_tor is True
|
||||||
|
except Exception:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
chainname = BalPlugin.chainname
|
chainname = BalPlugin.chainname
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user