From 2bab9e4eba4e9099ad03a870d1faf58603073fb5 Mon Sep 17 00:00:00 2001 From: ash Date: Sat, 7 Sep 2024 15:30:54 +0100 Subject: [PATCH] nixos/dokuwiki: factor out `toPhpString` --- nixos/modules/services/web-apps/dokuwiki.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/web-apps/dokuwiki.nix b/nixos/modules/services/web-apps/dokuwiki.nix index 328a9a74a921..a075070f38b2 100644 --- a/nixos/modules/services/web-apps/dokuwiki.nix +++ b/nixos/modules/services/web-apps/dokuwiki.nix @@ -17,6 +17,10 @@ let extraConfig = mkPhpIni cfg.phpOptions; }; + # "you're escaped" -> "'you\'re escaped'" + # https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single + toPhpString = s: "'${escape [ "'" "\\" ] s}'"; + dokuwikiAclAuthConfig = hostName: cfg: let inherit (cfg) acl; acl_gen = concatMapStringsSep "\n" (l: "${l.page} \t ${l.actor} \t ${toString l.level}"); @@ -43,12 +47,12 @@ let mkPhpValue = v: let isHasAttr = s: isAttrs v && hasAttr s v; in - if isString v then "'${escape [ "'" "\\" ] v}'" + if isString v then toPhpString v # NOTE: If any value contains a , (comma) this will not get escaped - else if isList v && any lib.strings.isCoercibleToString v then "'${escape [ "'" "\\" ] (concatMapStringsSep "," toString v)}'" + else if isList v && any lib.strings.isCoercibleToString v then toPhpString (concatMapStringsSep "," toString v) else if isInt v then toString v else if isBool v then toString (if v then 1 else 0) - else if isHasAttr "_file" then "trim(file_get_contents('${escape [ "'" "\\" ] v._file}'))" + else if isHasAttr "_file" then "trim(file_get_contents(${toPhpString v._file}))" else if isHasAttr "_raw" then v._raw else abort "The dokuwiki localConf value ${lib.generators.toPretty {} v} can not be encoded." ; @@ -59,7 +63,7 @@ let [" = ${mkPhpValue v};"] else mkPhpAttrVals v; - in map (e: "['${escape [ "'" "\\" ] k}']${e}") (flatten values); + in map (e: "[${toPhpString k}]${e}") (flatten values); dokuwikiLocalConfig = hostName: cfg: let conf_gen = c: map (v: "$conf${v}") (mkPhpAttrVals c);