mirror of
https://github.com/certbot/certbot.git
synced 2026-04-25 16:18:06 -04:00
certbot: Let plugins_cmd be run as un-priviliged user. (#5103)
* certbot: Let plugins_cmd be run as un-priviliged user. * certbot/main.py (main): Update function. Addresses issue #4350. * * Add test certbot.tests.main_testMainTest.test_plugins_no_args_unpriviliged
This commit is contained in:
parent
03624fa9db
commit
7c16e0da26
2 changed files with 28 additions and 2 deletions
|
|
@ -743,8 +743,14 @@ def main(cli_args=sys.argv[1:]):
|
|||
config = configuration.NamespaceConfig(args)
|
||||
zope.component.provideUtility(config)
|
||||
|
||||
log.post_arg_parse_setup(config)
|
||||
make_or_verify_needed_dirs(config)
|
||||
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
|
||||
|
|
|
|||
|
|
@ -545,6 +545,26 @@ class MainTest(test_util.ConfigTestCase): # pylint: disable=too-many-public-met
|
|||
filtered = plugins.visible().ifaces()
|
||||
self.assertEqual(stdout.getvalue().strip(), str(filtered))
|
||||
|
||||
@mock.patch('certbot.main.plugins_disco')
|
||||
@mock.patch('certbot.main.cli.HelpfulArgumentParser.determine_help_topics')
|
||||
def test_plugins_no_args_unprivileged(self, _det, mock_disco):
|
||||
ifaces = []
|
||||
plugins = mock_disco.PluginsRegistry.find_all()
|
||||
|
||||
def throw_error(directory, mode, uid, strict):
|
||||
"""Raises error.Error."""
|
||||
_, _, _, _ = directory, mode, uid, strict
|
||||
raise errors.Error()
|
||||
|
||||
with mock.patch('certbot.util.set_up_core_dir') as mock_set_up_core_dir:
|
||||
mock_set_up_core_dir.side_effect = throw_error
|
||||
|
||||
_, stdout, _, _ = self._call(['plugins'])
|
||||
plugins.visible.assert_called_once_with()
|
||||
plugins.visible().ifaces.assert_called_once_with(ifaces)
|
||||
filtered = plugins.visible().ifaces()
|
||||
self.assertEqual(stdout.getvalue().strip(), str(filtered))
|
||||
|
||||
@mock.patch('certbot.main.plugins_disco')
|
||||
@mock.patch('certbot.main.cli.HelpfulArgumentParser.determine_help_topics')
|
||||
def test_plugins_init(self, _det, mock_disco):
|
||||
|
|
|
|||
Loading…
Reference in a new issue