def get_default_args() -> Dict[str, str]: """ Retrieve the default values of CLI flags depending on the execution context. """ if os.environ.get("SNAP"): user_home = os.environ.get("SNAP_REAL_HOME", str(Path.home())) return { "config": os.path.join(user_home, "dnsrobocert/dnsrobocert.yml"), "configDesc": os.path.join(user_home, "dnsrobocert/dnsrobocert.yml"), "directory": os.path.join(user_home, "dnsrobocert/letsencrypt"), "directoryDesc": os.path.join(user_home, "dnsrobocert/letsencrypt"), } return { "config": os.path.join(os.getcwd(), "dnsrobocert.yml"), "configDesc": "$(pwd)/dnsrobocert.yml", "directory": misc.get_default_folder("config"), "directoryDesc": misc.get_default_folder("config"), }
def get_email(invalid=False, optional=True): """Prompt for valid email address. :param bool invalid: True if an invalid address was provided by the user :param bool optional: True if the user can use --register-unsafely-without-email to avoid providing an e-mail :returns: e-mail address :rtype: str :raises errors.Error: if the user cancels """ invalid_prefix = "There seem to be problems with that address. " msg = "Enter email address (used for urgent renewal and security notices)" unsafe_suggestion = ("\n\nIf you really want to skip this, you can run " "the client with --register-unsafely-without-email " "but make sure you then backup your account key from " "{0}\n\n".format( os.path.join(misc.get_default_folder('config'), 'accounts'))) if optional: if invalid: msg += unsafe_suggestion suggest_unsafe = False else: suggest_unsafe = True else: suggest_unsafe = False while True: try: code, email = z_util(interfaces.IDisplay).input( invalid_prefix + msg if invalid else msg, force_interactive=True) except errors.MissingCommandlineFlag: msg = ("You should register before running non-interactively, " "or provide --agree-tos and --email <email_address> flags.") raise errors.MissingCommandlineFlag(msg) if code != display_util.OK: if optional: raise errors.Error( "An e-mail address or " "--register-unsafely-without-email must be provided.") else: raise errors.Error("An e-mail address must be provided.") elif util.safe_email(email): return email elif suggest_unsafe: msg += unsafe_suggestion suggest_unsafe = False # add this message at most once invalid = bool(email)
def get_email(invalid=False, optional=True): """Prompt for valid email address. :param bool invalid: True if an invalid address was provided by the user :param bool optional: True if the user can use --register-unsafely-without-email to avoid providing an e-mail :returns: e-mail address :rtype: str :raises errors.Error: if the user cancels """ invalid_prefix = "There seem to be problems with that address. " msg = "Enter email address (used for urgent renewal and security notices)" unsafe_suggestion = ("\n\nIf you really want to skip this, you can run " "the client with --register-unsafely-without-email " "but make sure you then backup your account key from " "{0}\n\n".format(os.path.join( misc.get_default_folder('config'), 'accounts'))) if optional: if invalid: msg += unsafe_suggestion suggest_unsafe = False else: suggest_unsafe = True else: suggest_unsafe = False while True: try: code, email = z_util(interfaces.IDisplay).input( invalid_prefix + msg if invalid else msg, force_interactive=True) except errors.MissingCommandlineFlag: msg = ("You should register before running non-interactively, " "or provide --agree-tos and --email <email_address> flags.") raise errors.MissingCommandlineFlag(msg) if code != display_util.OK: if optional: raise errors.Error( "An e-mail address or " "--register-unsafely-without-email must be provided.") else: raise errors.Error("An e-mail address must be provided.") elif util.safe_email(email): return email elif suggest_unsafe: msg += unsafe_suggestion suggest_unsafe = False # add this message at most once invalid = bool(email)
def main(args: Optional[List[str]] = None): if not args: args = sys.argv[1:] parser = argparse.ArgumentParser(description="Start dnsrobocert.") parser.add_argument( "--config", "-c", default=os.path.join(misc.get_default_folder("config"), "dnsrobocert.yml"), help="Set the dnsrobocert config to use.", ) parser.add_argument( "--directory", "-d", default=misc.get_default_folder("config"), help="Set the directory path where certificates are stored.", ) parsed_args = parser.parse_args(args) _watch_config(os.path.abspath(parsed_args.config), os.path.abspath(parsed_args.directory))
import pkg_resources from acme import challenges from certbot.compat import misc SETUPTOOLS_PLUGINS_ENTRY_POINT = "certbot.plugins" """Setuptools entry point group name for plugins.""" OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT = "letsencrypt.plugins" """Plugins Setuptools entry point before rename.""" CLI_DEFAULTS = dict( config_files=[ os.path.join(misc.get_default_folder('config'), 'cli.ini'), # http://freedesktop.org/wiki/Software/xdg-user-dirs/ os.path.join(os.environ.get("XDG_CONFIG_HOME", "~/.config"), "letsencrypt", "cli.ini"), ], # Main parser verbose_count=-int(logging.INFO / 10), text_mode=False, max_log_backups=1000, noninteractive_mode=False, force_interactive=False, domains=[], certname=None, dry_run=False, register_unsafely_without_email=False,
import pkg_resources from acme import challenges from certbot.compat import misc from certbot.compat import os SETUPTOOLS_PLUGINS_ENTRY_POINT = "certbot.plugins" """Setuptools entry point group name for plugins.""" OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT = "letsencrypt.plugins" """Plugins Setuptools entry point before rename.""" CLI_DEFAULTS = dict( config_files=[ os.path.join(misc.get_default_folder('config'), 'cli.ini'), # http://freedesktop.org/wiki/Software/xdg-user-dirs/ os.path.join(os.environ.get("XDG_CONFIG_HOME", "~/.config"), "letsencrypt", "cli.ini"), ], # Main parser verbose_count=-int(logging.INFO / 10), text_mode=False, max_log_backups=1000, noninteractive_mode=False, force_interactive=False, domains=[], certname=None, dry_run=False, register_unsafely_without_email=False,