[FEATURE] Added nightly build support

This commit is contained in:
JKetelaar
2016-06-05 01:44:34 +02:00
parent 7a22f11923
commit 2076802fa2
4 changed files with 323 additions and 318 deletions
@@ -15,16 +15,19 @@ public class Configuration {
public static final String GET_SERVER_PROVIDER = "http://bdn.parabot.org/api/get.php?action=server_provider&name="; public static final String GET_SERVER_PROVIDER = "http://bdn.parabot.org/api/get.php?action=server_provider&name=";
public static final String GET_SERVER_PROVIDER_INFO = "http://bdn.parabot.org/api/get.php?action=server_information&name="; public static final String GET_SERVER_PROVIDER_INFO = "http://bdn.parabot.org/api/get.php?action=server_information&name=";
public static final String GET_SERVER_SETTINGS = "http://bdn.parabot.org/api/get.php?action=get_settings"; public static final String GET_SERVER_SETTINGS = "http://bdn.parabot.org/api/get.php?action=get_settings";
public static final String GET_BOT_VERSION = "http://v3.bdn.parabot.org/api/bot/list/client?latest=true"; public static final String GET_BOT_VERSION = "http://bdn.parabot.org/api/v2/bot/version";
public static final String API_DOWNLOAD_BOT = "http://bdn.parabot.org/api/v2/bot/download/client/"; public static final String API_DOWNLOAD_BOT = "http://bdn.parabot.org/api/v2/bot/download/client/";
public static final String DOWNLOAD_BOT = "http://bdn.parabot.org/versions/"; public static final String DOWNLOAD_BOT = "http://bdn.parabot.org/versions/";
public static final String REGISTRATION_PAGE = "https://www.parabot.org/community/register/"; public static final String REGISTRATION_PAGE = "https://www.parabot.org/community/register/";
public static final String GET_RANDOMS = "http://v3.bdn.parabot.org/api/bot/download/randoms"; public static final String GET_RANDOMS = "http://v3.bdn.parabot.org/api/bot/download/randoms";
public static final String DATA_API = "http://bdn.parabot.org/api/v2/data/"; public static final String DATA_API = "http://bdn.parabot.org/api/v2/data/";
public static final String ITEM_API = DATA_API + "items/"; public static final String ITEM_API = DATA_API + "items/";
public static final String COMPARE_VERSION_URL = "http://v3.bdn.parabot.org/api/bot/compare/%s/%s";
public static final Version BOT_VERSION = ProjectProperties.getProjectVersion(); public static final Version BOT_VERSION = ProjectProperties.getProjectVersion();
public static final String BOT_TITLE = "Parabot"; public static final String BOT_TITLE = "Parabot";
public static final String BOT_SLOGAN = "The best RuneScape private server bot"; public static final String BOT_SLOGAN = "The best RuneScape private server bot";
public static final String NIGHTLY_APPEND = "nightly=true";
} }
+25 -32
View File
@@ -24,7 +24,7 @@ import java.security.NoSuchAlgorithmException;
*/ */
@SuppressWarnings("Duplicates") @SuppressWarnings("Duplicates")
public class Core { public class Core {
public static boolean mDebug;
private static boolean debug; private static boolean debug;
private static boolean verbose; private static boolean verbose;
private static boolean dump; private static boolean dump;
@@ -78,7 +78,7 @@ public class Core {
Core.dump = dump; Core.dump = dump;
} }
public static void disableSec(){ public static void disableSec() {
UILog.log( UILog.log(
"Security Warning", "Security Warning",
"Disabling the securty manager is ill advised.\n" "Disabling the securty manager is ill advised.\n"
@@ -88,7 +88,7 @@ public class Core {
Core.secure = false; Core.secure = false;
} }
public static boolean isSecure(){ public static boolean isSecure() {
return secure; return secure;
} }
@@ -130,9 +130,10 @@ public class Core {
/** /**
* Checks the version of the bot using a checksum of the jar comparison against checksum given by the website * Checks the version of the bot using a checksum of the jar comparison against checksum given by the website
*
* @return <b>true</b> if no new version is found, otherwise <b>false</b>. * @return <b>true</b> if no new version is found, otherwise <b>false</b>.
*/ */
private static boolean checksumValid(){ private static boolean checksumValid() {
File f = new File(Landing.class.getProtectionDomain().getCodeSource().getLocation().getFile()); File f = new File(Landing.class.getProtectionDomain().getCodeSource().getLocation().getFile());
if (f.isFile()) { if (f.isFile()) {
try { try {
@@ -158,7 +159,7 @@ public class Core {
String result; String result;
if ((result = WebUtil.getContents("http://bdn.parabot.org/api/v2/bot/checksum", "checksum=" + URLEncoder.encode(sb.toString(), "UTF-8"))) != null) { if ((result = WebUtil.getContents("http://bdn.parabot.org/api/v2/bot/checksum", "checksum=" + URLEncoder.encode(sb.toString(), "UTF-8"))) != null) {
JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(result); JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(result);
if (!(boolean) object.get("result")){ if (!(boolean) object.get("result")) {
Core.verbose("Latest checksum: " + sb.toString()); Core.verbose("Latest checksum: " + sb.toString());
Core.verbose("Latest checksum: " + object.get("current")); Core.verbose("Latest checksum: " + object.get("current"));
return false; return false;
@@ -173,13 +174,12 @@ public class Core {
} }
/** /**
* @Deprecated use #validVersion instead
*
* Checks the version of the bot using a variable comparison from the bot code and the Parabot website
*
* @return <b>true</b> if no new version is found, otherwise <b>false</b>. * @return <b>true</b> if no new version is found, otherwise <b>false</b>.
* @Deprecated use #validVersion instead
* <p>
* Checks the version of the bot using a variable comparison from the bot code and the Parabot website
*/ */
private static boolean versionValid(){ private static boolean versionValid() {
BufferedReader br = WebUtil.getReader(Configuration.GET_BOT_VERSION); BufferedReader br = WebUtil.getReader(Configuration.GET_BOT_VERSION);
try { try {
String version = null; String version = null;
@@ -215,21 +215,20 @@ public class Core {
* @return True if the current version is equal or higher than the latest version, false if lower than the latest version * @return True if the current version is equal or higher than the latest version, false if lower than the latest version
*/ */
public static boolean validVersion() { public static boolean validVersion() {
BufferedReader br = WebUtil.getReader(Configuration.GET_BOT_VERSION); String url = String.format(Configuration.COMPARE_VERSION_URL, "client", currentVersion.get());
BufferedReader br = WebUtil.getReader(url);
try { try {
latestVersion = null; latestVersion = null;
if (br != null) { if (br != null) {
JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br); JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br);
latestVersion = new Version((String) object.get("version")); boolean latest = Boolean.parseBoolean((String) object.get("result"));
if (!latest){
Directories.clearCache();
} }
if (latestVersion != null) { return latest;
if (Configuration.BOT_VERSION.compareTo(latestVersion) < 0) {
Core.verbose("Our version: " + Configuration.BOT_VERSION.get());
Core.verbose("Latest version: " + latestVersion.get());
return false;
} }
} } catch (IOException | ParseException e) {
} catch (NumberFormatException | IOException | ParseException e) {
e.printStackTrace(); e.printStackTrace();
} finally { } finally {
try { try {
@@ -247,13 +246,13 @@ public class Core {
/** /**
* Validates the cache and removes the cache contents if required * Validates the cache and removes the cache contents if required
*/ */
private static void validateCache(){ private static void validateCache() {
File[] cache = Directories.getCachePath().listFiles(); File[] cache = Directories.getCachePath().listFiles();
Integer lowest = null; Integer lowest = null;
if (cache != null) { if (cache != null) {
for (File f : cache) { for (File f : cache) {
int date = (int) (f.lastModified()/ 1000); int date = (int) (f.lastModified() / 1000);
if (lowest == null || date < lowest){ if (lowest == null || date < lowest) {
lowest = date; lowest = date;
} }
} }
@@ -261,10 +260,10 @@ public class Core {
try { try {
JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(WebUtil.getContents("http://bdn.parabot.org/api/v2/bot/cache", "date=" + lowest)); JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(WebUtil.getContents("http://bdn.parabot.org/api/v2/bot/cache", "date=" + lowest));
if ((boolean) object.get("result")){ if ((boolean) object.get("result")) {
Core.verbose("Making space for the latest cache files"); Core.verbose("Making space for the latest cache files");
Directories.clearCache(); Directories.clearCache();
}else{ } else {
Core.verbose("Cache is up to date"); Core.verbose("Cache is up to date");
} }
} catch (MalformedURLException | ParseException e) { } catch (MalformedURLException | ParseException e) {
@@ -281,18 +280,12 @@ public class Core {
Core.verbose("Checking for updates..."); Core.verbose("Checking for updates...");
validateCache(); validateCache();
if ((validVersion() && checksumValid()) || (!checksumValid() && currentVersion.compareTo(latestVersion) >= 0)){ if (validVersion() && checksumValid()) {
Core.verbose("No updates available."); Core.verbose("No updates available.");
return true; return true;
}else{ } else {
Core.verbose("Updates available..."); Core.verbose("Updates available...");
return false; return false;
} }
} }
public static void debug(int i) {
if(mDebug) {
System.out.println("DEBUG: " + i);
}
}
} }
@@ -22,6 +22,10 @@ public class Version implements Comparable<Version> {
return this.version; return this.version;
} }
public boolean isNightly(){
return this.version.contains("RC");
}
@Override @Override
public int compareTo(Version that) { public int compareTo(Version that) {
if (that == null) { if (that == null) {
@@ -8,11 +8,9 @@ import java.io.*;
import java.net.*; import java.net.*;
/** /**
*
* A WebUtil class fetches data from an URL * A WebUtil class fetches data from an URL
* *
* @author Everel * @author Everel
*
*/ */
public class WebUtil { public class WebUtil {
@@ -223,6 +221,7 @@ public class WebUtil {
/** /**
* Downloads a file on the internet * Downloads a file on the internet
*
* @param url * @param url
* @param destination * @param destination
* @param listener * @param listener
@@ -255,6 +254,7 @@ public class WebUtil {
/** /**
* Downloads a file on the internet * Downloads a file on the internet
*
* @param url * @param url
* @param destination * @param destination
* @param listener * @param listener
@@ -287,6 +287,7 @@ public class WebUtil {
/** /**
* Converts file format to url format * Converts file format to url format
*
* @param file * @param file
* @return url to file * @return url to file
*/ */
@@ -300,13 +301,14 @@ public class WebUtil {
} }
public static JSONParser getJsonParser() { public static JSONParser getJsonParser() {
if (jsonParser == null){ if (jsonParser == null) {
jsonParser = new JSONParser(); jsonParser = new JSONParser();
} }
return jsonParser; return jsonParser;
} }
public static URI appendUri(String uri, String appendQuery) throws URISyntaxException { public static URI appendUri(String uri, String appendQuery) {
try {
URI oldUri = new URI(uri); URI oldUri = new URI(uri);
String newQuery = oldUri.getQuery(); String newQuery = oldUri.getQuery();
@@ -315,8 +317,11 @@ public class WebUtil {
} else { } else {
newQuery += "&" + appendQuery; newQuery += "&" + appendQuery;
} }
return new URI(oldUri.getScheme(), oldUri.getAuthority(), return new URI(oldUri.getScheme(), oldUri.getAuthority(),
oldUri.getPath(), newQuery, oldUri.getFragment()); oldUri.getPath(), newQuery, oldUri.getFragment());
} catch (URISyntaxException e) {
e.printStackTrace();
}
return null;
} }
} }