Пример #1
0
def list_certificates():
    """Display information about certs configured with Certbot

    :param config: Configuration.
    :type config: :class:`certbot._internal.configuration.NamespaceConfig`
    """
    
    plugins = plugins_disco.PluginsRegistry.find_all()
    
    args = cli.prepare_and_parse_args(plugins, [
        "certificates", 
        "--config-dir=" + constants.CONFIG_DIR, 
        "--work-dir=" + constants.WORK_DIR, 
        "--logs=" + constants.LOGS_DIR
    ])
    config = configuration.NamespaceConfig(args)
    
    parsed_certs = []
    parse_failures = []
    for renewal_file in storage.renewal_conf_files(config):
        try:
            renewal_candidate = storage.RenewableCert(renewal_file, config)
            crypto_util.verify_renewable_cert(renewal_candidate)
            parsed_certs.append(renewal_candidate)
        except Exception as e:  # pylint: disable=broad-except
            logger.warning("Renewal configuration file %s produced an "
                           "unexpected error: %s. Skipping.", renewal_file, e)
            logger.debug("Traceback was:\n%s", traceback.format_exc())
            parse_failures.append(renewal_file)
    
    return (parsed_certs, parse_failures)
Пример #2
0
    def _config(self, args=[]):
        """Generate a ``certbot`` configuration with the given arguments

        :param args: the arguments to use
        :type args: list[str]

        :return: a :class:`~certbot.interfaces.IConfig` object
        """
        args = args + self.args
        args = cli.prepare_and_parse_args(self.plugins, args)
        return configuration.NamespaceConfig(args)
Пример #3
0
def main(cli_args=None):
    """Run Certbot.

    :param cli_args: command line to Certbot, defaults to ``sys.argv[1:]``
    :type cli_args: `list` of `str`

    :returns: value for `sys.exit` about the exit status of Certbot
    :rtype: `str` or `int` or `None`

    """
    if not cli_args:
        cli_args = sys.argv[1:]

    log.pre_arg_parse_setup()

    plugins = plugins_disco.PluginsRegistry.find_all()
    logger.debug("certbot version: %s", certbot.__version__)
    # do not log `config`, as it contains sensitive data (e.g. revoke --key)!
    logger.debug("Arguments: %r", cli_args)
    logger.debug("Discovered plugins: %r", plugins)

    # note: arg parser internally handles --help (and exits afterwards)
    args = cli.prepare_and_parse_args(plugins, cli_args)
    config = configuration.NamespaceConfig(args)
    zope.component.provideUtility(config)

    # On windows, shell without administrative right cannot create symlinks required by certbot.
    # So we check the rights before continuing.
    misc.raise_for_non_administrative_windows_rights()

    try:
        log.post_arg_parse_setup(config)
        make_or_verify_needed_dirs(config)
    except errors.Error:
        # Let plugins_cmd be run as un-privileged user.
        if config.func != plugins_cmd:  # pylint: disable=comparison-with-callable
            raise

    if sys.version_info[:2] == (3, 4):
        logger.warning(
            "Python 3.4 support will be dropped in the next release "
            "of Certbot - please upgrade your Python version to 3.5+.")

    set_displayer(config)

    # Reporter
    report = reporter.Reporter(config)
    zope.component.provideUtility(report)
    util.atexit_register(report.print_messages)

    return config.func(config, plugins)
Пример #4
0
def main(cli_args=None):
    """Command line argument parsing and main script execution.

    :returns: result of requested command

    :raises errors.Error: OS errors triggered by wrong permissions
    :raises errors.Error: error if plugin command is not supported

    """
    if not cli_args:
        cli_args = sys.argv[1:]

    log.pre_arg_parse_setup()

    plugins = plugins_disco.PluginsRegistry.find_all()
    logger.debug("certbot version: %s", certbot.__version__)
    # do not log `config`, as it contains sensitive data (e.g. revoke --key)!
    logger.debug("Arguments: %r", cli_args)
    logger.debug("Discovered plugins: %r", plugins)

    # note: arg parser internally handles --help (and exits afterwards)
    args = cli.prepare_and_parse_args(plugins, cli_args)
    config = configuration.NamespaceConfig(args)
    zope.component.provideUtility(config)

    # On windows, shell without administrative right cannot create symlinks required by certbot.
    # So we check the rights before continuing.
    misc.raise_for_non_administrative_windows_rights()

    try:
        log.post_arg_parse_setup(config)
        make_or_verify_needed_dirs(config)
    except errors.Error:
        # Let plugins_cmd be run as un-privileged user.
        if config.func != plugins_cmd:
            raise

    set_displayer(config)

    # Reporter
    report = reporter.Reporter(config)
    zope.component.provideUtility(report)
    util.atexit_register(report.print_messages)

    return config.func(config, plugins)
Пример #5
0
def prepare_config(cli_args):
    plugins = plugins_disco.PluginsRegistry.find_all()
    cargs = cli.prepare_and_parse_args(plugins, cli_args)
    config = configuration.NamespaceConfig(cargs)
    zope.component.provideUtility(config, interfaces.IConfig)
    return config, plugins
Пример #6
0
 def _unmocked_parse(*args, **kwargs):
     """Get result of cli.prepare_and_parse_args."""
     return cli.prepare_and_parse_args(PLUGINS, *args, **kwargs)