From 45870e20efa3efa7a68c8e692c71889cc179c99c Mon Sep 17 00:00:00 2001 From: Spitap Date: Tue, 4 Apr 2023 17:48:56 +0200 Subject: [PATCH] Fixed dict, few fixes --- modoboa_installer/config_dict_template.py | 2 +- modoboa_installer/scripts/modoboa.py | 21 ++++++++++++++------- modoboa_installer/scripts/rspamd.py | 17 +++++++++++++++++ 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/modoboa_installer/config_dict_template.py b/modoboa_installer/config_dict_template.py index 093bc5b..4488625 100644 --- a/modoboa_installer/config_dict_template.py +++ b/modoboa_installer/config_dict_template.py @@ -234,7 +234,7 @@ ConfigDictTemplate = [ { "option": "password", "default": make_password, - } + }, { "option": "dnsbl", "default": "true", diff --git a/modoboa_installer/scripts/modoboa.py b/modoboa_installer/scripts/modoboa.py index c2d01bf..6336d85 100644 --- a/modoboa_installer/scripts/modoboa.py +++ b/modoboa_installer/scripts/modoboa.py @@ -49,17 +49,24 @@ class Modoboa(base.Installer): self.instance_path = self.config.get("modoboa", "instance_path") self.extensions = self.config.get("modoboa", "extensions").split() self.devmode = self.config.getboolean("modoboa", "devmode") - # Sanity check for amavis - self.amavis_enabled = False - if "modoboa-amavis" in self.extensions: - if self.config.getboolean("amavis", "enabled"): - self.amavis_enabled = True - else: - self.extensions.remove("modoboa-amavis") + # Sanity check for amavis and rspamd + self.amavis_enabled = sanity_check("modoboa-amavis", "amavis") + sanity_check("modoboa-rspamd", "rspamd") + self.dovecot_enabled = self.config.getboolean("dovecot", "enabled") self.opendkim_enabled = self.config.getboolean("opendkim", "enabled") self.dkim_cron_enabled = False + def sanity_check(extension, plugin): + # Sanity check for plugin requirements + enabled = False + if extension in self.extensions: + if self.config.getboolean(plugin, "enabled"): + enabled = True + else: + self.extensions.remove(extension) + return enabled + def is_extension_ok_for_version(self, extension, version): """Check if extension can be installed with this modo version.""" version = utils.convert_version_to_int(version) diff --git a/modoboa_installer/scripts/rspamd.py b/modoboa_installer/scripts/rspamd.py index 5e7640b..cc34f21 100644 --- a/modoboa_installer/scripts/rspamd.py +++ b/modoboa_installer/scripts/rspamd.py @@ -31,6 +31,23 @@ class Rspamd(base.Installer): """Return appropriate config dir.""" return "/etc/rspamd" + def install_config_files(self): + """Make sure config directory exists.""" + user = self.config.get("modoboa", "user") + pw = pwd.getpwnam(user) + targets = [ + [self.app_config["dkim_keys_storage_dir"], pw[2], pw[3]] + ] + for target in targets: + if not os.path.exists(target[0]): + utils.mkdir( + target[0], + stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | + stat.S_IROTH | stat.S_IXOTH, + target[1], target[2] + ) + super().install_config_files() + def get_config_files(self): """Return appropriate config files.""" _config_files = self.config_files