def validusermod(usermod, username, password): if (usermod == False): if (username != None): click.echo() raise click.NoSuchOption( username, "Admin() got an unexpected argument '--username' ('admin --help' for usage help)" ) if (password != None): click.echo() raise click.NoSuchOption( password, "Admin() got an unexpected argument '--passw' ('admin --help' for usage help)" ) else: if (username == None): click.echo() raise click.BadOptionUsage(username, "Missing option '--username'") if (password == None): click.echo() raise click.BadOptionUsage(password, "Missing option '--passw'") usercheck(username) passwcheck(password) if usermod: return True return False
def clear(ctx, device, index, app): """Clears the app data.""" device = __determine_device_id(ctx.params) app = __get_id(app, Config.SECTION_APP, Config.KEY_DEFAULT) if app is None: raise click.NoSuchOption("app", "app id is required.") Adb.clear_app_data(device, app)
def kill(ctx, device, index, app): """Kills (force-stop) the app.""" device = __determine_device_id(ctx.params) app = __get_id(app, Config.SECTION_APP, Config.KEY_DEFAULT) if app is None: raise click.NoSuchOption("app", "app id is required.") Adb.kill_app(device, app)
def validsessionsupd(upd, source): if (upd == False): if (source != None): click.echo() raise click.NoSuchOption( username, "Admin() got an unexpected argument '--source' (Try 'admin --help' for usage help)" ) else: if (source == None): click.echo() raise click.BadOptionUsage(source, "Missing option '--source'") if upd: return True return False
def validate_preload_argv(ctx, param, value): """Click option callback providing validation of preload subcommand arguments.""" if not value and not ctx.params.get("preload", None): # No preload argv provided and no preload modules specified. return value if value and not ctx.params.get("preload", None): # Report a usage error matching standard click error conventions. unexpected_args = [v for v in value if v.startswith("-")] for a in unexpected_args: raise click.NoSuchOption(a) raise click.UsageError( "Got unexpected extra argument%s: (%s)" % ("s" if len(value) > 1 else "", " ".join(value)) ) preload_modules = { name: _import_module(name) for name in ctx.params.get("preload") if not is_webaddress(name) } preload_commands = [ getattr(m, "dask_setup", None) for m in preload_modules.values() if isinstance(getattr(m, "dask_setup", None), click.Command) ] if len(preload_commands) > 1: raise click.UsageError( "Multiple --preload modules with click-configurable setup: %s" % list(preload_modules.keys()) ) if value and not preload_commands: raise click.UsageError( "Unknown argument specified: %r Was click-configurable --preload target provided?" ) if not preload_commands: return value else: preload_command = preload_commands[0] ctx = click.Context(preload_command, allow_extra_args=False) preload_command.parse_args(ctx, list(value)) return value
def f(_: Any, param: Parameter, value: Any) -> None: if value is not None: raise click.NoSuchOption( f'--{param.name.replace("_", "-")} is no longer a valid option. ' + message )
def certidude_list(ca, show_key_type, show_extensions, show_path): from pycountry import countries def dump_common(j): if show_path: click.echo(" | | Path: %s" % j.path) person = [j for j in (j.given_name, j.surname) if j] if person: click.echo(" | | Associated person: %s" % " ".join(person) + (" <%s>" % j.email_address if j.email_address else "")) elif j.email_address: click.echo(" | | Associated e-mail: " + j.email_address) bits = [ j for j in (countries.get( alpha2=j.country_code.upper()).name if j.country_code else "", j.state_or_county, j.city, j.organization, j.organizational_unit) if j ] if bits: click.echo(" | | Organization: %s" % ", ".join(bits)) if show_key_type: click.echo(" | | Key type: %s-bit %s" % (j.key_length, j.key_type)) if show_extensions: for key, value, data in j.extensions: click.echo((" | | Extension " + key + ":").ljust(50) + " " + value) elif j.key_usage: click.echo(" | | Key usage: " + j.key_usage) click.echo(" | |") config = load_config() wanted_list = None if ca: missing = list(set(ca) - set(config.ca_list)) if missing: raise click.NoSuchOption( option_name='', message="Unable to find certificate authority.", possibilities=config.ca_list) wanted_list = ca for ca in config.all_authorities(wanted_list): click.echo("Certificate authority " + click.style(ca.slug, fg="blue")) # if ca.certificate.email_address: # click.echo(" \u2709 %s" % ca.certificate.email_address) if ca.certificate.signed < NOW and ca.certificate.expires > NOW: print(ca.certificate.expires) click.echo(" | \u2713 Certificate: " + click.style("valid", fg="green") + ", %s" % ca.certificate.expires) elif NOW > ca.certificate.expires: click.echo(" | \u2717 Certificate: " + click.style("expired", fg="red")) else: click.echo(" | \u2717 Certificate: " + click.style("not valid yet", fg="red")) if os.path.exists(ca.private_key): click.echo(" | \u2713 Private key " + ca.private_key + ": " + click.style("okay", fg="green")) # TODO: Check permissions else: click.echo(" | \u2717 Private key " + ca.private_key + ": " + click.style("does not exist", fg="red")) if os.path.isdir(ca.signed_dir): click.echo(" | \u2713 Signed certificates directory " + ca.signed_dir + ": " + click.style("okay", fg="green")) else: click.echo(" | \u2717 Signed certificates directory " + ca.signed_dir + ": " + click.style("does not exist", fg="red")) if ca.revoked_dir: click.echo(" | Revoked certificates directory: %s" % ca.revoked_dir) click.echo(" +-- Pending requests") for j in ca.get_requests(): click.echo(" | +-- Request " + click.style(j.common_name, fg="blue")) click.echo(" | | Submitted: %s, %s" % (naturaltime(j.created), j.created)) dump_common(j) click.echo(" +-- Signed certificates") for j in ca.get_signed(): click.echo( " | +-- Certificate " + click.style(j.common_name, fg="blue") + " " + click.style( ":".join(re.findall("\d\d", j.serial_number)), fg="white")) if j.signed < NOW and j.expires > NOW: click.echo(" | | \u2713 Certificate " + click.style("valid", fg="green") + " " + naturaltime(j.expires)) elif NOW > j.expires: click.echo(" | | \u2717 Certificate " + click.style("expired", fg="red") + " " + naturaltime(j.expires)) else: click.echo(" | | \u2717 Certificate " + click.style("not valid yet", fg="red")) dump_common(j) click.echo(" +-- Revocations") for j in ca.get_revoked(): click.echo( " | +-- Revocation " + click.style(j.common_name, fg="blue") + " " + click.style( ":".join(re.findall("\d\d", j.serial_number)), fg="white")) # click.echo(" | | Serial: %s" % ":".join(re.findall("\d\d", j.serial_number))) if show_path: click.echo(" | | Path: %s" % j.path) click.echo(" | | Revoked: %s%s" % (naturaltime(NOW - j.changed), click.style(", %s" % j.changed, fg="white"))) dump_common(j) click.echo()
def f(_, param, value): if value is not None: raise click.NoSuchOption( f'--{param.name.replace("_", "-")} is no longer a valid option. ' + message)
def launcher(results, debug, trace, config, cc, log): # This raises (by intension) if no context. ctx = click.get_current_context() params = {} for res in results: params.update(res) # Verify the parameters defined in the configuration file: for cmd in ['box', 'tor', 'proxy']: # If there was a config file, it's values have been loaded into the default_map dm = ctx.default_map.get(cmd, {}) # This is a command func = globals()[cmd] # Get the interface = names of all valid parameters of our command func_params_name = [p.name for p in func.params] # Check if a parameter found in the config file... for d in dm: # ... is part of the interface: if d not in func_params_name: # If not, raise an error! ref = {'box': 'TheOnionBox', 'tor': 'Tor', 'proxy': 'Proxy'} raise click.NoSuchOption( d, f'Invalid option in configuration file: [{ref[cmd]}] {d}') # After this validation, # we use the values found in the default_map to feed the commands that are not called via the command line if cmd not in params: # call the command with the values from the config file params.update(ctx.invoke(func, **dm)) if params['proxy']['control'] == 'tor': transfer = ['control', 'host', 'port', 'socket'] for item in transfer: params['proxy'][item] = params['tor'][item] else: check = ['host', 'port', 'socket'] for item in check: if params['proxy'][item] == 'tor': params['proxy'][item] = params['tor'][item] params['debug'] = debug params['trace'] = trace params['config'] = config params['cc'] = cc params['log'] = log # Next We do all the stuff to prepare the environment to run a Box # Provide the demanded CurrentWorkingDirectory ... without truely changing to it via os.chdir !! # We resolve this Path, as __file__ might be relative, if __name__ == __main__. cwd = pathlib.Path(__file__).resolve() cwd = cwd.parent assert cwd.exists() params['cwd'] = cwd if __name__ == '__main__' or __package__ in [None, '']: # Add the current dir to the site-dirs, to allow ABSOLUTE import site.addsitedir(cwd) from tob.box import Box else: # we're in a package => RELATIVE should work. from .tob.box import Box tob = Box(params) tob.run()
def f(_: Any, param: Parameter, value: Any) -> None: if value is not None: param_name = param.name.replace("_", "-") if param.name else "unnamed-param" raise click.NoSuchOption(f"--{param_name} is no longer a valid option. " + message)