Don't connect to XMR nodes at private ips over tor by default.
This commit is contained in:
parent
5ceaab57d1
commit
14298d022a
@ -59,6 +59,7 @@ from .util.address import (
|
|||||||
decodeAddress,
|
decodeAddress,
|
||||||
pubkeyToAddress,
|
pubkeyToAddress,
|
||||||
)
|
)
|
||||||
|
from basicswap.util.network import is_private_ip_address
|
||||||
from .chainparams import (
|
from .chainparams import (
|
||||||
Coins,
|
Coins,
|
||||||
chainparams,
|
chainparams,
|
||||||
@ -521,10 +522,23 @@ class BasicSwap(BaseApp):
|
|||||||
rpcport: int = coin_settings['rpcport']
|
rpcport: int = coin_settings['rpcport']
|
||||||
timeout: int = coin_settings['rpctimeout']
|
timeout: int = coin_settings['rpctimeout']
|
||||||
|
|
||||||
proxy_host: str = self.tor_proxy_host if self.use_tor_proxy else None
|
def get_rpc_func(rpcport, daemon_login, rpchost):
|
||||||
proxy_port: int = self.tor_proxy_port if self.use_tor_proxy else None
|
|
||||||
if proxy_host:
|
proxy_host = None
|
||||||
self.log.info(f'Connecting through proxy at {proxy_host}.')
|
proxy_port = None
|
||||||
|
if self.use_tor_proxy:
|
||||||
|
have_cc_tor_opt = 'use_tor' in chain_client_settings
|
||||||
|
if have_cc_tor_opt and chain_client_settings['use_tor'] is False:
|
||||||
|
self.log.warning('use_tor is true for system but false for XMR.')
|
||||||
|
elif have_cc_tor_opt is False and is_private_ip_address(rpchost):
|
||||||
|
self.log.warning(f'Not using proxy for XMR node at private ip address {rpchost}.')
|
||||||
|
else:
|
||||||
|
proxy_host = self.tor_proxy_host
|
||||||
|
proxy_port = self.tor_proxy_port
|
||||||
|
if proxy_host:
|
||||||
|
self.log.info(f'Connecting through proxy at {proxy_host}.')
|
||||||
|
|
||||||
|
return make_xmr_rpc2_func(rpcport, daemon_login, rpchost, proxy_host=proxy_host, proxy_port=proxy_port)
|
||||||
|
|
||||||
daemon_login = None
|
daemon_login = None
|
||||||
if coin_settings.get('rpcuser', '') != '':
|
if coin_settings.get('rpcuser', '') != '':
|
||||||
@ -533,7 +547,7 @@ class BasicSwap(BaseApp):
|
|||||||
if current_daemon_url in remote_daemon_urls:
|
if current_daemon_url in remote_daemon_urls:
|
||||||
self.log.info(f'Trying last used url {rpchost}:{rpcport}.')
|
self.log.info(f'Trying last used url {rpchost}:{rpcport}.')
|
||||||
try:
|
try:
|
||||||
rpc2 = make_xmr_rpc2_func(rpcport, daemon_login, rpchost, proxy_host=proxy_host, proxy_port=proxy_port)
|
rpc2 = get_rpc_func(rpcport, daemon_login, rpchost)
|
||||||
test = rpc2('get_height', timeout=timeout)['height']
|
test = rpc2('get_height', timeout=timeout)['height']
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@ -543,7 +557,7 @@ class BasicSwap(BaseApp):
|
|||||||
self.log.info(f'Trying url {url}.')
|
self.log.info(f'Trying url {url}.')
|
||||||
try:
|
try:
|
||||||
rpchost, rpcport = url.rsplit(':', 1)
|
rpchost, rpcport = url.rsplit(':', 1)
|
||||||
rpc2 = make_xmr_rpc2_func(rpcport, daemon_login, rpchost, proxy_host=proxy_host, proxy_port=proxy_port)
|
rpc2 = get_rpc_func(rpcport, daemon_login, rpchost)
|
||||||
test = rpc2('get_height', timeout=timeout)['height']
|
test = rpc2('get_height', timeout=timeout)['height']
|
||||||
coin_settings['rpchost'] = rpchost
|
coin_settings['rpchost'] = rpchost
|
||||||
coin_settings['rpcport'] = rpcport
|
coin_settings['rpcport'] = rpcport
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
# Copyright (c) 2020-2023 tecnovert
|
# Copyright (c) 2020-2024 tecnovert
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
# file LICENSE or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
@ -27,16 +27,16 @@ from coincurve.dleag import (
|
|||||||
from basicswap.interface import (
|
from basicswap.interface import (
|
||||||
Curves)
|
Curves)
|
||||||
from basicswap.util import (
|
from basicswap.util import (
|
||||||
i2b,
|
i2b, b2i, b2h,
|
||||||
dumpj,
|
dumpj,
|
||||||
ensure,
|
ensure,
|
||||||
make_int,
|
make_int,
|
||||||
TemporaryError)
|
TemporaryError)
|
||||||
|
from basicswap.util.network import (
|
||||||
|
is_private_ip_address)
|
||||||
from basicswap.rpc_xmr import (
|
from basicswap.rpc_xmr import (
|
||||||
make_xmr_rpc_func,
|
make_xmr_rpc_func,
|
||||||
make_xmr_rpc2_func)
|
make_xmr_rpc2_func)
|
||||||
from basicswap.util import (
|
|
||||||
b2i, b2h)
|
|
||||||
from basicswap.chainparams import XMR_COIN, CoinInterface, Coins
|
from basicswap.chainparams import XMR_COIN, CoinInterface, Coins
|
||||||
|
|
||||||
|
|
||||||
@ -102,9 +102,17 @@ class XMRInterface(CoinInterface):
|
|||||||
manage_daemon: bool = chain_client_settings['manage_daemon']
|
manage_daemon: bool = chain_client_settings['manage_daemon']
|
||||||
if swap_client.use_tor_proxy:
|
if swap_client.use_tor_proxy:
|
||||||
if manage_daemon is False:
|
if manage_daemon is False:
|
||||||
proxy_host = swap_client.tor_proxy_host
|
log_str: str = ''
|
||||||
proxy_port = swap_client.tor_proxy_port
|
have_cc_tor_opt = 'use_tor' in chain_client_settings
|
||||||
self._log.info(f'Connecting to remote {self.coin_name()} daemon at {rpchost} through proxy at {proxy_host}.')
|
if have_cc_tor_opt and chain_client_settings['use_tor'] is False:
|
||||||
|
log_str = ' bypassing proxy (use_tor false for XMR)'
|
||||||
|
elif have_cc_tor_opt is False and is_private_ip_address(rpchost):
|
||||||
|
log_str = ' bypassing proxy (private ip address)'
|
||||||
|
else:
|
||||||
|
proxy_host = swap_client.tor_proxy_host
|
||||||
|
proxy_port = swap_client.tor_proxy_port
|
||||||
|
log_str = f' through proxy at {proxy_host}'
|
||||||
|
self._log.info(f'Connecting to remote {self.coin_name()} daemon at {rpchost}{log_str}.')
|
||||||
else:
|
else:
|
||||||
self._log.info(f'Not connecting to local {self.coin_name()} daemon through proxy.')
|
self._log.info(f'Not connecting to local {self.coin_name()} daemon through proxy.')
|
||||||
elif manage_daemon is False:
|
elif manage_daemon is False:
|
||||||
|
Loading…
Reference in New Issue
Block a user