diff --git a/letsencrypt/cli.py b/letsencrypt/cli.py index 5015e5651..914df7fb5 100644 --- a/letsencrypt/cli.py +++ b/letsencrypt/cli.py @@ -1022,6 +1022,12 @@ def _plugins_parsing(helpful, plugins): help='Provide laborious manual instructions for obtaining a cert') helpful.add("plugins", "--webroot", action="store_true", help='Obtain certs by placing files in a webroot directory.') + + # This would normally be a flag within the webroot plugin, the webroot + # plugin, but because it is parsed in conjunction with --domains, it lives + # here + helpful.add("webroot", "-w", "--webroot-path", action=WebrootPathProcessor, + help="public_html / webroot path") #helpful.add("plugins", "-w", action=WebrootAction, # help='Obtain certs by placing files in a webroot directory.') @@ -1031,6 +1037,25 @@ def _plugins_parsing(helpful, plugins): helpful.add_plugin_args(plugins) + +class WebrootPathProcessor(argparse.Action): + def __call__(self, parser, config, webroot, option_string=None): + """ + Keep a record of --webroot-path / -w flags during processing, so that + we know which apply to which -d flags + """ + if not config.webroot_path: + config.webroot_path = [] + # if any --domain flags preceded the first --webroot-path flag, + # apply that webroot path to those; subsequent entries in + # config.webroot_map are filled in by cli.DomainFlagProcessor + if config.domains: + config.webroot_map = dict([(d, webroot) for d in config.domains]) + else: + config.webroot_map = {} + config.webroot_path.append(webroot) + + class DomainFlagProcessor(argparse.Action): def __call__(self, parser, config, domain_arg, option_string=None): """ @@ -1047,6 +1072,7 @@ class DomainFlagProcessor(argparse.Action): for d in new_domains: config.webroot_map[d] = config.webroot_path[-1] + def setup_log_file_handler(args, logfile, fmt): """Setup file debug logging.""" log_file_path = os.path.join(args.logs_dir, logfile) diff --git a/letsencrypt/plugins/webroot.py b/letsencrypt/plugins/webroot.py index 421429ff0..33e8699a2 100644 --- a/letsencrypt/plugins/webroot.py +++ b/letsencrypt/plugins/webroot.py @@ -54,22 +54,7 @@ from letsencrypt.plugins import common logger = logging.getLogger(__name__) -class WebrootPathProcessor(argparse.Action): - def __call__(self, parser, config, webroot, option_string=None): - """ - Keep a record of --webroot-path / -w flags during processing, so that - we know which apply to which -d flags - """ - if not config.webroot_path: - config.webroot_path = [] - # if any --domain flags preceded the first --webroot-path flag, - # apply that webroot path to those; subsequent entries in - # config.webroot_map are filled in by cli.DomainFlagProcessor - if config.domains: - config.webroot_map = dict([(d, webroot) for d in config.domains]) - else: - config.webroot_map = {} - config.webroot_path.append(webroot) + class Authenticator(common.Plugin): """Webroot Authenticator.""" @@ -89,7 +74,7 @@ to serve all files under specified web root ({0}).""" @classmethod def add_parser_arguments(cls, add): - add("path", "-w", help="public_html / webroot path", action=WebrootPathAccumulator) + pass def get_chall_pref(self, domain): # pragma: no cover # pylint: disable=missing-docstring,no-self-use,unused-argument