From 2076802fa2a0488a89503e9def38f5a91c063412 Mon Sep 17 00:00:00 2001 From: JKetelaar Date: Sun, 5 Jun 2016 01:44:34 +0200 Subject: [PATCH] [FEATURE] Added nightly build support --- .../java/org/parabot/core/Configuration.java | 5 +- src/main/java/org/parabot/core/Core.java | 81 ++- .../environment/api/utils/Version.java | 4 + .../environment/api/utils/WebUtil.java | 551 +++++++++--------- 4 files changed, 323 insertions(+), 318 deletions(-) diff --git a/src/main/java/org/parabot/core/Configuration.java b/src/main/java/org/parabot/core/Configuration.java index 249efb1..b9c9871 100644 --- a/src/main/java/org/parabot/core/Configuration.java +++ b/src/main/java/org/parabot/core/Configuration.java @@ -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_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_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 DOWNLOAD_BOT = "http://bdn.parabot.org/versions/"; 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 DATA_API = "http://bdn.parabot.org/api/v2/data/"; 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 String BOT_TITLE = "Parabot"; public static final String BOT_SLOGAN = "The best RuneScape private server bot"; + + public static final String NIGHTLY_APPEND = "nightly=true"; } diff --git a/src/main/java/org/parabot/core/Core.java b/src/main/java/org/parabot/core/Core.java index ef565cb..c391960 100644 --- a/src/main/java/org/parabot/core/Core.java +++ b/src/main/java/org/parabot/core/Core.java @@ -24,7 +24,7 @@ import java.security.NoSuchAlgorithmException; */ @SuppressWarnings("Duplicates") public class Core { - public static boolean mDebug; + private static boolean debug; private static boolean verbose; private static boolean dump; @@ -75,21 +75,21 @@ public class Core { * @param dump */ public static void setDump(final boolean dump) { - Core.dump = dump; + Core.dump = dump; } - - public static void disableSec(){ - UILog.log( - "Security Warning", - "Disabling the securty manager is ill advised.\n" - + " Only do so if the client fails to load, or functions incorrectly (freezes,crashes, etc.)\n" - + "The security manager protects you from malicous code within the client, without it you are exposed!\n" - + "\nPlease contact Parabot staff to resolve whatever problem you are having!"); - Core.secure = false; + + public static void disableSec() { + UILog.log( + "Security Warning", + "Disabling the securty manager is ill advised.\n" + + " Only do so if the client fails to load, or functions incorrectly (freezes,crashes, etc.)\n" + + "The security manager protects you from malicous code within the client, without it you are exposed!\n" + + "\nPlease contact Parabot staff to resolve whatever problem you are having!"); + Core.secure = false; } - - public static boolean isSecure(){ - return secure; + + public static boolean isSecure() { + return secure; } /** @@ -110,7 +110,7 @@ public class Core { * @return if parabot should dump injected jar */ public static boolean shouldDump() { - return dump; + return dump; } /** @@ -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 + * * @return true if no new version is found, otherwise false. */ - private static boolean checksumValid(){ + private static boolean checksumValid() { File f = new File(Landing.class.getProtectionDomain().getCodeSource().getLocation().getFile()); if (f.isFile()) { try { @@ -158,7 +159,7 @@ public class Core { String result; 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); - if (!(boolean) object.get("result")){ + if (!(boolean) object.get("result")) { Core.verbose("Latest checksum: " + sb.toString()); Core.verbose("Latest checksum: " + object.get("current")); 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 true if no new version is found, otherwise false. + * @Deprecated use #validVersion instead + *

+ * 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); try { 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 */ 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 { latestVersion = null; if (br != null) { JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br); - latestVersion = new Version((String) object.get("version")); - } - if (latestVersion != null) { - if (Configuration.BOT_VERSION.compareTo(latestVersion) < 0) { - Core.verbose("Our version: " + Configuration.BOT_VERSION.get()); - Core.verbose("Latest version: " + latestVersion.get()); - return false; + boolean latest = Boolean.parseBoolean((String) object.get("result")); + if (!latest){ + Directories.clearCache(); } + return latest; } - } catch (NumberFormatException | IOException | ParseException e) { + } catch (IOException | ParseException e) { e.printStackTrace(); } finally { try { @@ -247,13 +246,13 @@ public class Core { /** * Validates the cache and removes the cache contents if required */ - private static void validateCache(){ + private static void validateCache() { File[] cache = Directories.getCachePath().listFiles(); Integer lowest = null; if (cache != null) { for (File f : cache) { - int date = (int) (f.lastModified()/ 1000); - if (lowest == null || date < lowest){ + int date = (int) (f.lastModified() / 1000); + if (lowest == null || date < lowest) { lowest = date; } } @@ -261,10 +260,10 @@ public class Core { try { 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"); Directories.clearCache(); - }else{ + } else { Core.verbose("Cache is up to date"); } } catch (MalformedURLException | ParseException e) { @@ -281,18 +280,12 @@ public class Core { Core.verbose("Checking for updates..."); validateCache(); - if ((validVersion() && checksumValid()) || (!checksumValid() && currentVersion.compareTo(latestVersion) >= 0)){ + if (validVersion() && checksumValid()) { Core.verbose("No updates available."); return true; - }else{ + } else { Core.verbose("Updates available..."); return false; } } - - public static void debug(int i) { - if(mDebug) { - System.out.println("DEBUG: " + i); - } - } } \ No newline at end of file diff --git a/src/main/java/org/parabot/environment/api/utils/Version.java b/src/main/java/org/parabot/environment/api/utils/Version.java index 172e182..d585171 100644 --- a/src/main/java/org/parabot/environment/api/utils/Version.java +++ b/src/main/java/org/parabot/environment/api/utils/Version.java @@ -22,6 +22,10 @@ public class Version implements Comparable { return this.version; } + public boolean isNightly(){ + return this.version.contains("RC"); + } + @Override public int compareTo(Version that) { if (that == null) { diff --git a/src/main/java/org/parabot/environment/api/utils/WebUtil.java b/src/main/java/org/parabot/environment/api/utils/WebUtil.java index 731e7de..3164679 100644 --- a/src/main/java/org/parabot/environment/api/utils/WebUtil.java +++ b/src/main/java/org/parabot/environment/api/utils/WebUtil.java @@ -8,315 +8,320 @@ import java.io.*; import java.net.*; /** - * * A WebUtil class fetches data from an URL - * + * * @author Everel - * */ public class WebUtil { - private static JSONParser jsonParser; + private static JSONParser jsonParser; - private static String agent = "Mozilla/5.0 (Wind0ws NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"; + private static String agent = "Mozilla/5.0 (Wind0ws NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"; - /** - * Agent to set at a URL connection - * - * @param userAgent - */ - public static void setUserAgent(final String userAgent) { - agent = userAgent; - } + /** + * Agent to set at a URL connection + * + * @param userAgent + */ + public static void setUserAgent(final String userAgent) { + agent = userAgent; + } - /** - * Gets useragent - * - * @return useragent - */ - public static String getUserAgent() { - return agent; - } + /** + * Gets useragent + * + * @return useragent + */ + public static String getUserAgent() { + return agent; + } - /** - * Fetches content of a page - * - * @param location - * @return contents of page - * @throws MalformedURLException - */ - public static String getContents(final String location) - throws MalformedURLException { - return getContents(new URL(location)); - } + /** + * Fetches content of a page + * + * @param location + * @return contents of page + * @throws MalformedURLException + */ + public static String getContents(final String location) + throws MalformedURLException { + return getContents(new URL(location)); + } - public static String getContents(final String location, String parameters) throws MalformedURLException { - return getContents(new URL(location), parameters); - } + public static String getContents(final String location, String parameters) throws MalformedURLException { + return getContents(new URL(location), parameters); + } - /** - * Get contents from URL - * - * @param url - * @return page contents - */ - public static String getContents(final URL url) { - return getContents(getConnection(url)); - } + /** + * Get contents from URL + * + * @param url + * @return page contents + */ + public static String getContents(final URL url) { + return getContents(getConnection(url)); + } - public static String getContents(final URL url, final String parameters) { - return getContents(getConnection(url), parameters); - } + public static String getContents(final URL url, final String parameters) { + return getContents(getConnection(url), parameters); + } - /** - * Gets contents from URLConnection - * - * @param urlConnection - * @return page contents - */ - public static String getContents(URLConnection urlConnection) { - try { - final BufferedReader in = getReader(urlConnection); - final StringBuilder builder = new StringBuilder(); - String line; - if (in != null) { - while ((line = in.readLine()) != null) { + /** + * Gets contents from URLConnection + * + * @param urlConnection + * @return page contents + */ + public static String getContents(URLConnection urlConnection) { + try { + final BufferedReader in = getReader(urlConnection); + final StringBuilder builder = new StringBuilder(); + String line; + if (in != null) { + while ((line = in.readLine()) != null) { builder.append(line); } - in.close(); - } - return builder.toString(); - } catch (Throwable t) { - t.printStackTrace(); - } - return null; - } + in.close(); + } + return builder.toString(); + } catch (Throwable t) { + t.printStackTrace(); + } + return null; + } - public static String getContents(URLConnection urlConnection, String parameters) { - try { - urlConnection.setDoOutput(true); - OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream()); - wr.write(parameters); - wr.flush(); - wr.close(); + public static String getContents(URLConnection urlConnection, String parameters) { + try { + urlConnection.setDoOutput(true); + OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream()); + wr.write(parameters); + wr.flush(); + wr.close(); - final BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); - final StringBuilder builder = new StringBuilder(); - String line; - while ((line = in.readLine()) != null) { - builder.append(line); - } - return builder.toString(); - } catch (Throwable t) { - t.printStackTrace(); - } - return null; - } + final BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); + final StringBuilder builder = new StringBuilder(); + String line; + while ((line = in.readLine()) != null) { + builder.append(line); + } + return builder.toString(); + } catch (Throwable t) { + t.printStackTrace(); + } + return null; + } - /** - * Gets buffered reader from string url - * - * @param url - * @return bufferedreader - */ - public static BufferedReader getReader(final String url) { - try { - return getReader(new URL(url)); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - return null; - } + /** + * Gets buffered reader from string url + * + * @param url + * @return bufferedreader + */ + public static BufferedReader getReader(final String url) { + try { + return getReader(new URL(url)); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + return null; + } - /** - * Gets BufferedReader from URL - * - * @param url - * @return BufferedReader from URL - */ - public static BufferedReader getReader(final URL url) { - return getReader(getConnection(url)); - } + /** + * Gets BufferedReader from URL + * + * @param url + * @return BufferedReader from URL + */ + public static BufferedReader getReader(final URL url) { + return getReader(getConnection(url)); + } - public static BufferedReader getReader(final URLConnection urlConnection) { - try { - return new BufferedReader(new InputStreamReader( - urlConnection.getInputStream())); - } catch (Throwable t) { - t.printStackTrace(); - } - return null; - } + public static BufferedReader getReader(final URLConnection urlConnection) { + try { + return new BufferedReader(new InputStreamReader( + urlConnection.getInputStream())); + } catch (Throwable t) { + t.printStackTrace(); + } + return null; + } - /** - * Gets inputstream from url - * - * @param url - * @return inputstream from url - */ - public static InputStream getInputStream(final URL url) { - final URLConnection con = getConnection(url); - try { - return con.getInputStream(); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } + /** + * Gets inputstream from url + * + * @param url + * @return inputstream from url + */ + public static InputStream getInputStream(final URL url) { + final URLConnection con = getConnection(url); + try { + return con.getInputStream(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } - /** - * Opens a connection - * - * @param url - * @return URLConnection to URL - */ - public static URLConnection getConnection(final URL url) { - try { - final URLConnection con = url.openConnection(); - con.setRequestProperty("User-Agent", agent); - return con; - } catch (Throwable t) { - t.printStackTrace(); - } - return null; - } + /** + * Opens a connection + * + * @param url + * @return URLConnection to URL + */ + public static URLConnection getConnection(final URL url) { + try { + final URLConnection con = url.openConnection(); + con.setRequestProperty("User-Agent", agent); + return con; + } catch (Throwable t) { + t.printStackTrace(); + } + return null; + } - public static BufferedReader getReader(final URL url, String username, String password) { - try { - String data = URLEncoder.encode("username", "UTF-8") + "=" + username; - data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + password; - - URLConnection connection = url.openConnection(); - - connection.setDoOutput(true); + public static BufferedReader getReader(final URL url, String username, String password) { + try { + String data = URLEncoder.encode("username", "UTF-8") + "=" + username; + data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + password; + + URLConnection connection = url.openConnection(); + + connection.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream()); wr.write(data); wr.flush(); wr.close(); - + return new BufferedReader(new InputStreamReader(connection.getInputStream())); - } catch (Throwable t) { - t.printStackTrace(); - } - return null; - } - - public static URLConnection getConnection(final URL url, String username, String password) { - try { - String data = URLEncoder.encode("username", "UTF-8") + "=" + username; - data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + password; - - URLConnection connection = url.openConnection(); - - connection.setDoOutput(true); + } catch (Throwable t) { + t.printStackTrace(); + } + return null; + } + + public static URLConnection getConnection(final URL url, String username, String password) { + try { + String data = URLEncoder.encode("username", "UTF-8") + "=" + username; + data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + password; + + URLConnection connection = url.openConnection(); + + connection.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream()); wr.write(data); wr.flush(); wr.close(); - + return connection; - } catch (Throwable t) { - t.printStackTrace(); - } - return null; - } + } catch (Throwable t) { + t.printStackTrace(); + } + return null; + } - /** - * Downloads a file on the internet - * @param url - * @param destination - * @param listener - */ - public static void downloadFile(final URL url, final File destination, - final ProgressListener listener) { - try { - final URLConnection connection = getConnection(url); - int size = connection.getContentLength(); - SizeInputStream sizeInputStream = new SizeInputStream( - connection.getInputStream(), size, listener); - BufferedInputStream in = new BufferedInputStream(sizeInputStream); - FileOutputStream fileOut = new FileOutputStream(destination); - try { - byte data[] = new byte[1024]; - int count; - while ((count = in.read(data, 0, 1024)) != -1) { - fileOut.write(data, 0, count); - } - } finally { - if (in != null) - in.close(); - if (fileOut != null) - fileOut.close(); - } - } catch (Throwable t) { - t.printStackTrace(); - } - } - - /** - * Downloads a file on the internet - * @param url - * @param destination - * @param listener - */ - public static void downloadFile(final URL url, final File destination, - final ProgressListener listener, String username, String password) { - try { - final URLConnection connection = getConnection(url, username, password); - int size = connection.getContentLength(); - SizeInputStream sizeInputStream = new SizeInputStream( - connection.getInputStream(), size, listener); - BufferedInputStream in = new BufferedInputStream(sizeInputStream); - FileOutputStream fileOut = new FileOutputStream(destination); - try { - byte data[] = new byte[1024]; - int count; - while ((count = in.read(data, 0, 1024)) != -1) { - fileOut.write(data, 0, count); - } - } finally { - if (in != null) - in.close(); - if (fileOut != null) - fileOut.close(); - } - } catch (Throwable t) { - t.printStackTrace(); - } - } - - /** - * Converts file format to url format - * @param file - * @return url to file - */ - public static URL toURL(File file) { - try { - return file.toURI().toURL(); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - return null; - } + /** + * Downloads a file on the internet + * + * @param url + * @param destination + * @param listener + */ + public static void downloadFile(final URL url, final File destination, + final ProgressListener listener) { + try { + final URLConnection connection = getConnection(url); + int size = connection.getContentLength(); + SizeInputStream sizeInputStream = new SizeInputStream( + connection.getInputStream(), size, listener); + BufferedInputStream in = new BufferedInputStream(sizeInputStream); + FileOutputStream fileOut = new FileOutputStream(destination); + try { + byte data[] = new byte[1024]; + int count; + while ((count = in.read(data, 0, 1024)) != -1) { + fileOut.write(data, 0, count); + } + } finally { + if (in != null) + in.close(); + if (fileOut != null) + fileOut.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } - public static JSONParser getJsonParser() { - if (jsonParser == null){ - jsonParser = new JSONParser(); - } - return jsonParser; - } + /** + * Downloads a file on the internet + * + * @param url + * @param destination + * @param listener + */ + public static void downloadFile(final URL url, final File destination, + final ProgressListener listener, String username, String password) { + try { + final URLConnection connection = getConnection(url, username, password); + int size = connection.getContentLength(); + SizeInputStream sizeInputStream = new SizeInputStream( + connection.getInputStream(), size, listener); + BufferedInputStream in = new BufferedInputStream(sizeInputStream); + FileOutputStream fileOut = new FileOutputStream(destination); + try { + byte data[] = new byte[1024]; + int count; + while ((count = in.read(data, 0, 1024)) != -1) { + fileOut.write(data, 0, count); + } + } finally { + if (in != null) + in.close(); + if (fileOut != null) + fileOut.close(); + } + } catch (Throwable t) { + t.printStackTrace(); + } + } - public static URI appendUri(String uri, String appendQuery) throws URISyntaxException { - URI oldUri = new URI(uri); + /** + * Converts file format to url format + * + * @param file + * @return url to file + */ + public static URL toURL(File file) { + try { + return file.toURI().toURL(); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + return null; + } - String newQuery = oldUri.getQuery(); - if (newQuery == null) { - newQuery = appendQuery; - } else { - newQuery += "&" + appendQuery; - } + public static JSONParser getJsonParser() { + if (jsonParser == null) { + jsonParser = new JSONParser(); + } + return jsonParser; + } - return new URI(oldUri.getScheme(), oldUri.getAuthority(), - oldUri.getPath(), newQuery, oldUri.getFragment()); - } + public static URI appendUri(String uri, String appendQuery) { + try { + URI oldUri = new URI(uri); + + String newQuery = oldUri.getQuery(); + if (newQuery == null) { + newQuery = appendQuery; + } else { + newQuery += "&" + appendQuery; + } + return new URI(oldUri.getScheme(), oldUri.getAuthority(), + oldUri.getPath(), newQuery, oldUri.getFragment()); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + return null; + } }