about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2024-06-26 00:53:58 +0200
committerGitHub <noreply@github.com>2024-06-26 00:53:58 +0200
commit08605eec2a46e9d956e50f28d513f7d02ff03fe8 (patch)
treea054dc60e87f7c39067001594408e88c0ff32cf6
parenta5d8db4258eb269fd110872b13d0cdcdff7637ab (diff)
parenta8da5dbf32870048279626d47bc9587462e7d955 (diff)
Merge pull request #311381 from minijackson/tomcat-port
nixos/tomcat: add 'port' option
-rw-r--r--nixos/modules/services/web-servers/tomcat.nix16
-rw-r--r--nixos/tests/tomcat.nix9
2 files changed, 19 insertions, 6 deletions
diff --git a/nixos/modules/services/web-servers/tomcat.nix b/nixos/modules/services/web-servers/tomcat.nix
index e243778cc747c..1c5a9af5c9245 100644
--- a/nixos/modules/services/web-servers/tomcat.nix
+++ b/nixos/modules/services/web-servers/tomcat.nix
@@ -21,6 +21,14 @@ in
         example = "tomcat10";
       };
 
+      port = lib.mkOption {
+        type = lib.types.port;
+        default = 8080;
+        description = ''
+          The TCP port Tomcat should listen on.
+        '';
+      };
+
       purifyOnStart = lib.mkOption {
         type = lib.types.bool;
         default = false;
@@ -244,8 +252,12 @@ in
             hostElementsString = lib.concatMapStringsSep "\n" hostElementForVirtualHost cfg.virtualHosts;
             hostElementsSedString = lib.replaceStrings ["\n"] ["\\\n"] hostElementsString;
           in ''
-            # Create a modified server.xml which also includes all virtual hosts
-            sed -e "/<Engine name=\"Catalina\" defaultHost=\"localhost\">/a\\"${lib.escapeShellArg hostElementsSedString} \
+            # Create a modified server.xml which listens on the given port,
+            # and also includes all virtual hosts.
+            # The host modification must be last here,
+            # else if hostElementsSedString is empty sed gets confused as to what to append
+            sed -e 's/<Connector port="8080"/<Connector port="${toString cfg.port}"/' \
+                -e "/<Engine name=\"Catalina\" defaultHost=\"localhost\">/a\\"${lib.escapeShellArg hostElementsSedString} \
                   ${tomcat}/conf/server.xml > ${cfg.baseDir}/conf/server.xml
           ''
         }
diff --git a/nixos/tests/tomcat.nix b/nixos/tests/tomcat.nix
index df5cb033b78f0..c5e6e65ac600e 100644
--- a/nixos/tests/tomcat.nix
+++ b/nixos/tests/tomcat.nix
@@ -5,23 +5,24 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
   nodes.machine = { pkgs, ... }: {
     services.tomcat = {
       enable = true;
+      port = 8001;
       axis2.enable = true;
     };
   };
 
   testScript = ''
     machine.wait_for_unit("tomcat.service")
-    machine.wait_for_open_port(8080)
+    machine.wait_for_open_port(8001)
     machine.wait_for_file("/var/tomcat/webapps/examples");
 
     machine.succeed(
-        "curl -sS --fail http://localhost:8080/examples/servlets/servlet/HelloWorldExample | grep 'Hello World!'"
+        "curl -sS --fail http://localhost:8001/examples/servlets/servlet/HelloWorldExample | grep 'Hello World!'"
     )
     machine.succeed(
-        "curl -sS --fail http://localhost:8080/examples/jsp/jsp2/simpletag/hello.jsp | grep 'Hello, world!'"
+        "curl -sS --fail http://localhost:8001/examples/jsp/jsp2/simpletag/hello.jsp | grep 'Hello, world!'"
     )
     machine.succeed(
-        "curl -sS --fail http://localhost:8080/axis2/axis2-web/HappyAxis.jsp | grep 'Found Axis2'"
+        "curl -sS --fail http://localhost:8001/axis2/axis2-web/HappyAxis.jsp | grep 'Found Axis2'"
     )
   '';
 })