diff options
author | Franz Pletz <fpletz@fnordicwalking.de> | 2018-11-06 18:25:47 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-06 18:25:47 +0000 |
commit | 159a5f31bc85491dda380d778cab2f6b553206ba (patch) | |
tree | 18fac8b1da71693a0ec00f550681e53199a148bc | |
parent | 15995ea2b29d7253a74f75948ce881f29eeeafa1 (diff) | |
parent | c853b3482455fccd949b5fd0bc16b44f8bc72f23 (diff) | |
download | nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.gz nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.bz2 nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.lz nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.xz nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.tar.zst nixlib-159a5f31bc85491dda380d778cab2f6b553206ba.zip |
Merge pull request #49792 from griff/rspamd-multifile-enable
nixos/rspamd: Fix enable for locals and overrides
-rw-r--r-- | nixos/modules/services/mail/rspamd.nix | 9 | ||||
-rw-r--r-- | nixos/tests/rspamd.nix | 37 |
2 files changed, 34 insertions, 12 deletions
diff --git a/nixos/modules/services/mail/rspamd.nix b/nixos/modules/services/mail/rspamd.nix index d83d6f1f750c..78a2f37b6ded 100644 --- a/nixos/modules/services/mail/rspamd.nix +++ b/nixos/modules/services/mail/rspamd.nix @@ -153,9 +153,10 @@ let ${cfg.extraConfig} ''; + filterFiles = files: filterAttrs (n: v: v.enable) files; rspamdDir = pkgs.linkFarm "etc-rspamd-dir" ( - (mapAttrsToList (name: file: { name = "local.d/${name}"; path = file.source; }) cfg.locals) ++ - (mapAttrsToList (name: file: { name = "override.d/${name}"; path = file.source; }) cfg.overrides) ++ + (mapAttrsToList (name: file: { name = "local.d/${name}"; path = file.source; }) (filterFiles cfg.locals)) ++ + (mapAttrsToList (name: file: { name = "override.d/${name}"; path = file.source; }) (filterFiles cfg.overrides)) ++ (optional (cfg.localLuaRules != null) { name = "rspamd.local.lua"; path = cfg.localLuaRules; }) ++ [ { name = "rspamd.conf"; path = rspamdConfFile; } ] ); @@ -207,7 +208,7 @@ in }; locals = mkOption { - type = with types; loaOf (submodule (configFileModule "locals")); + type = with types; attrsOf (submodule (configFileModule "locals")); default = {}; description = '' Local configuration files, written into <filename>/etc/rspamd/local.d/{name}</filename>. @@ -220,7 +221,7 @@ in }; overrides = mkOption { - type = with types; loaOf (submodule (configFileModule "overrides")); + type = with types; attrsOf (submodule (configFileModule "overrides")); default = {}; description = '' Overridden configuration files, written into <filename>/etc/rspamd/override.d/{name}</filename>. diff --git a/nixos/tests/rspamd.nix b/nixos/tests/rspamd.nix index af765f37b91b..a744760412d5 100644 --- a/nixos/tests/rspamd.nix +++ b/nixos/tests/rspamd.nix @@ -110,16 +110,33 @@ in ''; services.rspamd = { enable = true; - locals."groups.conf".text = '' - group "cows" { - symbol { - NO_MUH = { - weight = 1.0; - description = "Mails should not muh"; + locals = { + "antivirus.conf" = mkIf false { text = '' + clamav { + action = "reject"; + symbol = "CLAM_VIRUS"; + type = "clamav"; + log_clean = true; + servers = "/run/clamav/clamd.ctl"; + } + '';}; + "redis.conf" = { + enable = false; + text = '' + servers = "127.0.0.1"; + ''; + }; + "groups.conf".text = '' + group "cows" { + symbol { + NO_MUH = { + weight = 1.0; + description = "Mails should not muh"; + } } } - } - ''; + ''; + }; localLuaRules = pkgs.writeText "rspamd.local.lua" '' local rspamd_logger = require "rspamd_logger" rspamd_config.NO_MUH = { @@ -152,6 +169,10 @@ in $machine->log($machine->succeed("cat /etc/rspamd/rspamd.conf")); $machine->log($machine->succeed("cat /etc/rspamd/rspamd.local.lua")); $machine->log($machine->succeed("cat /etc/rspamd/local.d/groups.conf")); + # Verify that redis.conf was not written + $machine->fail("cat /etc/rspamd/local.d/redis.conf >&2"); + # Verify that antivirus.conf was not written + $machine->fail("cat /etc/rspamd/local.d/antivirus.conf >&2"); ${checkSocket "/run/rspamd/rspamd.sock" "rspamd" "rspamd" "660" } $machine->log($machine->succeed("curl --unix-socket /run/rspamd/rspamd.sock http://localhost/ping")); $machine->log($machine->succeed("rspamc -h 127.0.0.1:11334 stat")); |