Improve startup checks for invalid settings
This commit is contained in:
@@ -1,67 +1,38 @@
|
||||
package me.libraryaddict.disguise.utilities;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import me.libraryaddict.disguise.LibsDisguises;
|
||||
import me.libraryaddict.disguise.utilities.plugin.PluginInformation;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.craftbukkit.libs.org.apache.commons.io.IOUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 2/06/2017.
|
||||
*/
|
||||
public class LibsPremium {
|
||||
private static class PluginInformation {
|
||||
private String userID;
|
||||
private boolean premium;
|
||||
private String version;
|
||||
private String buildNumber;
|
||||
private String buildDate;
|
||||
private static Boolean thisPluginIsPaidFor;
|
||||
/**
|
||||
* Information of the actively running plugin
|
||||
*/
|
||||
private static PluginInformation pluginInformation;
|
||||
/**
|
||||
* Information of the plugin used to activate premium, if exists
|
||||
*/
|
||||
private static PluginInformation paidInformation;
|
||||
|
||||
public PluginInformation(String userID, boolean premium, String version, String buildNumber, String buildDate) {
|
||||
this.userID = userID;
|
||||
this.premium = premium;
|
||||
this.version = version;
|
||||
this.buildNumber = buildNumber;
|
||||
this.buildDate = buildDate;
|
||||
}
|
||||
|
||||
public String getUserID() {
|
||||
return userID;
|
||||
}
|
||||
|
||||
public boolean isPremium() {
|
||||
return premium;
|
||||
}
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public String getBuildNumber() {
|
||||
return buildNumber;
|
||||
}
|
||||
|
||||
public String getBuildDate() {
|
||||
return buildDate;
|
||||
}
|
||||
|
||||
public Date getParsedBuildDate() {
|
||||
try {
|
||||
return new SimpleDateFormat("dd/MM/yyyy HH:mm").parse(getBuildDate());
|
||||
}
|
||||
catch (ParseException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public static PluginInformation getPluginInformation() {
|
||||
return pluginInformation;
|
||||
}
|
||||
|
||||
private static Boolean thisPluginIsPaidFor;
|
||||
public static PluginInformation getPaidInformation() {
|
||||
return paidInformation;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Account ID if downloaded through SpigotMC
|
||||
@@ -92,8 +63,11 @@ public class LibsPremium {
|
||||
return !userID.contains("__USER__");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this plugin is premium
|
||||
*/
|
||||
public static Boolean isPremium() {
|
||||
return thisPluginIsPaidFor == null ? !getUserID().contains("__USER__") : thisPluginIsPaidFor;
|
||||
return thisPluginIsPaidFor == null ? isPremium(getUserID()) : thisPluginIsPaidFor;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -143,11 +117,15 @@ public class LibsPremium {
|
||||
|
||||
Boolean premium;
|
||||
String userId = null;
|
||||
String downloadId = null;
|
||||
String resourceId = null;
|
||||
|
||||
if (oldJarFile) {
|
||||
premium = (Boolean) c.getMethod("isPremium").invoke(null);
|
||||
} else {
|
||||
userId = (String) c.getMethod("getUserID").invoke(null);
|
||||
resourceId = (String) c.getMethod("getResourceID").invoke(null);
|
||||
downloadId = (String) c.getMethod("getDownloadID").invoke(null);
|
||||
premium = isPremium(userId);
|
||||
}
|
||||
|
||||
@@ -172,7 +150,8 @@ public class LibsPremium {
|
||||
|
||||
String pluginVersion = config.getString("version");
|
||||
|
||||
return new PluginInformation(userId, premium, pluginVersion, pluginBuildNumber, pluginBuildDate);
|
||||
return new PluginInformation(userId, resourceId, downloadId, premium, pluginVersion, pluginBuildNumber,
|
||||
pluginBuildDate);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +190,8 @@ public class LibsPremium {
|
||||
plugin.getBuildDate());
|
||||
|
||||
if (plugin.isPremium()) {
|
||||
if (!isValidVersion(version, plugin.getVersion()) || plugin.getUserID() == null) {
|
||||
if (!isValidVersion(version, plugin.getVersion()) || plugin.getUserID() == null ||
|
||||
plugin.getDownloadID() == null) {
|
||||
DisguiseUtilities.getLogger().warning(
|
||||
"You have an old Lib's Disguises jar (" + file.getName() + " " + fileInfo +
|
||||
") in the LibsDisguises folder! For security purposes, please replace this with a" +
|
||||
@@ -220,6 +200,8 @@ public class LibsPremium {
|
||||
continue;
|
||||
}
|
||||
|
||||
paidInformation = plugin;
|
||||
|
||||
thisPluginIsPaidFor = true;
|
||||
// Found a premium Lib's Disguises jar (v5.2.6, build #40, created 16/02/2019)
|
||||
DisguiseUtilities.getLogger().info("Found a premium Lib's Disguises jar (" + fileInfo + ")");
|
||||
@@ -251,12 +233,42 @@ public class LibsPremium {
|
||||
total += Character.getNumericValue(c);
|
||||
}
|
||||
|
||||
return String.format("%s(%s)", userID, total);
|
||||
return String.format("%s (%s)", userID, total);
|
||||
}
|
||||
|
||||
public static void check(String version) {
|
||||
public static void check(String version, File file) {
|
||||
thisPluginIsPaidFor = isPremium();
|
||||
|
||||
try {
|
||||
pluginInformation = getInformation(file);
|
||||
}
|
||||
catch (Exception e) {
|
||||
String pluginBuildDate = "??/??/????";
|
||||
|
||||
YamlConfiguration config = new YamlConfiguration();
|
||||
|
||||
try {
|
||||
config.loadFromString(IOUtils.toString(LibsDisguises.getInstance().getResource("plugin.yml"), "UTF-8"));
|
||||
|
||||
// If plugin.yml contains a build-date
|
||||
if (config.contains("build-date")) {
|
||||
pluginBuildDate = config.getString("build-date");
|
||||
}
|
||||
}
|
||||
catch (InvalidConfigurationException | IOException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
String buildNo = LibsDisguises.getInstance().getBuildNo();
|
||||
|
||||
if (buildNo != null && buildNo.matches("[0-9]+")) {
|
||||
buildNo = "#" + buildNo;
|
||||
}
|
||||
|
||||
pluginInformation = new PluginInformation(getUserID(), getResourceID(), getDownloadID(),
|
||||
isPremium(getUserID()), version, buildNo, pluginBuildDate);
|
||||
}
|
||||
|
||||
if (!isPremium() || !LibsDisguises.getInstance().isReleaseBuild()) {
|
||||
doSecondaryCheck(version);
|
||||
} else {
|
||||
@@ -264,7 +276,11 @@ public class LibsPremium {
|
||||
}
|
||||
|
||||
if (isPremium()) {
|
||||
DisguiseUtilities.getLogger().info("Premium enabled, thank you for supporting Lib's Disguises!");
|
||||
boolean prem =
|
||||
getPaidInformation() == null ? getPluginInformation().isLegit() : getPaidInformation().isLegit();
|
||||
|
||||
DisguiseUtilities.getLogger()
|
||||
.info("Premium enabled, thank you for supporting Lib's Disguises!" + (!prem ? "!" : ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user