diff options
author | Michael Raskin <7c6f434c@mail.ru> | 2018-10-21 07:54:52 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-21 07:54:52 +0000 |
commit | 3491dd06a186db0b208d23d07c1d16c9b51d895c (patch) | |
tree | ea3fc8d0da7efce637a2d24487cb9c71c829f020 /nixos/modules/services/web-servers | |
parent | d88d0127f715b632e2d868f39e4f8018bac0a56a (diff) | |
parent | 5e16e671ea1860fb3928d8c50ebd7c30ba182002 (diff) | |
download | nixlib-3491dd06a186db0b208d23d07c1d16c9b51d895c.tar nixlib-3491dd06a186db0b208d23d07c1d16c9b51d895c.tar.gz nixlib-3491dd06a186db0b208d23d07c1d16c9b51d895c.tar.bz2 nixlib-3491dd06a186db0b208d23d07c1d16c9b51d895c.tar.lz nixlib-3491dd06a186db0b208d23d07c1d16c9b51d895c.tar.xz nixlib-3491dd06a186db0b208d23d07c1d16c9b51d895c.tar.zst nixlib-3491dd06a186db0b208d23d07c1d16c9b51d895c.zip |
Merge pull request #47224 from pvgoran/tomcat-virtualhost-aliases
nixos/tomcat: add aliases sub-option for virtual hosts
Diffstat (limited to 'nixos/modules/services/web-servers')
-rw-r--r-- | nixos/modules/services/web-servers/tomcat.nix | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/nixos/modules/services/web-servers/tomcat.nix b/nixos/modules/services/web-servers/tomcat.nix index d92ba72a8336..be54e9255c78 100644 --- a/nixos/modules/services/web-servers/tomcat.nix +++ b/nixos/modules/services/web-servers/tomcat.nix @@ -121,6 +121,11 @@ in type = types.str; description = "name of the virtualhost"; }; + aliases = mkOption { + type = types.listOf types.str; + description = "aliases of the virtualhost"; + default = []; + }; webapps = mkOption { type = types.listOf types.path; description = '' @@ -220,10 +225,28 @@ in ${if cfg.serverXml != "" then '' cp -f ${pkgs.writeTextDir "server.xml" cfg.serverXml}/* ${cfg.baseDir}/conf/ - '' else '' - # Create a modified server.xml which also includes all virtual hosts - sed -e "/<Engine name=\"Catalina\" defaultHost=\"localhost\">/a\ ${toString (map (virtualHost: ''<Host name=\"${virtualHost.name}\" appBase=\"virtualhosts/${virtualHost.name}/webapps\" unpackWARs=\"true\" autoDeploy=\"true\" xmlValidation=\"false\" xmlNamespaceAware=\"false\" >${if cfg.logPerVirtualHost then ''<Valve className=\"org.apache.catalina.valves.AccessLogValve\" directory=\"logs/${virtualHost.name}\" prefix=\"${virtualHost.name}_access_log.\" pattern=\"combined\" resolveHosts=\"false\"/>'' else ""}</Host>'') cfg.virtualHosts)}" \ - ${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml + '' else + let + hostElementForVirtualHost = virtualHost: '' + <Host name="${virtualHost.name}" appBase="virtualhosts/${virtualHost.name}/webapps" + unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> + '' + concatStrings (innerElementsForVirtualHost virtualHost) + '' + </Host> + ''; + innerElementsForVirtualHost = virtualHost: + (map (alias: '' + <Alias>${alias}</Alias> + '') virtualHost.aliases) + ++ (optional cfg.logPerVirtualHost '' + <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/${virtualHost.name}" + prefix="${virtualHost.name}_access_log." pattern="combined" resolveHosts="false"/> + ''); + hostElementsString = concatMapStringsSep "\n" hostElementForVirtualHost cfg.virtualHosts; + hostElementsSedString = replaceStrings ["\n"] ["\\\n"] hostElementsString; + in '' + # Create a modified server.xml which also includes all virtual hosts + sed -e "/<Engine name=\"Catalina\" defaultHost=\"localhost\">/a\\"${escapeShellArg hostElementsSedString} \ + ${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml '' } ${optionalString (cfg.logDirs != []) '' |