proto.xmr: disable version check for restricted (public) nodes

This commit is contained in:
The MMGen Project 2023-03-25 11:49:40 +00:00
commit f62a4ce5a9
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
4 changed files with 36 additions and 17 deletions

View file

@ -1 +1 @@
13.3.dev38
13.3.dev39

View file

@ -72,7 +72,12 @@ class monero_daemon(CoinDaemon):
@property
def stop_cmd(self):
return ['kill','-Wf',self.pid] if self.platform == 'win' else [self.exec_fn] + self.shared_args + ['exit']
if self.platform == 'win':
return ['kill','-Wf',self.pid]
elif '--restricted-rpc' in self.start_cmd or '--public-node' in self.start_cmd:
return ['kill',self.pid]
else:
return [self.exec_fn] + self.shared_args + ['exit']
class MoneroWalletDaemon(RPCDaemon):

View file

@ -59,15 +59,20 @@ class MoneroRPCClient(RPCClient):
if test_connection:
# https://github.com/monero-project/monero src/rpc/rpc_version_str.cpp
self.daemon_version_str = self.call_raw('getinfo')['version']
self.daemon_version = sum(
int(m) * (1000 ** n) for n,m in
enumerate(reversed(re.match(r'(\d+)\.(\d+)\.(\d+)\.(\d+)',self.daemon_version_str).groups()))
)
if self.daemon and self.daemon_version > self.daemon.coind_version:
self.handle_unsupported_daemon_version(
proto.name,
ignore_daemon_version or proto.ignore_daemon_version or g.ignore_daemon_version )
ver_str = self.call_raw('getinfo')['version']
if ver_str:
self.daemon_version_str = ver_str
self.daemon_version = sum(
int(m) * (1000 ** n) for n,m in
enumerate(reversed(re.match(r'(\d+)\.(\d+)\.(\d+)\.(\d+)',ver_str).groups()))
)
if self.daemon and self.daemon_version > self.daemon.coind_version:
self.handle_unsupported_daemon_version(
proto.name,
ignore_daemon_version or proto.ignore_daemon_version or g.ignore_daemon_version )
else: # restricted (public) node:
self.daemon_version_str = None
self.daemon_version = None
def call(self,method,*params,**kwargs):
assert params == (), f'{type(self).__name__}.call() accepts keyword arguments only'

View file

@ -208,11 +208,13 @@ class TestSuiteXMRWallet(TestSuiteBase):
'md_rpc',
'wd',
'wd_rpc',
'add_coind_args',
])
for user,sid,shift,kal_range in ( # kal_range must be None, a single digit, or a single hyphenated range
('miner', '98831F3A', 130, '1-2'),
('bob', '1378FC64', 140, None),
('alice', 'FE3C6545', 150, '1-4'),
# kal_range must be None, a single digit, or a single hyphenated range
for user,sid,shift,kal_range,add_coind_args in (
('miner', '98831F3A', 130, '1-2', []),
('bob', '1378FC64', 140, None, ['--restricted-rpc']),
('alice', 'FE3C6545', 150, '1-4', []),
):
udir = os.path.join('test',f'tmp{n}',user)
datadir = os.path.join(self.datadir_base,user)
@ -256,6 +258,7 @@ class TestSuiteXMRWallet(TestSuiteBase):
md_rpc = md_rpc,
wd = wd,
wd_rpc = wd_rpc,
add_coind_args = add_coind_args,
)
def init_daemon_args(self):
@ -263,7 +266,10 @@ class TestSuiteXMRWallet(TestSuiteBase):
for u in self.users:
other_ports = [self.users[u2].md.p2p_port for u2 in self.users if u2 != u]
node_args = [f'--add-exclusive-node=127.0.0.1:{p}' for p in other_ports]
self.users[u].md.usr_coind_args = common_args + node_args
self.users[u].md.usr_coind_args = (
common_args +
node_args +
self.users[u].add_coind_args )
# cmd_group methods
@ -707,7 +713,10 @@ class TestSuiteXMRWallet(TestSuiteBase):
def stop_daemons(self):
for v in self.users.values():
async_run(v.md_rpc.stop_daemon())
if '--restricted-rpc' in v.md.start_cmd:
v.md.stop()
else:
async_run(v.md_rpc.stop_daemon())
def stop_miner_wallet_daemon(self):
async_run(self.users['miner'].wd_rpc.stop_daemon())