Handle more propertly local port configuration by system property

And prefixed property with "net.yacy" to avoid ambiguity.
pull/61/head
luccioman 9 years ago
parent 87858536e4
commit 9b9c112263

@ -1 +1 @@
web: java $JAVA_OPTS -Dhttp.port=$PORT -classpath target/classes:lib/* net.yacy.yacy web: java $JAVA_OPTS -Dnet.yacy.server.localPort=$PORT -classpath target/classes:lib/* net.yacy.yacy

@ -90,7 +90,7 @@
<dl> <dl>
<dt><label for="port">Peer Port: </label></dt> <dt><label for="port">Peer Port: </label></dt>
<dd> <dd>
<input type="text" name="port" id="port" value="#[defaultPort]#" size="5" maxlength="5" />&nbsp;&nbsp;&nbsp; <input type="text" name="port" id="port" value="#[defaultPort]#" size="5" maxlength="5" #(hasSystemDefinedPort)#::disabled="disabled"#(/hasSystemDefinedPort)#/> #(hasSystemDefinedPort)#::(Set by system property '#[systemProperty]#')#(/hasSystemDefinedPort)#&nbsp;&nbsp;&nbsp;
<input type="checkbox" name="withssl" id="withssl" #(withsslenabled)#::checked="checked"#(/withsslenabled)#>with SSL (https enabled#(withsslenabled)#:: on port <a href="Settings_p.html?page=ProxyAccess">#[sslport]#</a>#(/withsslenabled)#) <input type="checkbox" name="withssl" id="withssl" #(withsslenabled)#::checked="checked"#(/withsslenabled)#>with SSL (https enabled#(withsslenabled)#:: on port <a href="Settings_p.html?page=ProxyAccess">#[sslport]#</a>#(/withsslenabled)#)
</dd> </dd>
#(upnp)#::<dt> #(upnp)#::<dt>

@ -266,6 +266,8 @@ public class ConfigBasic {
// set default values // set default values
prop.putHTML("defaultName", sb.peers.mySeed().getName()); prop.putHTML("defaultName", sb.peers.mySeed().getName());
prop.put("hasSystemDefinedPort", env.getLocalPortSystemProperty() != null ? 1 : 0);
prop.put("hasSystemDefinedPort_systemProperty", serverSwitch.LOCAL_PORT_SYSTEM_PROPERTY);
prop.put("defaultPort", env.getLocalPort()); prop.put("defaultPort", env.getLocalPort());
prop.put("withsslenabled", env.getConfigBool("server.https", false) ? 1 : 0); prop.put("withsslenabled", env.getConfigBool("server.https", false) ? 1 : 0);
lang = env.getConfig("locale.language", "default"); // re-assign lang, may have changed lang = env.getConfig("locale.language", "default"); // re-assign lang, may have changed

@ -58,6 +58,9 @@ import net.yacy.peers.Seed;
import net.yacy.search.SwitchboardConstants; import net.yacy.search.SwitchboardConstants;
public class serverSwitch { public class serverSwitch {
/** Key of system property defining locally open http port */
public static final String LOCAL_PORT_SYSTEM_PROPERTY = "net.yacy.server.localPort";
// configuration management // configuration management
private final File configFile; private final File configFile;
@ -217,26 +220,39 @@ public class serverSwitch {
return getConfigInt(key, dflt); return getConfigInt(key, dflt);
} }
/**
* @return local http server port or null if system property is not defined
*/
public Integer getLocalPortSystemProperty() {
String systemDefinedPort = System.getProperty(LOCAL_PORT_SYSTEM_PROPERTY);
Integer localPort = null;
if(systemDefinedPort != null) {
try {
localPort = Integer.parseInt(systemDefinedPort);
} catch(NumberFormatException e) {
log.warn("System property " + LOCAL_PORT_SYSTEM_PROPERTY + " is not valid : it should be a integer.");
}
}
return localPort;
}
/** /**
* Wrapper for {@link #getConfigInt(String, int)} to have a more consistent * Wrapper for {@link #getConfigInt(String, int)} to have a more consistent
* API. * API.
* *
* Default value 8090 will be used if no value is found * Default value 8090 will be used if no value is found in system properties and in configuration.
* *
* @return the local port of this system * @return the local http port of this system
* @see #getPublicPort(String, int) * @see #getPublicPort(String, int)
*/ */
public int getLocalPort() { public int getLocalPort() {
/* A system property "http.port" may override configuration /* A system property "net.yacy.server.localPort" may override configuration
* This is useful when running YaCy inside a container manager such as Heroku which decide which http port to use */ * This is useful when running YaCy inside a container manager such as Heroku which decide which http port to use */
String systemDefinedPort = System.getProperty("http.port"); Integer localPort = getLocalPortSystemProperty();
if(systemDefinedPort != null) { if(localPort != null) {
try { return localPort;
return Integer.parseInt(systemDefinedPort);
} catch(NumberFormatException e) {
}
} }
return getConfigInt("port", 8090); return getConfigInt("port", 8090);
} }

Loading…
Cancel
Save