diff --git a/services/git-bridge/conf/envsubst_template.json b/services/git-bridge/conf/envsubst_template.json index ea0d87adbc..e9c08ef5c9 100644 --- a/services/git-bridge/conf/envsubst_template.json +++ b/services/git-bridge/conf/envsubst_template.json @@ -1,5 +1,7 @@ { "port": ${GIT_BRIDGE_PORT:-8000}, + "bindIp": "${GIT_BRIDGE_BIND_IP:-0.0.0.0}", + "idleTimeout": ${GIT_BRIDGE_IDLE_TIMEOUT:-30000}, "rootGitDirectory": "${GIT_BRIDGE_ROOT_DIR:-/tmp/wlgb}", "apiBaseUrl": "${GIT_BRIDGE_API_BASE_URL:-https://localhost/api/v0}", "postbackBaseUrl": "${GIT_BRIDGE_POSTBACK_BASE_URL:-https://localhost}", diff --git a/services/git-bridge/conf/example_config.json b/services/git-bridge/conf/example_config.json index bcf25e7be9..bfad73f461 100644 --- a/services/git-bridge/conf/example_config.json +++ b/services/git-bridge/conf/example_config.json @@ -1,5 +1,7 @@ { "port": 8080, + "bindIp": "127.0.0.1", + "idleTimeout": 30000, "rootGitDirectory": "/tmp/wlgb", "apiBaseUrl": "https://localhost/api/v0", "postbackBaseUrl": "https://localhost", diff --git a/services/git-bridge/conf/local.json b/services/git-bridge/conf/local.json index 0b2e3e1241..9ced5cb053 100644 --- a/services/git-bridge/conf/local.json +++ b/services/git-bridge/conf/local.json @@ -1,5 +1,7 @@ { "port": 8000, + "bindIp": "0.0.0.0", + "idleTimeout": 30000, "rootGitDirectory": "/tmp/wlgb", "apiBaseUrl": "http://v2.overleaf.test:4000/api/v0", "postbackBaseUrl": "http://git-bridge:8000", diff --git a/services/git-bridge/pom.xml b/services/git-bridge/pom.xml index 87f0987ab4..1ef1800f56 100644 --- a/services/git-bridge/pom.xml +++ b/services/git-bridge/pom.xml @@ -76,13 +76,13 @@ org.eclipse.jetty jetty-servlet - 9.4.8.v20171121 + 9.4.38.v20210224 org.eclipse.jetty jetty-server - 9.4.8.v20171121 + 9.4.38.v20210224 diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java index 527e2ed714..8dbef10b23 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java @@ -24,6 +24,8 @@ public class Config implements JSONSource { static Config asSanitised(Config config) { return new Config( config.port, + config.bindIp, + config.idleTimeout, config.rootGitDirectory, config.apiBaseURL, config.postbackURL, @@ -37,6 +39,8 @@ public class Config implements JSONSource { } private int port; + private String bindIp; + private int idleTimeout; private String rootGitDirectory; private String apiBaseURL; private String postbackURL; @@ -64,6 +68,8 @@ public class Config implements JSONSource { public Config( int port, + String bindIp, + int idleTimeout, String rootGitDirectory, String apiBaseURL, String postbackURL, @@ -75,6 +81,8 @@ public class Config implements JSONSource { int sqliteHeapLimitBytes ) { this.port = port; + this.bindIp = bindIp; + this.idleTimeout = idleTimeout; this.rootGitDirectory = rootGitDirectory; this.apiBaseURL = apiBaseURL; this.postbackURL = postbackURL; @@ -90,6 +98,8 @@ public class Config implements JSONSource { public void fromJSON(JsonElement json) { JsonObject configObject = json.getAsJsonObject(); port = getElement(configObject, "port").getAsInt(); + bindIp = getElement(configObject, "bindIp").getAsString(); + idleTimeout = getElement(configObject, "idleTimeout").getAsInt(); rootGitDirectory = getElement( configObject, "rootGitDirectory" @@ -131,6 +141,14 @@ public class Config implements JSONSource { return port; } + public String getBindIp() { + return bindIp; + } + + public int getIdleTimeout() { + return idleTimeout; + } + public String getRootGitDirectory() { return rootGitDirectory; } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java index 254b9a0c59..312e3648b9 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java @@ -2,6 +2,7 @@ package uk.ac.ic.wlgitbridge.server; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.*; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; @@ -72,7 +73,7 @@ public class GitBridgeServer { swapStore, snapshotApi ); - jettyServer = new Server(port); + jettyServer = new Server(); configureJettyServer(config, repoStore, snapshotApi); apiBaseURL = config.getAPIBaseURL(); SnapshotAPIRequest.setBaseURL(apiBaseURL); @@ -114,6 +115,12 @@ public class GitBridgeServer { RepoStore repoStore, SnapshotApi snapshotApi ) throws ServletException { + ServerConnector connector = new ServerConnector(this.jettyServer); + connector.setPort(config.getPort()); + connector.setHost(config.getBindIp()); + connector.setIdleTimeout(config.getIdleTimeout()); + this.jettyServer.addConnector(connector); + HandlerCollection handlers = new HandlerList(); handlers.addHandler(initApiHandler()); handlers.addHandler(initBaseHandler()); diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java index 50e8ef674e..6eaa776562 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java @@ -1063,6 +1063,8 @@ public class WLGitBridgeIntegrationTest { String cfgStr = "{\n" + " \"port\": " + port + ",\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"" + wlgb.getAbsolutePath() + "\",\n" + diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java index e6036fbf94..02d70def0e 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java @@ -16,6 +16,8 @@ public class ConfigTest { public void testConstructWithOauth() { Reader reader = new StringReader("{\n" + " \"port\": 80,\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" + @@ -42,6 +44,8 @@ public class ConfigTest { public void testConstructWithoutOauth() { Reader reader = new StringReader("{\n" + " \"port\": 80,\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" + @@ -62,6 +66,8 @@ public class ConfigTest { public void asSanitised() throws Exception { Reader reader = new StringReader("{\n" + " \"port\": 80,\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" + @@ -75,6 +81,8 @@ public class ConfigTest { Config config = new Config(reader); String expected = "{\n" + " \"port\": 80,\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + " \"apiBaseURL\": \"http://127.0.0.1:60000/api/v0/\",\n" + " \"postbackURL\": \"http://127.0.0.1/\",\n" + diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/BridgeTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/BridgeTest.java index 8d51fb862e..9026973d49 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/BridgeTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/BridgeTest.java @@ -53,6 +53,8 @@ public class BridgeTest { gcJob = mock(GcJob.class); bridge = new Bridge( new Config( + 0, + "", 0, "", "",