SomberNight
3 years ago
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
2 changed files with
23 additions and
2 deletions
-
electrum/interface.py
-
electrum/util.py
|
|
@ -372,9 +372,17 @@ class Interface(Logger): |
|
|
|
self.blockchain = None # type: Optional[Blockchain] |
|
|
|
self._requested_chunks = set() # type: Set[int] |
|
|
|
self.network = network |
|
|
|
self.proxy = MySocksProxy.from_proxy_dict(proxy) |
|
|
|
self.session = None # type: Optional[NotificationSession] |
|
|
|
self._ipaddr_bucket = None |
|
|
|
# Set up proxy. |
|
|
|
# - for servers running on localhost, the proxy is not used. If user runs their own server |
|
|
|
# on same machine, this lets them enable the proxy (which is used for e.g. FX rates). |
|
|
|
# note: we could maybe relax this further and bypass the proxy for all private |
|
|
|
# addresses...? e.g. 192.168.x.x |
|
|
|
if util.is_localhost(server.host): |
|
|
|
self.logger.info(f"looks like localhost: not using proxy for this server") |
|
|
|
proxy = None |
|
|
|
self.proxy = MySocksProxy.from_proxy_dict(proxy) |
|
|
|
|
|
|
|
# Latest block header and corresponding height, as claimed by the server. |
|
|
|
# Note that these values are updated before they are verified. |
|
|
|
|
|
@ -1529,11 +1529,24 @@ def is_ip_address(x: Union[str, bytes]) -> bool: |
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
def is_private_netaddress(host: str) -> bool: |
|
|
|
def is_localhost(host: str) -> bool: |
|
|
|
if str(host) in ('localhost', 'localhost.',): |
|
|
|
return True |
|
|
|
if host[0] == '[' and host[-1] == ']': # IPv6 |
|
|
|
host = host[1:-1] |
|
|
|
try: |
|
|
|
ip_addr = ipaddress.ip_address(host) # type: Union[IPv4Address, IPv6Address] |
|
|
|
return ip_addr.is_loopback |
|
|
|
except ValueError: |
|
|
|
pass # not an IP |
|
|
|
return False |
|
|
|
|
|
|
|
|
|
|
|
def is_private_netaddress(host: str) -> bool: |
|
|
|
if is_localhost(host): |
|
|
|
return True |
|
|
|
if host[0] == '[' and host[-1] == ']': # IPv6 |
|
|
|
host = host[1:-1] |
|
|
|
try: |
|
|
|
ip_addr = ipaddress.ip_address(host) # type: Union[IPv4Address, IPv6Address] |
|
|
|
return ip_addr.is_private |
|
|
|