mirror of
https://github.com/certbot/certbot.git
synced 2026-07-28 00:35:50 +02:00
Merge remote-tracking branch 'github/letsencrypt/master' into cli-config-fixes-2
This commit is contained in:
+8
-8
@@ -4,16 +4,16 @@ Plugins
|
||||
|
||||
Let's Encrypt client supports dynamic discovery of plugins through the
|
||||
`setuptools entry points`_. This way you can, for example, create a
|
||||
custom implementation of
|
||||
`~letsencrypt.interfaces.IAuthenticator` or the
|
||||
'~letsencrypt.interfaces.IInstaller' without having to
|
||||
merge it with the core upstream source code. An example is provided in
|
||||
custom implementation of `~letsencrypt.interfaces.IAuthenticator` or
|
||||
the `~letsencrypt.interfaces.IInstaller` without having to merge it
|
||||
with the core upstream source code. An example is provided in
|
||||
``examples/plugins/`` directory.
|
||||
|
||||
Please be aware though that as this client is still in a developer-preview
|
||||
stage, the API may undergo a few changes. If you believe the plugin will be
|
||||
beneficial to the community, please consider submitting a pull request to the
|
||||
repo and we will update it with any necessary API changes.
|
||||
.. warning:: Please be aware though that as this client is still in a
|
||||
developer-preview stage, the API may undergo a few changes. If you
|
||||
believe the plugin will be beneficial to the community, please
|
||||
consider submitting a pull request to the repo and we will update
|
||||
it with any necessary API changes.
|
||||
|
||||
.. _`setuptools entry points`:
|
||||
https://pythonhosted.org/setuptools/setuptools.html#dynamic-discovery-of-services-and-plugins
|
||||
|
||||
@@ -53,12 +53,12 @@ class AuthHandler(object):
|
||||
"""Retrieve all authorizations for challenges.
|
||||
|
||||
:param set domains: Domains for authorization
|
||||
:param bool best_effort: Whether or not all authorizations are required
|
||||
(this is useful in renewal)
|
||||
:param bool best_effort: Whether or not all authorizations are
|
||||
required (this is useful in renewal)
|
||||
|
||||
:returns: tuple of lists of authorization resources. Takes the form of
|
||||
(`completed`, `failed`)
|
||||
rtype: tuple
|
||||
:returns: tuple of lists of authorization resources. Takes the
|
||||
form of (`completed`, `failed`)
|
||||
:rtype: tuple
|
||||
|
||||
:raises AuthorizationError: If unable to retrieve all
|
||||
authorizations
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
"""Let's Encrypt constants."""
|
||||
import configobj
|
||||
import logging
|
||||
import os
|
||||
|
||||
@@ -31,7 +30,7 @@ CLI_DEFAULTS = dict(
|
||||
"""Defaults for CLI flags and `.IConfig` attributes."""
|
||||
|
||||
|
||||
RENEWER_DEFAULTS = configobj.ConfigObj(dict(
|
||||
RENEWER_DEFAULTS = dict(
|
||||
renewer_config_file="/etc/letsencrypt/renewer.conf",
|
||||
renewal_configs_dir="/etc/letsencrypt/configs",
|
||||
archive_dir="/etc/letsencrypt/archive",
|
||||
@@ -39,7 +38,7 @@ RENEWER_DEFAULTS = configobj.ConfigObj(dict(
|
||||
renewer_enabled="yes",
|
||||
renew_before_expiry="30 days",
|
||||
deploy_before_expiry="20 days",
|
||||
))
|
||||
)
|
||||
"""Defaults for renewer script."""
|
||||
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class IPluginFactory(zope.interface.Interface):
|
||||
"""Inject argument parser options (flags).
|
||||
|
||||
1. Be nice and prepend all options and destinations with
|
||||
`~.option_namespace` and `~.dest_namespace`.
|
||||
`~.common.option_namespace` and `~common.dest_namespace`.
|
||||
|
||||
2. Inject options (flags) only. Positional arguments are not
|
||||
allowed, as this would break the CLI.
|
||||
|
||||
@@ -7,13 +7,11 @@ within lineages of successor certificates, according to configuration.
|
||||
.. todo:: Call new installer API to restart servers after deployment
|
||||
|
||||
"""
|
||||
import copy
|
||||
import os
|
||||
|
||||
import configobj
|
||||
|
||||
from letsencrypt import configuration
|
||||
from letsencrypt import constants
|
||||
from letsencrypt import client
|
||||
from letsencrypt import crypto_util
|
||||
from letsencrypt import notify
|
||||
@@ -102,10 +100,7 @@ def main(config=None):
|
||||
# turned it off. (The boolean parameter should probably be
|
||||
# called renewer_enabled.)
|
||||
|
||||
# Merge supplied config, if provided, on top of builtin defaults
|
||||
defaults_copy = copy.deepcopy(constants.RENEWER_DEFAULTS)
|
||||
defaults_copy.merge(config if config is not None else configobj.ConfigObj())
|
||||
config = defaults_copy
|
||||
config = storage.config_with_defaults(config)
|
||||
# Now attempt to read the renewer config file and augment or replace
|
||||
# the renewer defaults with any options contained in that file. If
|
||||
# renewer_config_file is undefined or if the file is nonexistent or
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
"""Renewable certificates storage."""
|
||||
import copy
|
||||
import datetime
|
||||
import os
|
||||
import re
|
||||
@@ -17,6 +16,13 @@ from letsencrypt import le_util
|
||||
ALL_FOUR = ("cert", "privkey", "chain", "fullchain")
|
||||
|
||||
|
||||
def config_with_defaults(config=None):
|
||||
"""Merge supplied config, if provided, on top of builtin defaults."""
|
||||
defaults_copy = configobj.ConfigObj(constants.RENEWER_DEFAULTS)
|
||||
defaults_copy.merge(config if config is not None else configobj.ConfigObj())
|
||||
return defaults_copy
|
||||
|
||||
|
||||
def parse_time_interval(interval, textparser=parsedatetime.Calendar()):
|
||||
"""Parse the time specified time interval.
|
||||
|
||||
@@ -103,10 +109,7 @@ class RenewableCert(object): # pylint: disable=too-many-instance-attributes
|
||||
# TODO: Do we actually use anything from defaults and do we want to
|
||||
# read further defaults from the systemwide renewal configuration
|
||||
# file at this stage?
|
||||
defaults_copy = copy.deepcopy(constants.RENEWER_DEFAULTS)
|
||||
defaults_copy.merge(config_opts if config_opts is not None
|
||||
else configobj.ConfigObj())
|
||||
self.configuration = defaults_copy
|
||||
self.configuration = config_with_defaults(config_opts)
|
||||
self.configuration.merge(self.configfile)
|
||||
|
||||
if not all(x in self.configuration for x in ALL_FOUR):
|
||||
@@ -528,10 +531,7 @@ class RenewableCert(object): # pylint: disable=too-many-instance-attributes
|
||||
:returns: the newly-created RenewalCert object
|
||||
:rtype: :class:`storage.renewableCert`"""
|
||||
|
||||
defaults_copy = copy.deepcopy(constants.RENEWER_DEFAULTS)
|
||||
defaults_copy.merge(config if config is not None
|
||||
else configobj.ConfigObj())
|
||||
config = defaults_copy
|
||||
config = config_with_defaults(config)
|
||||
# This attempts to read the renewer config file and augment or replace
|
||||
# the renewer defaults with any options contained in that file. If
|
||||
# renewer_config_file is undefined or if the file is nonexistent or
|
||||
|
||||
+13
-10
@@ -5,22 +5,25 @@ from letsencrypt_apache.obj import Addr as ApacheAddr
|
||||
|
||||
|
||||
class Addr(ApacheAddr):
|
||||
"""Represents an Nginx address, i.e. what comes after the 'listen'
|
||||
r"""Represents an Nginx address, i.e. what comes after the 'listen'
|
||||
directive.
|
||||
|
||||
According to http://nginx.org/en/docs/http/ngx_http_core_module.html#listen,
|
||||
this may be address[:port], port, or unix:path. The latter is ignored here.
|
||||
According to the `documentation`_, this may be address[:port], port,
|
||||
or unix:path. The latter is ignored here.
|
||||
|
||||
The default value if no directive is specified is *:80 (superuser) or
|
||||
*:8000 (otherwise). If no port is specified, the default is 80. If no
|
||||
address is specified, listen on all addresses.
|
||||
The default value if no directive is specified is \*:80 (superuser)
|
||||
or \*:8000 (otherwise). If no port is specified, the default is
|
||||
80. If no address is specified, listen on all addresses.
|
||||
|
||||
.. todo:: Old-style nginx configs define SSL vhosts in a separate block
|
||||
instead of using 'ssl' in the listen directive
|
||||
.. _documentation:
|
||||
http://nginx.org/en/docs/http/ngx_http_core_module.html#listen
|
||||
|
||||
.. todo:: Old-style nginx configs define SSL vhosts in a separate
|
||||
block instead of using 'ssl' in the listen directive.
|
||||
|
||||
:param str addr: addr part of vhost address, may be hostname, IPv4, IPv6,
|
||||
"", or "*"
|
||||
:param str port: port number or "*" or ""
|
||||
"", or "\*"
|
||||
:param str port: port number or "\*" or ""
|
||||
:param bool ssl: Whether the directive includes 'ssl'
|
||||
:param bool default: Whether the directive includes 'default_server'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user