mirror of
https://github.com/2006-Scape/Parabot.git
synced 2026-07-03 00:37:55 +00:00
[FEATURE] Added new version comparison system
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>org.parabot</groupId>
|
||||
<artifactId>client</artifactId>
|
||||
<version>2.4.1</version>
|
||||
<version>2.4.1.1</version>
|
||||
|
||||
<packaging>jar</packaging>
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ public final class Landing {
|
||||
"Please download the newest version of Parabot at "
|
||||
+ Configuration.DOWNLOAD_BOT,
|
||||
JOptionPane.INFORMATION_MESSAGE);
|
||||
URI uri = URI.create(Configuration.DOWNLOAD_BOT);
|
||||
URI uri = URI.create(Configuration.API_DOWNLOAD_BOT);
|
||||
try {
|
||||
Desktop.getDesktop().browse(uri);
|
||||
} catch (IOException e1) {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.parabot.core;
|
||||
|
||||
import org.parabot.environment.api.utils.Version;
|
||||
|
||||
/**
|
||||
* Holds some important constants
|
||||
*
|
||||
@@ -14,11 +16,12 @@ 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_BOT_VERSION = "http://bdn.parabot.org/api/v2/bot/version";
|
||||
public static final String 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 REGISTRATION_PAGE = "https://www.parabot.org/community/register/";
|
||||
public static final String GET_RANDOMS = "http://bdn.parabot.org/api/get.php?action=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 BOT_VERSION = (String) ProjectProperties.getProjectVersion();
|
||||
public static final Version BOT_VERSION = ProjectProperties.getProjectVersion();
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.ParseException;
|
||||
import org.parabot.Landing;
|
||||
import org.parabot.core.ui.utils.UILog;
|
||||
import org.parabot.environment.api.utils.Version;
|
||||
import org.parabot.environment.api.utils.WebUtil;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
@@ -21,6 +22,7 @@ import java.security.NoSuchAlgorithmException;
|
||||
*
|
||||
* @author Everel, JKetelaar
|
||||
*/
|
||||
@SuppressWarnings("Duplicates")
|
||||
public class Core {
|
||||
public static boolean mDebug;
|
||||
private static boolean debug;
|
||||
@@ -31,6 +33,9 @@ public class Core {
|
||||
private static boolean validate = true;
|
||||
private static boolean secure = true;
|
||||
|
||||
private static Version currentVersion = Configuration.BOT_VERSION;
|
||||
private static Version latestVersion;
|
||||
|
||||
public static void disableValidation() {
|
||||
Core.validate = false;
|
||||
}
|
||||
@@ -168,6 +173,8 @@ 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>.
|
||||
*/
|
||||
@@ -201,6 +208,36 @@ public class Core {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean validVersion() {
|
||||
BufferedReader br = WebUtil.getReader(Configuration.GET_BOT_VERSION);
|
||||
try {
|
||||
latestVersion = null;
|
||||
if (br != null) {
|
||||
JSONObject object = (JSONObject) WebUtil.getJsonParser().parse(br);
|
||||
latestVersion = new Version((String) object.get("result"));
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
} catch (NumberFormatException | IOException | ParseException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (br != null) {
|
||||
br.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static void validateCache(){
|
||||
File[] cache = Directories.getCachePath().listFiles();
|
||||
Integer lowest = null;
|
||||
@@ -235,7 +272,7 @@ public class Core {
|
||||
Core.verbose("Checking for updates...");
|
||||
validateCache();
|
||||
|
||||
if (versionValid() && checksumValid()){
|
||||
if ((validVersion() && checksumValid()) || (!checksumValid() && currentVersion.compareTo(latestVersion) >= 0)){
|
||||
Core.verbose("No updates available.");
|
||||
return true;
|
||||
}else{
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.parabot.core;
|
||||
|
||||
import org.parabot.environment.api.utils.Version;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
@@ -34,9 +36,8 @@ public class ProjectProperties {
|
||||
return cached;
|
||||
}
|
||||
|
||||
public static Object getProjectVersion(){
|
||||
System.out.println(getInstance().getCached().getProperty("application.version"));
|
||||
return getInstance().getCached().getProperty("application.version");
|
||||
public static Version getProjectVersion(){
|
||||
return new Version(getInstance().getCached().getProperty("application.version"));
|
||||
}
|
||||
|
||||
public static ProjectProperties getInstance(){
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package org.parabot.environment.api.utils;
|
||||
|
||||
public class Version implements Comparable<Version> {
|
||||
|
||||
private String version;
|
||||
|
||||
public final String get() {
|
||||
return this.version;
|
||||
}
|
||||
|
||||
public Version(String version) {
|
||||
if(version == null) {
|
||||
throw new IllegalArgumentException("Version can not be null");
|
||||
}
|
||||
if(!version.matches("[0-9]+(\\.[0-9]+)*")) {
|
||||
throw new IllegalArgumentException("Invalid version format");
|
||||
}
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
@Override public int compareTo(Version that) {
|
||||
if(that == null) {
|
||||
return 1;
|
||||
}
|
||||
String[] thisParts = this.get().split("\\.");
|
||||
String[] thatParts = that.get().split("\\.");
|
||||
int length = Math.max(thisParts.length, thatParts.length);
|
||||
for(int i = 0; i < length; i++) {
|
||||
int thisPart = i < thisParts.length ?
|
||||
Integer.parseInt(thisParts[i]) : 0;
|
||||
int thatPart = i < thatParts.length ?
|
||||
Integer.parseInt(thatParts[i]) : 0;
|
||||
if(thisPart < thatPart) {
|
||||
return -1;
|
||||
}
|
||||
if(thisPart > thatPart) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override public boolean equals(Object that) {
|
||||
return this == that || that != null && this.getClass() == that.getClass() && this.compareTo((Version) that) == 0;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user