From b80ea80e9d5cdfb75b344f0c0c3f637aa0749f95 Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Mon, 5 Jun 2023 05:21:46 +0300 Subject: [PATCH] add salt generator to setup command instead --- src/ahriman/application/ahriman.py | 2 ++ src/ahriman/application/handlers/setup.py | 4 ++++ tests/ahriman/application/handlers/test_handler_setup.py | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/ahriman/application/ahriman.py b/src/ahriman/application/ahriman.py index f02fb1dd..c93af244 100644 --- a/src/ahriman/application/ahriman.py +++ b/src/ahriman/application/ahriman.py @@ -875,6 +875,8 @@ def _set_service_setup_parser(root: SubParserAction) -> argparse.ArgumentParser: parser.add_argument("--build-command", help="build command prefix", default="ahriman") parser.add_argument("--from-configuration", help="path to default devtools pacman configuration", type=Path, default=Path("/usr") / "share" / "devtools" / "pacman.conf.d" / "extra.conf") + parser.add_argument("--generate-salt", help="generate salt for user passwords", + action=argparse.BooleanOptionalAction, default=False) parser.add_argument("--makeflags-jobs", help="append MAKEFLAGS variable with parallelism set to number of cores", action=argparse.BooleanOptionalAction, default=True) parser.add_argument("--mirror", help="use the specified explicitly mirror instead of including mirrorlist") diff --git a/src/ahriman/application/handlers/setup.py b/src/ahriman/application/handlers/setup.py index 55cfe2d1..00e92ec0 100644 --- a/src/ahriman/application/handlers/setup.py +++ b/src/ahriman/application/handlers/setup.py @@ -26,6 +26,7 @@ from ahriman.application.application import Application from ahriman.application.handlers import Handler from ahriman.core.configuration import Configuration from ahriman.models.repository_paths import RepositoryPaths +from ahriman.models.user import User class Setup(Handler): @@ -126,6 +127,9 @@ class Setup(Handler): if args.web_unix_socket is not None: configuration.set_option(section, "unix_socket", str(args.web_unix_socket)) + if args.generate_salt: + configuration.set_option("auth", "salt", User.generate_password(20)) + target = root.include / "00-setup-overrides.ini" with target.open("w") as ahriman_configuration: configuration.write(ahriman_configuration) diff --git a/tests/ahriman/application/handlers/test_handler_setup.py b/tests/ahriman/application/handlers/test_handler_setup.py index 984f4348..abb5b2a7 100644 --- a/tests/ahriman/application/handlers/test_handler_setup.py +++ b/tests/ahriman/application/handlers/test_handler_setup.py @@ -26,6 +26,7 @@ def _default_args(args: argparse.Namespace) -> argparse.Namespace: args.build_as_user = "ahriman" args.build_command = "ahriman" args.from_configuration = Path("/usr/share/devtools/pacman.conf.d/extra.conf") + args.generate_salt = True args.makeflags_jobs = True args.mirror = "mirror" args.multilib = True @@ -97,6 +98,7 @@ def test_configuration_create_ahriman(args: argparse.Namespace, configuration: C MockCall(Configuration.section_name("sign", "x86_64"), "key", args.sign_key), MockCall(Configuration.section_name("web", "x86_64"), "port", str(args.web_port)), MockCall(Configuration.section_name("web", "x86_64"), "unix_socket", str(args.web_unix_socket)), + MockCall("auth", "salt", pytest.helpers.anyvar(str, strict=True)), ]) write_mock.assert_called_once_with(pytest.helpers.anyvar(int))