Browse Source

move MoneroWalletDaemon class to `base_proto/monero`

The MMGen Project 3 years ago
parent
commit
36e3de8595

+ 0 - 0
mmgen/base_proto/monero/__init__.py


+ 90 - 0
mmgen/base_proto/monero/daemon.py

@@ -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 )

+ 0 - 69
mmgen/daemon.py

@@ -246,75 +246,6 @@ class RPCDaemon(Daemon):
 	def start_cmd(self):
 	def start_cmd(self):
 		return ([self.exec_fn] + self.daemon_args + self.usr_daemon_args)
 		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):
 class CoinDaemon(Daemon):
 	networks = ('mainnet','testnet','regtest')
 	networks = ('mainnet','testnet','regtest')
 	cfg_file_hdr = ''
 	cfg_file_hdr = ''

+ 1 - 1
mmgen/xmrwallet.py

@@ -31,7 +31,7 @@ from .proto.common import b58a
 from .addr import CoinAddr,AddrIdx
 from .addr import CoinAddr,AddrIdx
 from .addrlist import KeyAddrList,AddrIdxList
 from .addrlist import KeyAddrList,AddrIdxList
 from .rpc import MoneroRPCClientRaw,MoneroWalletRPCClient,json_encoder
 from .rpc import MoneroRPCClientRaw,MoneroWalletRPCClient,json_encoder
-from .daemon import MoneroWalletDaemon
+from .base_proto.monero.daemon import MoneroWalletDaemon
 
 
 xmrwallet_uarg_info = (
 xmrwallet_uarg_info = (
 	lambda e,hp: {
 	lambda e,hp: {

+ 1 - 0
setup.cfg

@@ -49,6 +49,7 @@ packages =
 	mmgen.base_proto.ethereum.rlp
 	mmgen.base_proto.ethereum.rlp
 	mmgen.base_proto.ethereum.rlp.sedes
 	mmgen.base_proto.ethereum.rlp.sedes
 	mmgen.base_proto.ethereum.tx
 	mmgen.base_proto.ethereum.tx
+	mmgen.base_proto.monero
 	mmgen.proto
 	mmgen.proto
 	mmgen.share
 	mmgen.share
 	mmgen.tool
 	mmgen.tool

+ 1 - 0
test/overlay/__init__.py

@@ -45,6 +45,7 @@ def overlay_setup(repo_root):
 				'mmgen.base_proto.ethereum.rlp',
 				'mmgen.base_proto.ethereum.rlp',
 				'mmgen.base_proto.ethereum.rlp.sedes',
 				'mmgen.base_proto.ethereum.rlp.sedes',
 				'mmgen.base_proto.ethereum.tx',
 				'mmgen.base_proto.ethereum.tx',
+				'mmgen.base_proto.monero',
 				'mmgen.data',
 				'mmgen.data',
 				'mmgen.proto',
 				'mmgen.proto',
 				'mmgen.share',
 				'mmgen.share',

+ 2 - 1
test/test_py_d/ts_xmrwallet.py

@@ -183,7 +183,8 @@ class TestSuiteXMRWallet(TestSuiteBase):
 			atexit.register(kill_proxy)
 			atexit.register(kill_proxy)
 
 
 	def init_users(self):
 	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
 		from mmgen.rpc import MoneroRPCClient,MoneroRPCClientRaw,MoneroWalletRPCClient
 		self.users = {}
 		self.users = {}
 		n = self.tmpdir_nums[0]
 		n = self.tmpdir_nums[0]

+ 2 - 1
test/unit_tests_d/ut_rpc.py

@@ -7,7 +7,8 @@ from mmgen.common import *
 
 
 from mmgen.protocol import init_proto
 from mmgen.protocol import init_proto
 from mmgen.rpc import rpc_init,MoneroWalletRPCClient
 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):
 def cfg_file_auth_test(proto,d):
 	qmsg(cyan(f'\n  Testing authentication with credentials from {d.cfg_file}:'))
 	qmsg(cyan(f'\n  Testing authentication with credentials from {d.cfg_file}:'))