Added override_appbase system property.

This can be used to completely override the appbase via the installer in
situations where you want to build a deployment once, but then potentially
serve it from some other webserver.
This commit is contained in:
Michael Bayne
2017-02-12 08:47:57 -08:00
parent 977b6de7b4
commit 1da36ace83
2 changed files with 27 additions and 5 deletions
@@ -537,14 +537,15 @@ public class Application
if (_appbase == null) { if (_appbase == null) {
throw new RuntimeException("m.missing_appbase"); throw new RuntimeException("m.missing_appbase");
} }
// check if we're overriding the domain in the appbase
_appbase = overrideAppbase(_appbase);
// make sure there's a trailing slash // make sure there's a trailing slash
if (!_appbase.endsWith("/")) { if (!_appbase.endsWith("/")) {
_appbase = _appbase + "/"; _appbase = _appbase + "/";
} }
// check if we're overriding the domain in the appbase
_appbase = replaceDomain(_appbase);
// extract our version information // extract our version information
String vstr = (String)cdata.get("version"); String vstr = (String)cdata.get("version");
if (vstr != null) _version = parseLong(vstr, "m.invalid_version"); if (vstr != null) _version = parseLong(vstr, "m.invalid_version");
@@ -560,7 +561,11 @@ public class Application
// check for a latest config URL // check for a latest config URL
String latest = (String)cdata.get("latest"); String latest = (String)cdata.get("latest");
if (latest != null) { if (latest != null) {
latest = replaceDomain(latest); if (latest.startsWith(_appbase)) {
latest = _appbase + latest.substring(_appbase.length());
} else {
latest = replaceDomain(latest);
}
try { try {
_latest = new URL(latest); _latest = new URL(latest);
} catch (MalformedURLException mue) { } catch (MalformedURLException mue) {
@@ -1736,6 +1741,18 @@ public class Application
return cookie.toString(); return cookie.toString();
} }
/**
* Applies {@code appbase_override} or {@code appbase_domain} if they are set.
*/
protected String overrideAppbase (String appbase) {
String appbaseOverride = SysProps.appbaseOverride();
if (appbaseOverride != null) {
return appbaseOverride;
} else {
return replaceDomain(appbase);
}
}
/** /**
* If appbase_domain property is set, replace the domain on the provided string. * If appbase_domain property is set, replace the domain on the provided string.
*/ */
@@ -27,7 +27,7 @@ public class SysProps
} }
/** Configures the appbase (in lieu of providing a skeleton getdown.txt, and as a last resort /** Configures the appbase (in lieu of providing a skeleton getdown.txt, and as a last resort
* fallback). Usage: {@code -Dappbase=someurl}. */ * fallback). Usage: {@code -Dappbase=URL}. */
public static String appBase () { public static String appBase () {
return System.getProperty("appbase"); return System.getProperty("appbase");
} }
@@ -43,6 +43,11 @@ public class SysProps
return System.getProperty("appbase_domain"); return System.getProperty("appbase_domain");
} }
/** Overrides enter {@code appbase}. Usage: {@code -Dappbase_override=URL}. */
public static String appbaseOverride () {
return System.getProperty("appbase_override");
}
/** If true, Getdown installs the app without ever bringing up a UI, except in the event of an /** If true, Getdown installs the app without ever bringing up a UI, except in the event of an
* error. NOTE: it does not launch the app. See {@link #launchInSilent}. * error. NOTE: it does not launch the app. See {@link #launchInSilent}.
* Usage: {@code -Dsilent}. */ * Usage: {@code -Dsilent}. */