mirror of
https://github.com/certbot/certbot.git
synced 2026-08-04 16:13:23 +02:00
Merge pull request #2169 from joohoi/check_aug_version
Check that recent enough version of libaugeas is available
This commit is contained in:
@@ -158,6 +158,12 @@ class ApacheConfigurator(augeas_configurator.AugeasConfigurator):
|
|||||||
raise errors.NotSupportedError(
|
raise errors.NotSupportedError(
|
||||||
"Apache Version %s not supported.", str(self.version))
|
"Apache Version %s not supported.", str(self.version))
|
||||||
|
|
||||||
|
if not self._check_aug_version():
|
||||||
|
raise errors.NotSupportedError(
|
||||||
|
"Apache plugin support requires libaugeas0 and augeas-lenses "
|
||||||
|
"version 1.2.0 or higher, please make sure you have you have "
|
||||||
|
"those installed.")
|
||||||
|
|
||||||
self.parser = parser.ApacheParser(
|
self.parser = parser.ApacheParser(
|
||||||
self.aug, self.conf("server-root"), self.conf("vhost-root"),
|
self.aug, self.conf("server-root"), self.conf("vhost-root"),
|
||||||
self.version)
|
self.version)
|
||||||
@@ -169,6 +175,21 @@ class ApacheConfigurator(augeas_configurator.AugeasConfigurator):
|
|||||||
|
|
||||||
install_ssl_options_conf(self.mod_ssl_conf)
|
install_ssl_options_conf(self.mod_ssl_conf)
|
||||||
|
|
||||||
|
def _check_aug_version(self):
|
||||||
|
""" Checks that we have recent enough version of libaugeas.
|
||||||
|
If augeas version is recent enough, it will support case insensitive
|
||||||
|
regexp matching"""
|
||||||
|
|
||||||
|
self.aug.set("/test/path/testing/arg", "aRgUMeNT")
|
||||||
|
try:
|
||||||
|
matches = self.aug.match(
|
||||||
|
"/test//*[self::arg=~regexp('argument', 'i')]")
|
||||||
|
except RuntimeError:
|
||||||
|
self.aug.remove("/test/path")
|
||||||
|
return False
|
||||||
|
self.aug.remove("/test/path")
|
||||||
|
return matches
|
||||||
|
|
||||||
def deploy_cert(self, domain, cert_path, key_path,
|
def deploy_cert(self, domain, cert_path, key_path,
|
||||||
chain_path=None, fullchain_path=None): # pylint: disable=unused-argument
|
chain_path=None, fullchain_path=None): # pylint: disable=unused-argument
|
||||||
"""Deploys certificate to specified virtual host.
|
"""Deploys certificate to specified virtual host.
|
||||||
|
|||||||
@@ -65,6 +65,15 @@ class TwoVhost80Test(util.ApacheTest):
|
|||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
errors.NotSupportedError, self.config.prepare)
|
errors.NotSupportedError, self.config.prepare)
|
||||||
|
|
||||||
|
@mock.patch("letsencrypt_apache.parser.ApacheParser")
|
||||||
|
@mock.patch("letsencrypt_apache.configurator.le_util.exe_exists")
|
||||||
|
def test_prepare_old_aug(self, mock_exe_exists, _):
|
||||||
|
mock_exe_exists.return_value = True
|
||||||
|
self.config.config_test = mock.Mock()
|
||||||
|
self.config._check_aug_version = mock.Mock(return_value=False) # pylint: disable=protected-access
|
||||||
|
self.assertRaises(
|
||||||
|
errors.NotSupportedError, self.config.prepare)
|
||||||
|
|
||||||
def test_add_parser_arguments(self): # pylint: disable=no-self-use
|
def test_add_parser_arguments(self): # pylint: disable=no-self-use
|
||||||
from letsencrypt_apache.configurator import ApacheConfigurator
|
from letsencrypt_apache.configurator import ApacheConfigurator
|
||||||
# Weak test..
|
# Weak test..
|
||||||
@@ -978,6 +987,13 @@ class TwoVhost80Test(util.ApacheTest):
|
|||||||
self.assertTrue(self.config.parser.find_dir(
|
self.assertTrue(self.config.parser.find_dir(
|
||||||
"NameVirtualHost", "*:443", exclude=False))
|
"NameVirtualHost", "*:443", exclude=False))
|
||||||
|
|
||||||
|
def test_aug_version(self):
|
||||||
|
mock_match = mock.Mock(return_value=["something"])
|
||||||
|
self.config.aug.match = mock_match
|
||||||
|
self.assertEquals(self.config._check_aug_version(), ["something"]) # pylint: disable=protected-access
|
||||||
|
self.config.aug.match.side_effect = RuntimeError
|
||||||
|
self.assertFalse(self.config._check_aug_version()) # pylint: disable=protected-access
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main() # pragma: no cover
|
unittest.main() # pragma: no cover
|
||||||
|
|||||||
Reference in New Issue
Block a user