diff --git a/README.md b/README.md index e853ed1..125ca08 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,9 @@ Complete list of vars can be found after `juseppe env` command. - `JUSEPPE_BIND_PORT` (`juseppe.jetty.port`) port for juseppe file server. Defaults to `8080` +- `JUSEPPE_BIND_HOST` (`juseppe.jetty.host`) + hostname or address for juseppe file server. Defaults to `localhost` + - `JUSEPPE_RECURSIVE_WATCH` (`juseppe.recursive.watch`) watch for file changes recursively Defaults to `true` diff --git a/juseppe-cli/src/main/java/ru/lanwen/jenkins/juseppe/cli/ServeCommand.java b/juseppe-cli/src/main/java/ru/lanwen/jenkins/juseppe/cli/ServeCommand.java index b41e13f..b33b7ae 100644 --- a/juseppe-cli/src/main/java/ru/lanwen/jenkins/juseppe/cli/ServeCommand.java +++ b/juseppe-cli/src/main/java/ru/lanwen/jenkins/juseppe/cli/ServeCommand.java @@ -15,6 +15,7 @@ import ru.lanwen.jenkins.juseppe.files.WatchStarter; import ru.lanwen.jenkins.juseppe.props.Props; import ru.lanwen.jenkins.juseppe.serve.GenStarter; +import java.net.InetSocketAddress; import static ru.lanwen.jenkins.juseppe.files.WatchFiles.watchFor; @@ -34,7 +35,13 @@ public class ServeCommand extends JuseppeCommand { @Override public void unsafeRun(Props props) throws Exception { - Server server = new Server(port == -1 ? props.getPort() : port); + Server server; + if (port == -1) { + server = new Server(new InetSocketAddress(props.getHost(),props.getPort())); + } else { + server = new Server(port); + } + server.addLifeCycleListener(new GenStarter(props)); if (isWatch()) { diff --git a/juseppe-cli/src/test/resources/serve/cert/uc.crt b/juseppe-cli/src/test/resources/serve/cert/uc.crt index 03f18bf..b742c82 100644 --- a/juseppe-cli/src/test/resources/serve/cert/uc.crt +++ b/juseppe-cli/src/test/resources/serve/cert/uc.crt @@ -1,21 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIDZTCCAk2gAwIBAgIJAMWW8t2gQwMPMA0GCSqGSIb3DQEBCwUAMEkxCzAJBgNV -BAYTAkVOMRYwFAYDVQQIDA1VcGRhdGUtQ2VudGVyMRAwDgYDVQQHDAdKdXNlcHBl -MRAwDgYDVQQKDAdKdXNlcHBlMB4XDTE1MDYyOTE0NTY0N1oXDTE4MDUyMDE0NTY0 -N1owSTELMAkGA1UEBhMCRU4xFjAUBgNVBAgMDVVwZGF0ZS1DZW50ZXIxEDAOBgNV -BAcMB0p1c2VwcGUxEDAOBgNVBAoMB0p1c2VwcGUwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCfX3nPkfyk+979zMhmfrlKa8K6t+USOcqcxcZ06ZbxRc/s -RdXEvjMXL751zgjFrpUvSc5qpozvKo5Uqta/4Se96kagzQv7DEcJVCtY6F9R96Hs -KpT/vl+Hjv6fuhap0JuOjtfClWQAe/i2goD16LUHS3LXKo1orDDUPtaKLHIRQIkO -D+xhPpr0iEjKELjjbWs2wOYNMh9FASHZiGLsf63thXy8lL5t2bfF+j2XNqyy33Si -8xs3+MLH5nhyrFGdLjd9V3QgbY1lqCbdkUoXCQjfIGom97gQnbw8/61gcAroNaAL -CIhJ/cu0DdV+/ddmVI9bJNiQTT7Lu90YujL2b7YrAgMBAAGjUDBOMB0GA1UdDgQW -BBRbIQ5EOViBEA0fGnsa4jNhznfbsDAfBgNVHSMEGDAWgBRbIQ5EOViBEA0fGnsa -4jNhznfbsDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQADOO0+SojP -Vvp80VG+dFe06JRdEt0SYFWUY/yEXzo5o2nKKloAnRWbcBJSokJi12xQaqBu8DDk -KQA6fvOpdIXaqgC5RYCmlG4/2ZXr9W7vlfBeggGYH8iRbmWAsA2QJct8NtbN2OwM -i3vTeQTK9qnz0tjdFeRhIiOq4ZEFXIYrHKUyrOrE/fLdWBKiL/bncIUZufBzOuT5 -1l7H/eceb0nsP8JFHtWxAkaN/0mGgoY9g6Af2bEYNg94jjmQ2bugo4kVYq8REPSk -0gbKukRX6FPYdpiAa7Rdjw22dfNZLTXahlVMRFmohmIGSBPvGOEKwWD4KicdFgvH -9Qk/e5LNgzDH +MIIDDjCCAfYCCQCxvzbj/rKRGTANBgkqhkiG9w0BAQsFADBJMQswCQYDVQQGEwJF +TjEWMBQGA1UECAwNVXBkYXRlLUNlbnRlcjEQMA4GA1UEBwwHSnVzZXBwZTEQMA4G +A1UECgwHSnVzZXBwZTAeFw0xODA2MTUwNDA1MzlaFw0yMTA1MDYwNDA1MzlaMEkx +CzAJBgNVBAYTAkVOMRYwFAYDVQQIDA1VcGRhdGUtQ2VudGVyMRAwDgYDVQQHDAdK +dXNlcHBlMRAwDgYDVQQKDAdKdXNlcHBlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAoAhYmHhRmtI+afJtctDoyiXDnyfj6UHxqWnYXBO39xMCDHTjWmYd +kCLjzzNRl8d+MmfmX8XHfJy3iOpFa9sxACf12lQ/kd1PuYkNbJ9mQCmVJD3XG6wo +MrKKex4ot7DMnkIDCf5Q+zPwlo/GEkiMQSZy8JWpBLPVm4GTodAwQhgGojGwz2Tl +NO675wEnoe+Y0jXpInDiBbPSwero0ZFKL2t+tl4jATStT6u6BnDdiwpnEC7fwXZt +4lf4MgTVmo+C7cxeCM0QEso7UqFA8i+ZouBJ6QXJpdjHvNs/aMJD/Z+UrZa/BI1p +XH0xkrXWJnOqFZYt8HjyuFTuC4DA/Yp66QIDAQABMA0GCSqGSIb3DQEBCwUAA4IB +AQCb6+8/joVAUiwStLlzvBm3fHNErlQeiVSAh3T6pneGxYIkwTQlVLMND5ilsPlU +S00+/mmKZurQGRVFY8xgHaJjh5/qo8joFSKdvc7H551VdxEcvkdw0SLgUKzCklmt +1Wzup4dgwGEFtvWm9H52BS/rNZhWtnSe1HjgAUOPjUjxdJUqQCM2PFdaDDsAV6sR +X7fZg3ZfaAKV3E+5Lq6gQ/69Q16apVNoX3izxDV3aJBPepOzFX9s3CtEaD+nPoAI +VX9sAN6BzqJk2YUP3pvOCpXbwP/dOu14ciRLGA+l9GX2HYA2egXi5FALmuM73+5e +zRkwxOCpTGDLCA9qijsalmC5 -----END CERTIFICATE----- diff --git a/juseppe-cli/src/test/resources/serve/cert/uc.key b/juseppe-cli/src/test/resources/serve/cert/uc.key index 425d4c3..3604efe 100644 --- a/juseppe-cli/src/test/resources/serve/cert/uc.key +++ b/juseppe-cli/src/test/resources/serve/cert/uc.key @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/juseppe-core/src/main/java/ru/lanwen/jenkins/juseppe/props/JuseppeEnvVars.java b/juseppe-core/src/main/java/ru/lanwen/jenkins/juseppe/props/JuseppeEnvVars.java index 5903a57..f0e5abc 100644 --- a/juseppe-core/src/main/java/ru/lanwen/jenkins/juseppe/props/JuseppeEnvVars.java +++ b/juseppe-core/src/main/java/ru/lanwen/jenkins/juseppe/props/JuseppeEnvVars.java @@ -17,6 +17,7 @@ public final class JuseppeEnvVars { static final String JUSEPPE_BASE_URI = "juseppe.baseurl"; static final String JUSEPPE_UPDATE_CENTER_ID = "juseppe.update.center.id"; static final String JUSEPPE_BIND_PORT = "juseppe.jetty.port"; + static final String JUSEPPE_BIND_HOST = "juseppe.jetty.host"; static final String JUSEPPE_RECURSIVE_WATCH = "juseppe.recursive.watch"; private JuseppeEnvVars() { @@ -114,6 +115,16 @@ public String resolved() { } }, + JUSEPPE_BIND_HOST( + JuseppeEnvVars.JUSEPPE_BIND_HOST, + "hostname or address for juseppe file server. Defaults to `localhost`" + ) { + @Override + public String resolved() { + return populated().getHost(); + } + }, + JUSEPPE_RECURSIVE_WATCH( JuseppeEnvVars.JUSEPPE_RECURSIVE_WATCH, "watch for file changes recursively. Defaults to `true`" diff --git a/juseppe-core/src/main/java/ru/lanwen/jenkins/juseppe/props/Props.java b/juseppe-core/src/main/java/ru/lanwen/jenkins/juseppe/props/Props.java index 2aa99bd..bc4a375 100644 --- a/juseppe-core/src/main/java/ru/lanwen/jenkins/juseppe/props/Props.java +++ b/juseppe-core/src/main/java/ru/lanwen/jenkins/juseppe/props/Props.java @@ -61,6 +61,9 @@ public static Props populated() { @Property(JuseppeEnvVars.JUSEPPE_BIND_PORT) private int port = 8080; + @Property(JuseppeEnvVars.JUSEPPE_BIND_HOST) + private String host = "localhost"; + @Property(JuseppeEnvVars.JUSEPPE_BASE_URI) private URI baseurl = URI.create("http://localhost:8080"); @@ -94,6 +97,10 @@ public int getPort() { return port; } + public String getHost() { + return host; + } + public String getKeyPath() { return keyPath; } @@ -145,6 +152,11 @@ public Props withPort(int port) { return this; } + public Props withHost(String host) { + this.host = host; + return this; + } + public Props withBaseurl(URI baseurl) { this.baseurl = baseurl; return this; @@ -188,6 +200,10 @@ public void setPort(int port) { this.port = port; } + public void setHost(String host) { + this.host = host; + } + public void setBaseurl(URI baseurl) { this.baseurl = baseurl; } diff --git a/juseppe-core/src/test/resources/tmp/cert/uc.crt b/juseppe-core/src/test/resources/tmp/cert/uc.crt index 03f18bf..b742c82 100644 --- a/juseppe-core/src/test/resources/tmp/cert/uc.crt +++ b/juseppe-core/src/test/resources/tmp/cert/uc.crt @@ -1,21 +1,19 @@ -----BEGIN CERTIFICATE----- -MIIDZTCCAk2gAwIBAgIJAMWW8t2gQwMPMA0GCSqGSIb3DQEBCwUAMEkxCzAJBgNV -BAYTAkVOMRYwFAYDVQQIDA1VcGRhdGUtQ2VudGVyMRAwDgYDVQQHDAdKdXNlcHBl -MRAwDgYDVQQKDAdKdXNlcHBlMB4XDTE1MDYyOTE0NTY0N1oXDTE4MDUyMDE0NTY0 -N1owSTELMAkGA1UEBhMCRU4xFjAUBgNVBAgMDVVwZGF0ZS1DZW50ZXIxEDAOBgNV -BAcMB0p1c2VwcGUxEDAOBgNVBAoMB0p1c2VwcGUwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCfX3nPkfyk+979zMhmfrlKa8K6t+USOcqcxcZ06ZbxRc/s -RdXEvjMXL751zgjFrpUvSc5qpozvKo5Uqta/4Se96kagzQv7DEcJVCtY6F9R96Hs -KpT/vl+Hjv6fuhap0JuOjtfClWQAe/i2goD16LUHS3LXKo1orDDUPtaKLHIRQIkO -D+xhPpr0iEjKELjjbWs2wOYNMh9FASHZiGLsf63thXy8lL5t2bfF+j2XNqyy33Si -8xs3+MLH5nhyrFGdLjd9V3QgbY1lqCbdkUoXCQjfIGom97gQnbw8/61gcAroNaAL -CIhJ/cu0DdV+/ddmVI9bJNiQTT7Lu90YujL2b7YrAgMBAAGjUDBOMB0GA1UdDgQW -BBRbIQ5EOViBEA0fGnsa4jNhznfbsDAfBgNVHSMEGDAWgBRbIQ5EOViBEA0fGnsa -4jNhznfbsDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQADOO0+SojP -Vvp80VG+dFe06JRdEt0SYFWUY/yEXzo5o2nKKloAnRWbcBJSokJi12xQaqBu8DDk -KQA6fvOpdIXaqgC5RYCmlG4/2ZXr9W7vlfBeggGYH8iRbmWAsA2QJct8NtbN2OwM -i3vTeQTK9qnz0tjdFeRhIiOq4ZEFXIYrHKUyrOrE/fLdWBKiL/bncIUZufBzOuT5 -1l7H/eceb0nsP8JFHtWxAkaN/0mGgoY9g6Af2bEYNg94jjmQ2bugo4kVYq8REPSk -0gbKukRX6FPYdpiAa7Rdjw22dfNZLTXahlVMRFmohmIGSBPvGOEKwWD4KicdFgvH -9Qk/e5LNgzDH +MIIDDjCCAfYCCQCxvzbj/rKRGTANBgkqhkiG9w0BAQsFADBJMQswCQYDVQQGEwJF +TjEWMBQGA1UECAwNVXBkYXRlLUNlbnRlcjEQMA4GA1UEBwwHSnVzZXBwZTEQMA4G +A1UECgwHSnVzZXBwZTAeFw0xODA2MTUwNDA1MzlaFw0yMTA1MDYwNDA1MzlaMEkx +CzAJBgNVBAYTAkVOMRYwFAYDVQQIDA1VcGRhdGUtQ2VudGVyMRAwDgYDVQQHDAdK +dXNlcHBlMRAwDgYDVQQKDAdKdXNlcHBlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAoAhYmHhRmtI+afJtctDoyiXDnyfj6UHxqWnYXBO39xMCDHTjWmYd +kCLjzzNRl8d+MmfmX8XHfJy3iOpFa9sxACf12lQ/kd1PuYkNbJ9mQCmVJD3XG6wo +MrKKex4ot7DMnkIDCf5Q+zPwlo/GEkiMQSZy8JWpBLPVm4GTodAwQhgGojGwz2Tl +NO675wEnoe+Y0jXpInDiBbPSwero0ZFKL2t+tl4jATStT6u6BnDdiwpnEC7fwXZt +4lf4MgTVmo+C7cxeCM0QEso7UqFA8i+ZouBJ6QXJpdjHvNs/aMJD/Z+UrZa/BI1p +XH0xkrXWJnOqFZYt8HjyuFTuC4DA/Yp66QIDAQABMA0GCSqGSIb3DQEBCwUAA4IB +AQCb6+8/joVAUiwStLlzvBm3fHNErlQeiVSAh3T6pneGxYIkwTQlVLMND5ilsPlU +S00+/mmKZurQGRVFY8xgHaJjh5/qo8joFSKdvc7H551VdxEcvkdw0SLgUKzCklmt +1Wzup4dgwGEFtvWm9H52BS/rNZhWtnSe1HjgAUOPjUjxdJUqQCM2PFdaDDsAV6sR +X7fZg3ZfaAKV3E+5Lq6gQ/69Q16apVNoX3izxDV3aJBPepOzFX9s3CtEaD+nPoAI +VX9sAN6BzqJk2YUP3pvOCpXbwP/dOu14ciRLGA+l9GX2HYA2egXi5FALmuM73+5e +zRkwxOCpTGDLCA9qijsalmC5 -----END CERTIFICATE----- diff --git a/juseppe-core/src/test/resources/tmp/cert/uc.key b/juseppe-core/src/test/resources/tmp/cert/uc.key index 425d4c3..3604efe 100644 --- a/juseppe-core/src/test/resources/tmp/cert/uc.key +++ b/juseppe-core/src/test/resources/tmp/cert/uc.key @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY-----