autosign,xmrwallet: minor fixes and cleanups
This commit is contained in:
parent
686fdfcc72
commit
853d4ee29e
4 changed files with 34 additions and 21 deletions
|
|
@ -37,13 +37,19 @@ class Signable:
|
|||
|
||||
@property
|
||||
def unsigned(self):
|
||||
if not hasattr(self,'_unsigned'):
|
||||
return self._unprocessed( '_unsigned', self.rawext, self.sigext )
|
||||
|
||||
def _unprocessed(self,attrname,rawext,sigext):
|
||||
if not hasattr(self,attrname):
|
||||
dirlist = tuple(os.scandir(self.dir))
|
||||
names = tuple(f.name for f in dirlist)
|
||||
self._unsigned = tuple(f for f in dirlist
|
||||
if f.name.endswith('.'+self.rawext)
|
||||
and f.name[:-len(self.rawext)]+self.sigext not in names)
|
||||
return self._unsigned
|
||||
setattr(
|
||||
self,
|
||||
attrname,
|
||||
tuple(f for f in dirlist
|
||||
if f.name.endswith('.' + rawext)
|
||||
and f.name[:-len(rawext)] + sigext not in names) )
|
||||
return getattr(self,attrname)
|
||||
|
||||
def print_bad_list(self,bad_files):
|
||||
msg('\n{a}\n{b}'.format(
|
||||
|
|
@ -186,7 +192,10 @@ class Autosign:
|
|||
cfg.outdir = self.tx_dir
|
||||
cfg.passwd_file = self.keyfile
|
||||
|
||||
if 'coin' in cfg._uopts and not any(k in cfg._uopts for k in ('help','longhelp')):
|
||||
if any(k in cfg._uopts for k in ('help','longhelp')):
|
||||
return
|
||||
|
||||
if 'coin' in cfg._uopts:
|
||||
die(1,'--coin option not supported with this command. Use --coins instead')
|
||||
|
||||
self.coins = cfg.coins.upper().split(',') if cfg.coins else []
|
||||
|
|
@ -260,7 +269,7 @@ class Autosign:
|
|||
def do_umount(self):
|
||||
if os.path.ismount(self.mountpoint):
|
||||
run( ['sync'], check=True )
|
||||
msg(f'Unmounting {self.mountpoint}')
|
||||
msg(f'Unmounting {self.mountpoint!r}')
|
||||
run( ['umount',self.mountpoint], check=True )
|
||||
|
||||
def decrypt_wallets(self):
|
||||
|
|
|
|||
|
|
@ -238,12 +238,11 @@ if len(cmd_args) < 2:
|
|||
|
||||
op = cmd_args.pop(0)
|
||||
infile = cmd_args.pop(0)
|
||||
wallets = spec = None
|
||||
|
||||
if op not in MoneroWalletOps.ops:
|
||||
die(1,f'{op!r}: unrecognized operation')
|
||||
|
||||
wallets = spec = ''
|
||||
|
||||
if op == 'relay':
|
||||
if len(cmd_args) != 0:
|
||||
cfg._opts.usage()
|
||||
|
|
@ -268,5 +267,8 @@ try:
|
|||
m.post_main()
|
||||
except KeyboardInterrupt:
|
||||
ymsg('\nUser interrupt')
|
||||
finally:
|
||||
|
||||
try:
|
||||
async_run(m.stop_wallet_daemon())
|
||||
except Exception as e:
|
||||
ymsg(f'Unable to stop wallet daemon: {type(e).__name__}: {e}')
|
||||
|
|
|
|||
|
|
@ -127,13 +127,14 @@ class MoneroMMGenFile:
|
|||
|
||||
@property
|
||||
def full_chksum(self):
|
||||
return self.make_chksum(self.full_chksum_fields)
|
||||
return self.make_chksum(self.full_chksum_fields) if self.full_chksum_fields else None
|
||||
|
||||
def check_checksums(self,d_wrap):
|
||||
for k in ('base_chksum','full_chksum'):
|
||||
a = getattr(self,k)
|
||||
b = d_wrap[k]
|
||||
assert a == b, f'{k} mismatch: {a} != {b}'
|
||||
if a is not None:
|
||||
b = d_wrap[k]
|
||||
assert a == b, f'{k} mismatch: {a} != {b}'
|
||||
|
||||
def make_wrapped_data(self,in_data):
|
||||
return json.dumps(
|
||||
|
|
@ -144,6 +145,7 @@ class MoneroMMGenFile:
|
|||
}
|
||||
},
|
||||
cls = json_encoder,
|
||||
indent = 4,
|
||||
)
|
||||
|
||||
def extract_data_from_file(self,cfg,fn):
|
||||
|
|
@ -155,7 +157,6 @@ class MoneroMMGenTX:
|
|||
|
||||
data_label = 'MoneroMMGenTX'
|
||||
base_chksum_fields = ('op','create_time','network','seed_id','source','dest','amount')
|
||||
full_chksum_fields = ('op','create_time','network','seed_id','source','dest','amount','fee','blob')
|
||||
xmrwallet_tx_data = namedtuple('xmrwallet_tx_data',[
|
||||
'op',
|
||||
'create_time',
|
||||
|
|
@ -171,6 +172,7 @@ class MoneroMMGenTX:
|
|||
'blob',
|
||||
'metadata',
|
||||
])
|
||||
full_chksum_fields = set(xmrwallet_tx_data._fields) - {'metadata'}
|
||||
|
||||
def __init__(self):
|
||||
self.name = type(self).__name__
|
||||
|
|
@ -277,11 +279,12 @@ class MoneroMMGenTX:
|
|||
)
|
||||
|
||||
class NewSigned(New):
|
||||
desc = 'signed transaction data'
|
||||
desc = 'signed transaction'
|
||||
ext = 'sigtx'
|
||||
signed = True
|
||||
|
||||
class Completed(Base):
|
||||
desc = 'transaction'
|
||||
|
||||
def __init__(self,cfg,fn):
|
||||
|
||||
|
|
|
|||
|
|
@ -493,8 +493,8 @@ class TestSuiteXMRWallet(TestSuiteBase):
|
|||
amt = XMRAmt(strip_ansi_escapes(t.expect_getend('Amount: ')).replace('XMR','').strip())
|
||||
|
||||
dtype = 'signed'
|
||||
t.expect(f'Save {dtype} transaction data? (y/N): ','y')
|
||||
t.written_to_file(f'{dtype.capitalize()} transaction data')
|
||||
t.expect(f'Save {dtype} transaction? (y/N): ','y')
|
||||
t.written_to_file(f'{dtype.capitalize()} transaction')
|
||||
|
||||
if not no_relay:
|
||||
t.expect(f'Relay {op} transaction? (y/N): ','y')
|
||||
|
|
@ -544,20 +544,19 @@ class TestSuiteXMRWallet(TestSuiteBase):
|
|||
def transfer_to_miner_create2(self):
|
||||
return self.transfer_to_miner_create('0.0012')
|
||||
|
||||
def relay_tx(self,relay_opt=None,add_desc=None):
|
||||
def relay_tx(self,relay_opt,add_desc=None):
|
||||
user = 'alice'
|
||||
data = self.users[user]
|
||||
fn = get_file_with_ext(data.udir,'sigtx')
|
||||
add_desc = (', ' + add_desc) if add_desc else ''
|
||||
t = self.spawn(
|
||||
'mmgen-xmrwallet',
|
||||
self.extra_opts
|
||||
+ ([relay_opt] if relay_opt else [])
|
||||
+ [ 'relay', fn ],
|
||||
+ [ relay_opt, 'relay', get_file_with_ext(data.udir,'sigtx') ],
|
||||
extra_desc = f'(relaying TX, {capfirst(user)}{add_desc})' )
|
||||
t.expect('Relay transaction? ','y')
|
||||
t.read()
|
||||
t.ok()
|
||||
return t
|
||||
|
||||
async def transfer_to_miner_send1(self):
|
||||
self.relay_tx(f'--tx-relay-daemon={self.tx_relay_daemon_proxy_parm}',add_desc='via proxy')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue