move MoneroWalletDaemon class to base_proto/monero
This commit is contained in:
parent
4f41b4dee0
commit
36e3de8595
8 changed files with 97 additions and 72 deletions
0
mmgen/base_proto/monero/__init__.py
Executable file
0
mmgen/base_proto/monero/__init__.py
Executable file
90
mmgen/base_proto/monero/daemon.py
Executable file
90
mmgen/base_proto/monero/daemon.py
Executable file
|
|
@ -0,0 +1,90 @@
|
|||
#!/usr/bin/env python3
|
||||
#
|
||||
# mmgen = Multi-Mode GENerator, a command-line cryptocurrency wallet
|
||||
# Copyright (C)2013-2022 The MMGen Project <mmgen@tuta.io>
|
||||
# Licensed under the GNU General Public License, Version 3:
|
||||
# https://www.gnu.org/licenses
|
||||
# Public project repositories:
|
||||
# https://github.com/mmgen/mmgen
|
||||
# https://gitlab.com/mmgen/mmgen
|
||||
|
||||
"""
|
||||
base_proto.monero.daemon: Monero daemon classes
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from ...globalvars import g
|
||||
from ...opts import opt
|
||||
from ...util import list_gen
|
||||
from ...daemon import CoinDaemon,RPCDaemon,_nw
|
||||
|
||||
class MoneroWalletDaemon(RPCDaemon):
|
||||
|
||||
master_daemon = 'monero_daemon'
|
||||
rpc_type = 'Monero wallet'
|
||||
exec_fn = 'monero-wallet-rpc'
|
||||
coin = 'XMR'
|
||||
new_console_mswin = True
|
||||
rpc_ports = _nw(13131, 13141, None) # testnet is non-standard
|
||||
|
||||
def __init__(self, proto, wallet_dir,
|
||||
test_suite = False,
|
||||
host = None,
|
||||
user = None,
|
||||
passwd = None,
|
||||
daemon_addr = None,
|
||||
proxy = None,
|
||||
port_shift = None,
|
||||
datadir = None ):
|
||||
|
||||
self.proto = proto
|
||||
self.test_suite = test_suite
|
||||
|
||||
super().__init__()
|
||||
|
||||
self.network = proto.network
|
||||
self.wallet_dir = wallet_dir
|
||||
self.rpc_port = getattr(self.rpc_ports,self.network) + (11 if test_suite else 0)
|
||||
if port_shift:
|
||||
self.rpc_port += port_shift
|
||||
|
||||
id_str = f'{self.exec_fn}-{self.bind_port}'
|
||||
self.datadir = os.path.join((datadir or self.exec_fn),('','test_suite')[test_suite])
|
||||
self.pidfile = os.path.join(self.datadir,id_str+'.pid')
|
||||
self.logfile = os.path.join(self.datadir,id_str+'.log')
|
||||
|
||||
self.proxy = proxy
|
||||
self.daemon_addr = daemon_addr
|
||||
self.daemon_port = None if daemon_addr else CoinDaemon(proto=proto,test_suite=test_suite).rpc_port
|
||||
|
||||
self.host = host or opt.wallet_rpc_host or g.monero_wallet_rpc_host
|
||||
self.user = user or opt.wallet_rpc_user or g.monero_wallet_rpc_user
|
||||
self.passwd = passwd or opt.wallet_rpc_password or g.monero_wallet_rpc_password
|
||||
|
||||
assert self.host
|
||||
assert self.user
|
||||
if not self.passwd:
|
||||
from ...util import die
|
||||
die(1,
|
||||
'You must set your Monero wallet RPC password.\n' +
|
||||
'This can be done on the command line with the --wallet-rpc-password option\n' +
|
||||
"(insecure, not recommended), or by setting 'monero_wallet_rpc_password' in\n" +
|
||||
"the MMGen config file." )
|
||||
|
||||
self.daemon_args = list_gen(
|
||||
['--untrusted-daemon'],
|
||||
[f'--rpc-bind-port={self.rpc_port}'],
|
||||
['--wallet-dir='+self.wallet_dir],
|
||||
['--log-file='+self.logfile],
|
||||
[f'--rpc-login={self.user}:{self.passwd}'],
|
||||
[f'--daemon-address={self.daemon_addr}', self.daemon_addr],
|
||||
[f'--daemon-port={self.daemon_port}', not self.daemon_addr],
|
||||
[f'--proxy={self.proxy}', self.proxy],
|
||||
[f'--pidfile={self.pidfile}', self.platform == 'linux'],
|
||||
['--detach', not (self.opt.no_daemonize or self.platform=='win')],
|
||||
['--stagenet', self.network == 'testnet'],
|
||||
)
|
||||
|
||||
from ...rpc import MoneroWalletRPCClient
|
||||
self.rpc = MoneroWalletRPCClient( daemon=self, test_connection=False )
|
||||
|
|
@ -246,75 +246,6 @@ class RPCDaemon(Daemon):
|
|||
def start_cmd(self):
|
||||
return ([self.exec_fn] + self.daemon_args + self.usr_daemon_args)
|
||||
|
||||
class MoneroWalletDaemon(RPCDaemon):
|
||||
|
||||
master_daemon = 'monero_daemon'
|
||||
rpc_type = 'Monero wallet'
|
||||
exec_fn = 'monero-wallet-rpc'
|
||||
coin = 'XMR'
|
||||
new_console_mswin = True
|
||||
rpc_ports = _nw(13131, 13141, None) # testnet is non-standard
|
||||
|
||||
def __init__(self, proto, wallet_dir,
|
||||
test_suite = False,
|
||||
host = None,
|
||||
user = None,
|
||||
passwd = None,
|
||||
daemon_addr = None,
|
||||
proxy = None,
|
||||
port_shift = None,
|
||||
datadir = None ):
|
||||
|
||||
self.proto = proto
|
||||
self.test_suite = test_suite
|
||||
|
||||
super().__init__()
|
||||
|
||||
self.network = proto.network
|
||||
self.wallet_dir = wallet_dir
|
||||
self.rpc_port = getattr(self.rpc_ports,self.network) + (11 if test_suite else 0)
|
||||
if port_shift:
|
||||
self.rpc_port += port_shift
|
||||
|
||||
id_str = f'{self.exec_fn}-{self.bind_port}'
|
||||
self.datadir = os.path.join((datadir or self.exec_fn),('','test_suite')[test_suite])
|
||||
self.pidfile = os.path.join(self.datadir,id_str+'.pid')
|
||||
self.logfile = os.path.join(self.datadir,id_str+'.log')
|
||||
|
||||
self.proxy = proxy
|
||||
self.daemon_addr = daemon_addr
|
||||
self.daemon_port = None if daemon_addr else CoinDaemon(proto=proto,test_suite=test_suite).rpc_port
|
||||
|
||||
self.host = host or opt.wallet_rpc_host or g.monero_wallet_rpc_host
|
||||
self.user = user or opt.wallet_rpc_user or g.monero_wallet_rpc_user
|
||||
self.passwd = passwd or opt.wallet_rpc_password or g.monero_wallet_rpc_password
|
||||
|
||||
assert self.host
|
||||
assert self.user
|
||||
if not self.passwd:
|
||||
die(1,
|
||||
'You must set your Monero wallet RPC password.\n' +
|
||||
'This can be done on the command line with the --wallet-rpc-password option\n' +
|
||||
"(insecure, not recommended), or by setting 'monero_wallet_rpc_password' in\n" +
|
||||
"the MMGen config file." )
|
||||
|
||||
self.daemon_args = list_gen(
|
||||
['--untrusted-daemon'],
|
||||
[f'--rpc-bind-port={self.rpc_port}'],
|
||||
['--wallet-dir='+self.wallet_dir],
|
||||
['--log-file='+self.logfile],
|
||||
[f'--rpc-login={self.user}:{self.passwd}'],
|
||||
[f'--daemon-address={self.daemon_addr}', self.daemon_addr],
|
||||
[f'--daemon-port={self.daemon_port}', not self.daemon_addr],
|
||||
[f'--proxy={self.proxy}', self.proxy],
|
||||
[f'--pidfile={self.pidfile}', self.platform == 'linux'],
|
||||
['--detach', not (self.opt.no_daemonize or self.platform=='win')],
|
||||
['--stagenet', self.network == 'testnet'],
|
||||
)
|
||||
|
||||
from .rpc import MoneroWalletRPCClient
|
||||
self.rpc = MoneroWalletRPCClient( daemon=self, test_connection=False )
|
||||
|
||||
class CoinDaemon(Daemon):
|
||||
networks = ('mainnet','testnet','regtest')
|
||||
cfg_file_hdr = ''
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ from .proto.common import b58a
|
|||
from .addr import CoinAddr,AddrIdx
|
||||
from .addrlist import KeyAddrList,AddrIdxList
|
||||
from .rpc import MoneroRPCClientRaw,MoneroWalletRPCClient,json_encoder
|
||||
from .daemon import MoneroWalletDaemon
|
||||
from .base_proto.monero.daemon import MoneroWalletDaemon
|
||||
|
||||
xmrwallet_uarg_info = (
|
||||
lambda e,hp: {
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ packages =
|
|||
mmgen.base_proto.ethereum.rlp
|
||||
mmgen.base_proto.ethereum.rlp.sedes
|
||||
mmgen.base_proto.ethereum.tx
|
||||
mmgen.base_proto.monero
|
||||
mmgen.proto
|
||||
mmgen.share
|
||||
mmgen.tool
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ def overlay_setup(repo_root):
|
|||
'mmgen.base_proto.ethereum.rlp',
|
||||
'mmgen.base_proto.ethereum.rlp.sedes',
|
||||
'mmgen.base_proto.ethereum.tx',
|
||||
'mmgen.base_proto.monero',
|
||||
'mmgen.data',
|
||||
'mmgen.proto',
|
||||
'mmgen.share',
|
||||
|
|
|
|||
|
|
@ -183,7 +183,8 @@ class TestSuiteXMRWallet(TestSuiteBase):
|
|||
atexit.register(kill_proxy)
|
||||
|
||||
def init_users(self):
|
||||
from mmgen.daemon import CoinDaemon,MoneroWalletDaemon
|
||||
from mmgen.daemon import CoinDaemon
|
||||
from mmgen.base_proto.monero.daemon import MoneroWalletDaemon
|
||||
from mmgen.rpc import MoneroRPCClient,MoneroRPCClientRaw,MoneroWalletRPCClient
|
||||
self.users = {}
|
||||
n = self.tmpdir_nums[0]
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@ from mmgen.common import *
|
|||
|
||||
from mmgen.protocol import init_proto
|
||||
from mmgen.rpc import rpc_init,MoneroWalletRPCClient
|
||||
from mmgen.daemon import CoinDaemon,MoneroWalletDaemon
|
||||
from mmgen.daemon import CoinDaemon
|
||||
from mmgen.base_proto.monero.daemon import MoneroWalletDaemon
|
||||
|
||||
def cfg_file_auth_test(proto,d):
|
||||
qmsg(cyan(f'\n Testing authentication with credentials from {d.cfg_file}:'))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue