diff --git a/src/main/java/com/threerings/getdown/data/Application.java b/src/main/java/com/threerings/getdown/data/Application.java index 3cd0757..caa83a2 100644 --- a/src/main/java/com/threerings/getdown/data/Application.java +++ b/src/main/java/com/threerings/getdown/data/Application.java @@ -542,7 +542,7 @@ public class Application } // check if we're overriding the domain in the appbase - _appbase = overrideAppbase(_appbase); + _appbase = SysProps.overrideAppbase(_appbase); // make sure there's a trailing slash if (!_appbase.endsWith("/")) { @@ -567,7 +567,7 @@ public class Application if (latest.startsWith(_appbase)) { latest = _appbase + latest.substring(_appbase.length()); } else { - latest = replaceDomain(latest); + latest = SysProps.replaceDomain(latest); } try { _latest = new URL(latest); @@ -1809,31 +1809,6 @@ public class Application 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. - */ - protected String replaceDomain (String appbase) - { - String appbaseDomain = SysProps.appbaseDomain(); - if (appbaseDomain != null) { - Matcher m = Pattern.compile("(http://[^/]+)(.*)").matcher(appbase); - appbase = m.replaceAll(appbaseDomain + "$2"); - } - return appbase; - } - /** * Encodes a path for use in a URL. */ diff --git a/src/main/java/com/threerings/getdown/data/SysProps.java b/src/main/java/com/threerings/getdown/data/SysProps.java index ceb1fab..5238a53 100644 --- a/src/main/java/com/threerings/getdown/data/SysProps.java +++ b/src/main/java/com/threerings/getdown/data/SysProps.java @@ -5,6 +5,9 @@ package com.threerings.getdown.data; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import com.threerings.getdown.util.VersionUtil; import com.threerings.getdown.launcher.Getdown; @@ -136,4 +139,29 @@ public class SysProps "Regexp '" + propRegex + "' does not match '" + verstr + "' (from " + propName + ")"); return vers; } + + /** + * Applies {@code appbase_override} or {@code appbase_domain} if they are set. + */ + public static String overrideAppbase (String appbase) { + String appbaseOverride = appbaseOverride(); + if (appbaseOverride != null) { + return appbaseOverride; + } else { + return replaceDomain(appbase); + } + } + + /** + * If appbase_domain property is set, replace the domain on the provided string. + */ + public static String replaceDomain (String appbase) + { + String appbaseDomain = appbaseDomain(); + if (appbaseDomain != null) { + Matcher m = Pattern.compile("(https?://[^/]+)(.*)").matcher(appbase); + appbase = m.replaceAll(appbaseDomain + "$2"); + } + return appbase; + } } diff --git a/src/test/java/com/threerings/getdown/data/SysPropsTest.java b/src/test/java/com/threerings/getdown/data/SysPropsTest.java new file mode 100644 index 0000000..12a1510 --- /dev/null +++ b/src/test/java/com/threerings/getdown/data/SysPropsTest.java @@ -0,0 +1,42 @@ +// +// Getdown - application installer, patcher and launcher +// Copyright (C) 2004-2016 Getdown authors +// https://github.com/threerings/getdown/blob/master/LICENSE + +package com.threerings.getdown.data; + +import org.junit.*; +import static org.junit.Assert.*; + +public class SysPropsTest { + + @After public void clearProps () { + System.clearProperty("appbase_domain"); + System.clearProperty("appbase_override"); + } + + public static String[] APPBASES = { + "http://foobar.com/myapp", + "https://foobar.com/myapp", + "http://foobar.com:8080/myapp", + "https://foobar.com:8080/myapp" + }; + + @Test public void testAppbaseDomain () { + System.setProperty("appbase_domain", "https://barbaz.com"); + for (String appbase : APPBASES) { + assertEquals("https://barbaz.com/myapp", SysProps.overrideAppbase(appbase)); + } + System.setProperty("appbase_domain", "http://barbaz.com"); + for (String appbase : APPBASES) { + assertEquals("http://barbaz.com/myapp", SysProps.overrideAppbase(appbase)); + } + } + + @Test public void testAppbaseOverride () { + System.setProperty("appbase_override", "https://barbaz.com/newapp"); + for (String appbase : APPBASES) { + assertEquals("https://barbaz.com/newapp", SysProps.overrideAppbase(appbase)); + } + } +}