if args.domains and args.csr is not None: # TODO: --csr could have a priority, when --domains is # supplied, check if CSR matches given domains? return "--domains and --csr are mutually exclusive" try: # installers are used in auth mode to determine domain names installer, authenticator = choose_configurator_plugins(args, config, plugins, "certonly") except errors.PluginSelectionError, e: return e.message # TODO: Handle errors from _init_le_client? le_client = init_le_client(args, config, authenticator, installer) # This is a special case; cert and chain are simply saved if args.csr is not None: certr, chain = le_client.obtain_certificate_from_csr(le_util.CSR( file=args.csr[0], data=args.csr[1], form="der")) cert_path, _, cert_fullchain = le_client.save_certificate( certr, chain, args.cert_path, args.chain_path, args.fullchain_path) _report_new_cert(cert_path, cert_fullchain) elif args.private_key: domains = _find_domains(args, installer) auth_from_domains_with_key(le_client, config, domains, key=args.private_key) else: domains = _find_domains(args, installer) _auth_from_domains(le_client, config, domains) _suggest_donate()
# Possible difficulties: args.csr was hacked into auth def run(args, config, plugins): # pylint: disable=too-many-branches,too-many-locals """Obtain a certificate and install.""" try: installer, authenticator = choose_configurator_plugins(args, config, plugins, "run") except errors.PluginSelectionError, e: return e.message domains = _find_domains(args, installer) # TODO: Handle errors from _init_le_client? le_client = init_le_client(args, config, authenticator, installer) if args.private_key: lineage = auth_from_domains_with_key(le_client, config, domains, args.private_key) else: lineage = _auth_from_domains(le_client, config, domains) le_client.deploy_certificate( domains, lineage.privkey, lineage.cert, lineage.chain, lineage.fullchain) le_client.enhance_config(domains, config) if len(lineage.available_versions("cert")) == 1: display_ops.success_installation(domains) else: display_ops.success_renewal(domains) _suggest_donate()