Browse Source

rpc.py: get regtest credentials from CoinDaemon

The MMGen Project 3 years ago
parent
commit
ae0618ad01
3 changed files with 18 additions and 11 deletions
  1. 15 6
      mmgen/daemon.py
  2. 0 5
      mmgen/opts.py
  3. 3 0
      mmgen/rpc.py

+ 15 - 6
mmgen/daemon.py

@@ -301,6 +301,8 @@ class CoinDaemon(Daemon):
 	avail_opts = ('no_daemonize','online')
 	avail_opts = ('no_daemonize','online')
 	testnet_dir = None
 	testnet_dir = None
 	test_suite_port_shift = 1237
 	test_suite_port_shift = 1237
+	rpc_user = None
+	rpc_password = None
 
 
 	coins = {
 	coins = {
 		'BTC': _cd('Bitcoin',           ['bitcoin_core']),
 		'BTC': _cd('Bitcoin',           ['bitcoin_core']),
@@ -505,14 +507,21 @@ class bitcoin_core_daemon(CoinDaemon):
 
 
 	def init_subclass(self):
 	def init_subclass(self):
 
 
-		from .regtest import MMGenRegtest
+		if self.network == 'regtest':
+			"""
+			fall back on hard-coded credentials
+			"""
+			from .regtest import MMGenRegtest
+			self.rpc_user = MMGenRegtest.rpc_user
+			self.rpc_password = MMGenRegtest.rpc_password
+
 		self.shared_args = list_gen(
 		self.shared_args = list_gen(
-			[f'--datadir={self.datadir}',                  self.nonstd_datadir or self.non_dfl_datadir],
+			[f'--datadir={self.datadir}',         self.nonstd_datadir or self.non_dfl_datadir],
 			[f'--rpcport={self.rpc_port}'],
 			[f'--rpcport={self.rpc_port}'],
-			[f'--rpcuser={MMGenRegtest.rpc_user}',         self.network == 'regtest'],
-			[f'--rpcpassword={MMGenRegtest.rpc_password}', self.network == 'regtest'],
-			['--testnet',                                  self.network == 'testnet'],
-			['--regtest',                                  self.network == 'regtest'],
+			[f'--rpcuser={self.rpc_user}',         self.network == 'regtest'],
+			[f'--rpcpassword={self.rpc_password}', self.network == 'regtest'],
+			['--testnet',                          self.network == 'testnet'],
+			['--regtest',                          self.network == 'regtest'],
 		)
 		)
 
 
 		self.coind_args = list_gen(
 		self.coind_args = list_gen(

+ 0 - 5
mmgen/opts.py

@@ -335,12 +335,7 @@ def init(opts_data=None,add_opts=None,init_opts=None,opt_filter=None,parse_only=
 
 
 	if g.bob or g.alice or g.prog_name == 'mmgen-regtest':
 	if g.bob or g.alice or g.prog_name == 'mmgen-regtest':
 		g.regtest = True
 		g.regtest = True
-		g.rpc_host = 'localhost'
 		g.data_dir = os.path.join(g.data_dir_root,'regtest',g.coin.lower(),('alice','bob')[g.bob])
 		g.data_dir = os.path.join(g.data_dir_root,'regtest',g.coin.lower(),('alice','bob')[g.bob])
-		from .regtest import MMGenRegtest
-		g.rpc_user = MMGenRegtest.rpc_user
-		g.rpc_password = MMGenRegtest.rpc_password
-		g.rpc_port = MMGenRegtest(g.coin).d.rpc_port
 
 
 	from .protocol import init_genonly_altcoins
 	from .protocol import init_genonly_altcoins
 	altcoin_trust_level = init_genonly_altcoins(
 	altcoin_trust_level = init_genonly_altcoins(

+ 3 - 0
mmgen/rpc.py

@@ -289,6 +289,9 @@ class RPCClient(MMGenObject):
 		else:
 		else:
 			user,passwd = self.get_daemon_cfg_options(('rpcuser','rpcpassword')).values()
 			user,passwd = self.get_daemon_cfg_options(('rpcuser','rpcpassword')).values()
 
 
+		if not (user and passwd):
+			user,passwd = (self.daemon.rpc_user,self.daemon.rpc_password)
+
 		if user and passwd:
 		if user and passwd:
 			self.auth = auth_data(user,passwd)
 			self.auth = auth_data(user,passwd)
 			return
 			return