New feature: input_redirect in cleanup_args(). Since this function might be run from outside a tty, there's no way to get input. So an external input handler is required. This enables that functionality. Also some cleanup to get_instructions so that we can load them from some where else in the future.

This commit is contained in:
Anton Hvornum 2020-03-16 17:20:26 +01:00
parent 113c7c23b0
commit cab78fee0a
1 changed files with 6 additions and 3 deletions

View File

@ -558,10 +558,12 @@ def disk_info(drive, *positionals, **kwargs):
return info return info
def cleanup_args(): def cleanup_args(*positionals, **kwargs):
for key in args: for key in args:
if args[key] == '<STDIN>': if args[key] == '<STDIN>':
if not args['unattended']: if not args['unattended']:
if 'input_redirect' in kwargs:
args[key] = kwargs['input_redirect'](key)
args[key] = input(f'Enter a value for {key}: ') args[key] = input(f'Enter a value for {key}: ')
else: else:
args[key] = random_string(32) args[key] = random_string(32)
@ -725,12 +727,13 @@ def get_local_instructions(target):
return instructions return instructions
def get_instructions(target, *positionals, **kwargs): def get_instructions(target, *positionals, **kwargs):
if not 'profiles-path' in kwargs: kwargs['profiles-path'] = args['profiles-path']
instructions = oDict() instructions = oDict()
if target[0-len('.json'):] == '.json': target = target[:0-len('.json')] if target[0-len('.json'):] == '.json': target = target[:0-len('.json')]
log(f'Fetching instructions for {target}', level=4, origin='get_instructions') log(f'Fetching instructions for {target}', level=4, origin='get_instructions')
if get_default_gateway_linux(): if get_default_gateway_linux():
try: try:
instructions = grab_url_data('{}/{}.json'.format(args['profiles-path'], target)).decode('UTF-8') instructions = grab_url_data(f"{kwargs['profiles-path']}/{target}.json").decode('UTF-8')
log(f'Found net-deploy instructions for {target}', level=4, origin='get_instructions') log(f'Found net-deploy instructions for {target}', level=4, origin='get_instructions')
print('[N] Found net-deploy instructions called: {}'.format(target)) print('[N] Found net-deploy instructions called: {}'.format(target))
except urllib.error.HTTPError: except urllib.error.HTTPError:
@ -745,7 +748,7 @@ def get_instructions(target, *positionals, **kwargs):
instructions = json.loads(instructions, object_pairs_hook=oDict) instructions = json.loads(instructions, object_pairs_hook=oDict)
except: except:
log(f'JSON syntax error in: {target}', level=4, origin='get_instructions') log(f'JSON syntax error in: {target}', level=4, origin='get_instructions')
print('[E] JSON syntax error in {}'.format('{}/{}.json'.format(args['profiles-path'], target))) print('[E] JSON syntax error in {}'.format('{}/{}.json'.format(kwargs['profiles-path'], target)))
traceback.print_exc() traceback.print_exc()
exit(1) exit(1)