Hello community,
here is the log from the commit of package python-certbot-apache for openSUSE:Factory checked in at 2019-02-11 21:26:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-certbot-apache (Old)
and /work/SRC/openSUSE:Factory/.python-certbot-apache.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-certbot-apache"
Mon Feb 11 21:26:23 2019 rev:4 rq:673117 version:0.31.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-certbot-apache/python-certbot-apache.changes 2019-02-02 21:48:54.839998244 +0100
+++ /work/SRC/openSUSE:Factory/.python-certbot-apache.new.28833/python-certbot-apache.changes 2019-02-11 21:26:29.823044630 +0100
@@ -1,0 +2,8 @@
+Fri Feb 8 10:35:28 UTC 2019 - Marketa Calabkova
+
+- update to version 0.31.0
+ * Apache plugin now attempts to configure all VirtualHosts matching
+ requested domain name instead of only a single one when answering
+ the HTTP-01 challenge.
+
+-------------------------------------------------------------------
Old:
----
certbot-apache-0.30.2.tar.gz
New:
----
certbot-apache-0.31.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-certbot-apache.spec ++++++
--- /var/tmp/diff_new_pack.r94yRz/_old 2019-02-11 21:26:30.419044308 +0100
+++ /var/tmp/diff_new_pack.r94yRz/_new 2019-02-11 21:26:30.423044307 +0100
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-certbot-apache
-Version: 0.30.2
+Version: 0.31.0
Release: 0
Summary: Apache plugin for Certbot
License: Apache-2.0
++++++ certbot-apache-0.30.2.tar.gz -> certbot-apache-0.31.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/PKG-INFO new/certbot-apache-0.31.0/PKG-INFO
--- old/certbot-apache-0.30.2/PKG-INFO 2019-01-25 21:15:58.000000000 +0100
+++ new/certbot-apache-0.31.0/PKG-INFO 2019-02-07 22:20:43.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: certbot-apache
-Version: 0.30.2
+Version: 0.31.0
Summary: Apache plugin for Certbot
Home-page: https://github.com/letsencrypt/letsencrypt
Author: Certbot Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/configurator.py new/certbot-apache-0.31.0/certbot_apache/configurator.py
--- old/certbot-apache-0.30.2/certbot_apache/configurator.py 2019-01-25 21:15:41.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/configurator.py 2019-02-07 22:20:29.000000000 +0100
@@ -577,8 +577,9 @@
self.assoc[target_name] = vhost
return vhost
- def included_in_wildcard(self, names, target_name):
- """Is target_name covered by a wildcard?
+ def domain_in_names(self, names, target_name):
+ """Checks if target domain is covered by one or more of the provided
+ names. The target name is matched by wildcard as well as exact match.
:param names: server aliases
:type names: `collections.Iterable` of `str`
@@ -649,7 +650,7 @@
names = vhost.get_names()
if target_name in names:
points = 3
- elif self.included_in_wildcard(names, target_name):
+ elif self.domain_in_names(names, target_name):
points = 2
elif any(addr.get_addr() == target_name for addr in vhost.addrs):
points = 1
@@ -1463,7 +1464,7 @@
matches = self.parser.find_dir(
"ServerAlias", start=vh_path, exclude=False)
aliases = (self.aug.get(match) for match in matches)
- return self.included_in_wildcard(aliases, target_name)
+ return self.domain_in_names(aliases, target_name)
def _add_name_vhost_if_necessary(self, vhost):
"""Add NameVirtualHost Directives if necessary for new vhost.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/http_01.py new/certbot-apache-0.31.0/certbot_apache/http_01.py
--- old/certbot-apache-0.30.2/certbot_apache/http_01.py 2019-01-25 21:15:41.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/http_01.py 2019-02-07 22:20:29.000000000 +0100
@@ -2,7 +2,7 @@
import logging
import os
-from acme.magic_typing import Set # pylint: disable=unused-import, no-name-in-module
+from acme.magic_typing import List, Set # pylint: disable=unused-import, no-name-in-module
from certbot import errors
from certbot.plugins import common
from certbot_apache.obj import VirtualHost # pylint: disable=unused-import
@@ -89,15 +89,27 @@
self.configurator.enable_mod(mod, temp=True)
def _mod_config(self):
+ selected_vhosts = [] # type: List[VirtualHost]
+ http_port = str(self.configurator.config.http01_port)
for chall in self.achalls:
- vh = self.configurator.find_best_http_vhost(
- chall.domain, filter_defaults=False,
- port=str(self.configurator.config.http01_port))
- if vh:
- self._set_up_include_directives(vh)
- else:
- for vh in self._relevant_vhosts():
- self._set_up_include_directives(vh)
+ # Search for matching VirtualHosts
+ for vh in self._matching_vhosts(chall.domain):
+ selected_vhosts.append(vh)
+
+ # Ensure that we have one or more VirtualHosts that we can continue
+ # with. (one that listens to port configured with --http-01-port)
+ found = False
+ for vhost in selected_vhosts:
+ if any(a.is_wildcard() or a.get_port() == http_port for a in vhost.addrs):
+ found = True
+
+ if not found:
+ for vh in self._relevant_vhosts():
+ selected_vhosts.append(vh)
+
+ # Add the challenge configuration
+ for vh in selected_vhosts:
+ self._set_up_include_directives(vh)
self.configurator.reverter.register_file_creation(
True, self.challenge_conf_pre)
@@ -121,6 +133,20 @@
with open(self.challenge_conf_post, "w") as new_conf:
new_conf.write(config_text_post)
+ def _matching_vhosts(self, domain):
+ """Return all VirtualHost objects that have the requested domain name or
+ a wildcard name that would match the domain in ServerName or ServerAlias
+ directive.
+ """
+ matching_vhosts = []
+ for vhost in self.configurator.vhosts:
+ if self.configurator.domain_in_names(vhost.get_names(), domain):
+ # domain_in_names also matches the exact names, so no need
+ # to check "domain in vhost.get_names()" explicitly here
+ matching_vhosts.append(vhost)
+
+ return matching_vhosts
+
def _relevant_vhosts(self):
http01_port = str(self.configurator.config.http01_port)
relevant_vhosts = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/tests/configurator_test.py new/certbot-apache-0.31.0/certbot_apache/tests/configurator_test.py
--- old/certbot-apache-0.30.2/certbot_apache/tests/configurator_test.py 2019-01-25 21:15:41.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/tests/configurator_test.py 2019-02-07 22:20:29.000000000 +0100
@@ -139,7 +139,8 @@
names = self.config.get_all_names()
self.assertEqual(names, set(
["certbot.demo", "ocspvhost.com", "encryption-example.demo",
- "nonsym.link", "vhost.in.rootconf", "www.certbot.demo"]
+ "nonsym.link", "vhost.in.rootconf", "www.certbot.demo",
+ "duplicate.example.com"]
))
@certbot_util.patch_get_utility()
@@ -158,8 +159,7 @@
self.config.vhosts.append(vhost)
names = self.config.get_all_names()
- # Names get filtered, only 5 are returned
- self.assertEqual(len(names), 8)
+ self.assertEqual(len(names), 9)
self.assertTrue("zombo.com" in names)
self.assertTrue("google.com" in names)
self.assertTrue("certbot.demo" in names)
@@ -200,7 +200,7 @@
def test_get_virtual_hosts(self):
"""Make sure all vhosts are being properly found."""
vhs = self.config.get_virtual_hosts()
- self.assertEqual(len(vhs), 10)
+ self.assertEqual(len(vhs), 12)
found = 0
for vhost in vhs:
@@ -211,7 +211,7 @@
else:
raise Exception("Missed: %s" % vhost) # pragma: no cover
- self.assertEqual(found, 10)
+ self.assertEqual(found, 12)
# Handle case of non-debian layout get_virtual_hosts
with mock.patch(
@@ -219,7 +219,7 @@
) as mock_conf:
mock_conf.return_value = False
vhs = self.config.get_virtual_hosts()
- self.assertEqual(len(vhs), 10)
+ self.assertEqual(len(vhs), 12)
@mock.patch("certbot_apache.display_ops.select_vhost")
def test_choose_vhost_none_avail(self, mock_select):
@@ -322,7 +322,7 @@
self.config.vhosts = [
vh for vh in self.config.vhosts
if vh.name not in ["certbot.demo", "nonsym.link",
- "encryption-example.demo",
+ "encryption-example.demo", "duplicate.example.com",
"ocspvhost.com", "vhost.in.rootconf"]
and "*.blue.purple.com" not in vh.aliases
]
@@ -333,7 +333,7 @@
def test_non_default_vhosts(self):
# pylint: disable=protected-access
vhosts = self.config._non_default_vhosts(self.config.vhosts)
- self.assertEqual(len(vhosts), 8)
+ self.assertEqual(len(vhosts), 10)
def test_deploy_cert_enable_new_vhost(self):
# Create
@@ -688,7 +688,7 @@
self.assertEqual(self.config.is_name_vhost(self.vh_truth[0]),
self.config.is_name_vhost(ssl_vhost))
- self.assertEqual(len(self.config.vhosts), 11)
+ self.assertEqual(len(self.config.vhosts), 13)
def test_clean_vhost_ssl(self):
# pylint: disable=protected-access
@@ -1269,7 +1269,7 @@
# pylint: disable=protected-access
self.config._enable_redirect(self.vh_truth[1], "")
- self.assertEqual(len(self.config.vhosts), 11)
+ self.assertEqual(len(self.config.vhosts), 13)
def test_create_own_redirect_for_old_apache_version(self):
self.config.parser.modules.add("rewrite_module")
@@ -1280,7 +1280,7 @@
# pylint: disable=protected-access
self.config._enable_redirect(self.vh_truth[1], "")
- self.assertEqual(len(self.config.vhosts), 11)
+ self.assertEqual(len(self.config.vhosts), 13)
def test_sift_rewrite_rule(self):
# pylint: disable=protected-access
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/tests/http_01_test.py new/certbot-apache-0.31.0/certbot_apache/tests/http_01_test.py
--- old/certbot-apache-0.30.2/certbot_apache/tests/http_01_test.py 2019-01-25 21:15:41.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/tests/http_01_test.py 2019-02-07 22:20:29.000000000 +0100
@@ -27,8 +27,8 @@
self.achalls = [] # type: List[achallenges.KeyAuthorizationAnnotatedChallenge]
vh_truth = util.get_vh_truth(
self.temp_dir, "debian_apache_2_4/multiple_vhosts")
- # Takes the vhosts for encryption-example.demo, certbot.demo, and
- # vhost.in.rootconf
+ # Takes the vhosts for encryption-example.demo, certbot.demo
+ # and vhost.in.rootconf
self.vhosts = [vh_truth[0], vh_truth[3], vh_truth[10]]
for i in range(NUM_ACHALLS):
@@ -39,7 +39,7 @@
"pending"),
domain=self.vhosts[i].name, account_key=self.account_key))
- modules = ["rewrite", "authz_core", "authz_host"]
+ modules = ["ssl", "rewrite", "authz_core", "authz_host"]
for mod in modules:
self.config.parser.modules.add("mod_{0}.c".format(mod))
self.config.parser.modules.add(mod + "_module")
@@ -111,6 +111,17 @@
domain="something.nonexistent", account_key=self.account_key)]
self.common_perform_test(achalls, vhosts)
+ def test_configure_multiple_vhosts(self):
+ vhosts = [v for v in self.config.vhosts if "duplicate.example.com" in v.get_names()]
+ self.assertEqual(len(vhosts), 2)
+ achalls = [
+ achallenges.KeyAuthorizationAnnotatedChallenge(
+ challb=acme_util.chall_to_challb(
+ challenges.HTTP01(token=((b'a' * 16))),
+ "pending"),
+ domain="duplicate.example.com", account_key=self.account_key)]
+ self.common_perform_test(achalls, vhosts)
+
def test_no_vhost(self):
for achall in self.achalls:
self.http.add_chall(achall)
@@ -176,15 +187,14 @@
self._test_challenge_file(achall)
for vhost in vhosts:
- if not vhost.ssl:
- matches = self.config.parser.find_dir("Include",
- self.http.challenge_conf_pre,
- vhost.path)
- self.assertEqual(len(matches), 1)
- matches = self.config.parser.find_dir("Include",
- self.http.challenge_conf_post,
- vhost.path)
- self.assertEqual(len(matches), 1)
+ matches = self.config.parser.find_dir("Include",
+ self.http.challenge_conf_pre,
+ vhost.path)
+ self.assertEqual(len(matches), 1)
+ matches = self.config.parser.find_dir("Include",
+ self.http.challenge_conf_post,
+ vhost.path)
+ self.assertEqual(len(matches), 1)
self.assertTrue(os.path.exists(challenge_dir))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/tests/parser_test.py new/certbot-apache-0.31.0/certbot_apache/tests/parser_test.py
--- old/certbot-apache-0.30.2/certbot_apache/tests/parser_test.py 2019-01-25 21:15:41.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/tests/parser_test.py 2019-02-07 22:20:29.000000000 +0100
@@ -52,7 +52,7 @@
test2 = self.parser.find_dir("documentroot")
self.assertEqual(len(test), 1)
- self.assertEqual(len(test2), 7)
+ self.assertEqual(len(test2), 8)
def test_add_dir(self):
aug_default = "/files" + self.parser.loc["default"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttp.conf new/certbot-apache-0.31.0/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttp.conf
--- old/certbot-apache-0.30.2/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttp.conf 1970-01-01 01:00:00.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttp.conf 2019-02-07 22:20:29.000000000 +0100
@@ -0,0 +1,9 @@
+
+ ServerName duplicate.example.com
+
+ ServerAdmin webmaster@certbot.demo
+ DocumentRoot /var/www/html
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+</VirtualHost>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttps.conf new/certbot-apache-0.31.0/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttps.conf
--- old/certbot-apache-0.30.2/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttps.conf 1970-01-01 01:00:00.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttps.conf 2019-02-07 22:20:29.000000000 +0100
@@ -0,0 +1,14 @@
+<IfModule mod_ssl.c>
+
+ ServerName duplicate.example.com
+
+ ServerAdmin webmaster@certbot.demo
+ DocumentRoot /var/www/html
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+SSLCertificateFile /etc/apache2/certs/certbot-cert_5.pem
+SSLCertificateKeyFile /etc/apache2/ssl/key-certbot_15.pem
+</VirtualHost>
+</IfModule>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttp.conf new/certbot-apache-0.31.0/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttp.conf
--- old/certbot-apache-0.30.2/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttp.conf 1970-01-01 01:00:00.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttp.conf 2019-02-07 22:20:29.000000000 +0100
@@ -0,0 +1,9 @@
+
+ ServerName duplicate.example.com
+
+ ServerAdmin webmaster@certbot.demo
+ DocumentRoot /var/www/html
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+</VirtualHost>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttps.conf new/certbot-apache-0.31.0/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttps.conf
--- old/certbot-apache-0.30.2/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttps.conf 1970-01-01 01:00:00.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttps.conf 2019-02-07 22:20:29.000000000 +0100
@@ -0,0 +1,14 @@
+<IfModule mod_ssl.c>
+
+ ServerName duplicate.example.com
+
+ ServerAdmin webmaster@certbot.demo
+ DocumentRoot /var/www/html
+
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+SSLCertificateFile /etc/apache2/certs/certbot-cert_5.pem
+SSLCertificateKeyFile /etc/apache2/ssl/key-certbot_15.pem
+</VirtualHost>
+</IfModule>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache/tests/util.py new/certbot-apache-0.31.0/certbot_apache/tests/util.py
--- old/certbot-apache-0.30.2/certbot_apache/tests/util.py 2019-01-25 21:15:41.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache/tests/util.py 2019-02-07 22:20:29.000000000 +0100
@@ -196,7 +196,17 @@
"/files" + os.path.join(temp_dir, config_name,
"apache2/apache2.conf/VirtualHost"),
set([obj.Addr.fromstring("*:80")]), False, True,
- "vhost.in.rootconf")]
+ "vhost.in.rootconf"),
+ obj.VirtualHost(
+ os.path.join(prefix, "duplicatehttp.conf"),
+ os.path.join(aug_pre, "duplicatehttp.conf/VirtualHost"),
+ set([obj.Addr.fromstring("10.2.3.4:80")]), False, True,
+ "duplicate.example.com"),
+ obj.VirtualHost(
+ os.path.join(prefix, "duplicatehttps.conf"),
+ os.path.join(aug_pre, "duplicatehttps.conf/IfModule/VirtualHost"),
+ set([obj.Addr.fromstring("10.2.3.4:443")]), True, True,
+ "duplicate.example.com")]
return vh_truth
if config_name == "debian_apache_2_4/multi_vhosts":
prefix = os.path.join(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache.egg-info/PKG-INFO new/certbot-apache-0.31.0/certbot_apache.egg-info/PKG-INFO
--- old/certbot-apache-0.30.2/certbot_apache.egg-info/PKG-INFO 2019-01-25 21:15:58.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache.egg-info/PKG-INFO 2019-02-07 22:20:43.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: certbot-apache
-Version: 0.30.2
+Version: 0.31.0
Summary: Apache plugin for Certbot
Home-page: https://github.com/letsencrypt/letsencrypt
Author: Certbot Project
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/certbot_apache.egg-info/SOURCES.txt new/certbot-apache-0.31.0/certbot_apache.egg-info/SOURCES.txt
--- old/certbot-apache-0.30.2/certbot_apache.egg-info/SOURCES.txt 2019-01-25 21:15:58.000000000 +0100
+++ new/certbot-apache-0.31.0/certbot_apache.egg-info/SOURCES.txt 2019-02-07 22:20:43.000000000 +0100
@@ -142,6 +142,8 @@
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/certbot.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/default-ssl-port-only.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/default-ssl.conf
+certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttp.conf
+certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/duplicatehttps.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/encryption-example.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/mod_macro-example.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-available/ocsp-ssl.conf
@@ -150,6 +152,8 @@
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/certbot.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/default-ssl-port-only.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/default-ssl.conf
+certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttp.conf
+certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/duplicatehttps.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/encryption-example.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/mod_macro-example.conf
certbot_apache/tests/testdata/debian_apache_2_4/multiple_vhosts/apache2/sites-enabled/non-symlink.conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/certbot-apache-0.30.2/setup.py new/certbot-apache-0.31.0/setup.py
--- old/certbot-apache-0.30.2/setup.py 2019-01-25 21:15:42.000000000 +0100
+++ new/certbot-apache-0.31.0/setup.py 2019-02-07 22:20:31.000000000 +0100
@@ -2,7 +2,7 @@
from setuptools import find_packages
-version = '0.30.2'
+version = '0.31.0'
# Remember to update local-oldest-requirements.txt when changing the minimum
# acme/certbot version.