mirror of
https://github.com/certbot/certbot.git
synced 2026-08-02 00:22:28 +02:00
Fix gating to ensure that no parsernode functionality is run unless explicitly requested (#7654)
This commit is contained in:
committed by
ohemorange
parent
4401eacaac
commit
70be256c66
@@ -187,6 +187,7 @@ class ApacheConfigurator(common.Installer):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
version = kwargs.pop("version", None)
|
version = kwargs.pop("version", None)
|
||||||
|
use_parsernode = kwargs.pop("use_parsernode", False)
|
||||||
super(ApacheConfigurator, self).__init__(*args, **kwargs)
|
super(ApacheConfigurator, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
# Add name_server association dict
|
# Add name_server association dict
|
||||||
@@ -203,7 +204,7 @@ class ApacheConfigurator(common.Installer):
|
|||||||
# Reverter save notes
|
# Reverter save notes
|
||||||
self.save_notes = ""
|
self.save_notes = ""
|
||||||
# Should we use ParserNode implementation instead of the old behavior
|
# Should we use ParserNode implementation instead of the old behavior
|
||||||
self.USE_PARSERNODE = False
|
self.USE_PARSERNODE = use_parsernode
|
||||||
# Saves the list of file paths that were parsed initially, and
|
# Saves the list of file paths that were parsed initially, and
|
||||||
# not added to parser tree by self.conf("vhost-root") for example.
|
# not added to parser tree by self.conf("vhost-root") for example.
|
||||||
self.parsed_paths = [] # type: List[str]
|
self.parsed_paths = [] # type: List[str]
|
||||||
@@ -264,8 +265,9 @@ class ApacheConfigurator(common.Installer):
|
|||||||
pn_meta = {"augeasparser": self.parser,
|
pn_meta = {"augeasparser": self.parser,
|
||||||
"augeaspath": self.parser.get_root_augpath(),
|
"augeaspath": self.parser.get_root_augpath(),
|
||||||
"ac_ast": None}
|
"ac_ast": None}
|
||||||
self.parser_root = self.get_parsernode_root(pn_meta)
|
if self.USE_PARSERNODE:
|
||||||
self.parsed_paths = self.parser_root.parsed_paths()
|
self.parser_root = self.get_parsernode_root(pn_meta)
|
||||||
|
self.parsed_paths = self.parser_root.parsed_paths()
|
||||||
|
|
||||||
# Check for errors in parsing files with Augeas
|
# Check for errors in parsing files with Augeas
|
||||||
self.parser.check_parsing_errors("httpd.aug")
|
self.parser.check_parsing_errors("httpd.aug")
|
||||||
@@ -909,18 +911,18 @@ class ApacheConfigurator(common.Installer):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
v1_vhosts = self.get_virtual_hosts_v1()
|
v1_vhosts = self.get_virtual_hosts_v1()
|
||||||
v2_vhosts = self.get_virtual_hosts_v2()
|
|
||||||
|
|
||||||
for v1_vh in v1_vhosts:
|
|
||||||
found = False
|
|
||||||
for v2_vh in v2_vhosts:
|
|
||||||
if assertions.isEqualVirtualHost(v1_vh, v2_vh):
|
|
||||||
found = True
|
|
||||||
break
|
|
||||||
if not found:
|
|
||||||
raise AssertionError("Equivalent for {} was not found".format(v1_vh.path))
|
|
||||||
|
|
||||||
if self.USE_PARSERNODE:
|
if self.USE_PARSERNODE:
|
||||||
|
v2_vhosts = self.get_virtual_hosts_v2()
|
||||||
|
|
||||||
|
for v1_vh in v1_vhosts:
|
||||||
|
found = False
|
||||||
|
for v2_vh in v2_vhosts:
|
||||||
|
if assertions.isEqualVirtualHost(v1_vh, v2_vh):
|
||||||
|
found = True
|
||||||
|
break
|
||||||
|
if not found:
|
||||||
|
raise AssertionError("Equivalent for {} was not found".format(v1_vh.path))
|
||||||
|
|
||||||
return v2_vhosts
|
return v2_vhosts
|
||||||
return v1_vhosts
|
return v1_vhosts
|
||||||
|
|
||||||
@@ -1003,7 +1005,8 @@ class ApacheConfigurator(common.Installer):
|
|||||||
addrs.add(obj.Addr.fromstring(param))
|
addrs.add(obj.Addr.fromstring(param))
|
||||||
|
|
||||||
is_ssl = False
|
is_ssl = False
|
||||||
sslengine = node.find_directives("SSLEngine")
|
# Exclusion to match the behavior in get_virtual_hosts_v2
|
||||||
|
sslengine = node.find_directives("SSLEngine", exclude=False)
|
||||||
if sslengine:
|
if sslengine:
|
||||||
for directive in sslengine:
|
for directive in sslengine:
|
||||||
if directive.parameters[0].lower() == "on":
|
if directive.parameters[0].lower() == "on":
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ class AugeasParserNodeTest(util.ApacheTest): # pylint: disable=too-many-public-
|
|||||||
super(AugeasParserNodeTest, self).setUp()
|
super(AugeasParserNodeTest, self).setUp()
|
||||||
|
|
||||||
self.config = util.get_apache_configurator(
|
self.config = util.get_apache_configurator(
|
||||||
self.config_path, self.vhost_path, self.config_dir, self.work_dir)
|
self.config_path, self.vhost_path, self.config_dir, self.work_dir, use_parsernode=True)
|
||||||
self.vh_truth = util.get_vh_truth(
|
self.vh_truth = util.get_vh_truth(
|
||||||
self.temp_dir, "debian_apache_2_4/multiple_vhosts")
|
self.temp_dir, "debian_apache_2_4/multiple_vhosts")
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ class ConfiguratorParserNodeTest(util.ApacheTest): # pylint: disable=too-many-p
|
|||||||
super(ConfiguratorParserNodeTest, self).setUp()
|
super(ConfiguratorParserNodeTest, self).setUp()
|
||||||
|
|
||||||
self.config = util.get_apache_configurator(
|
self.config = util.get_apache_configurator(
|
||||||
self.config_path, self.vhost_path, self.config_dir, self.work_dir)
|
self.config_path, self.vhost_path, self.config_dir,
|
||||||
|
self.work_dir, use_parsernode=True)
|
||||||
self.vh_truth = util.get_vh_truth(
|
self.vh_truth = util.get_vh_truth(
|
||||||
self.temp_dir, "debian_apache_2_4/multiple_vhosts")
|
self.temp_dir, "debian_apache_2_4/multiple_vhosts")
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,8 @@ def get_apache_configurator( # pylint: disable=too-many-arguments, too-many-loc
|
|||||||
config_path, vhost_path,
|
config_path, vhost_path,
|
||||||
config_dir, work_dir, version=(2, 4, 7),
|
config_dir, work_dir, version=(2, 4, 7),
|
||||||
os_info="generic",
|
os_info="generic",
|
||||||
conf_vhost_path=None):
|
conf_vhost_path=None,
|
||||||
|
use_parsernode=False):
|
||||||
"""Create an Apache Configurator with the specified options.
|
"""Create an Apache Configurator with the specified options.
|
||||||
|
|
||||||
:param conf: Function that returns binary paths. self.conf in Configurator
|
:param conf: Function that returns binary paths. self.conf in Configurator
|
||||||
@@ -118,7 +119,7 @@ def get_apache_configurator( # pylint: disable=too-many-arguments, too-many-loc
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
config_class = configurator.ApacheConfigurator
|
config_class = configurator.ApacheConfigurator
|
||||||
config = config_class(config=mock_le_config, name="apache",
|
config = config_class(config=mock_le_config, name="apache",
|
||||||
version=version)
|
version=version, use_parsernode=use_parsernode)
|
||||||
if not conf_vhost_path:
|
if not conf_vhost_path:
|
||||||
config_class.OS_DEFAULTS["vhost_root"] = vhost_path
|
config_class.OS_DEFAULTS["vhost_root"] = vhost_path
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user