Improve startup checks for invalid settings
This commit is contained in:
parent
5e1ed00434
commit
fd2f7e4fbc
@ -53,7 +53,7 @@ public class LibsDisguises extends JavaPlugin {
|
|||||||
|
|
||||||
getLogger().info("Build Date: " + pluginYml.getString("build-date"));
|
getLogger().info("Build Date: " + pluginYml.getString("build-date"));
|
||||||
|
|
||||||
LibsPremium.check(getDescription().getVersion());
|
LibsPremium.check(getDescription().getVersion(), getFile());
|
||||||
|
|
||||||
if (!LibsPremium.isPremium()) {
|
if (!LibsPremium.isPremium()) {
|
||||||
getLogger().severe("You must purchase the plugin to use support for 1.14!");
|
getLogger().severe("You must purchase the plugin to use support for 1.14!");
|
||||||
@ -243,6 +243,14 @@ public class LibsDisguises extends JavaPlugin {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Invalidate invalid distribution
|
||||||
|
if (LibsPremium.isPremium() && LibsPremium.getPaidInformation() != null &&
|
||||||
|
LibsPremium.getPaidInformation().getDownloadID().equals("-1895736039")) {
|
||||||
|
throw new IllegalStateException(
|
||||||
|
"Error while checking pi rate on startup! Please re-download the jar from SpigotMC before " +
|
||||||
|
"reporting this error!");
|
||||||
|
}
|
||||||
|
|
||||||
disguiseType.setWatcherClass(watcherClass);
|
disguiseType.setWatcherClass(watcherClass);
|
||||||
|
|
||||||
if (DisguiseValues.getDisguiseValues(disguiseType) != null) {
|
if (DisguiseValues.getDisguiseValues(disguiseType) != null) {
|
||||||
|
@ -1,67 +1,38 @@
|
|||||||
package me.libraryaddict.disguise.utilities;
|
package me.libraryaddict.disguise.utilities;
|
||||||
|
|
||||||
import com.comphenix.protocol.PacketType;
|
|
||||||
import me.libraryaddict.disguise.LibsDisguises;
|
import me.libraryaddict.disguise.LibsDisguises;
|
||||||
|
import me.libraryaddict.disguise.utilities.plugin.PluginInformation;
|
||||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||||
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.craftbukkit.libs.org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by libraryaddict on 2/06/2017.
|
* Created by libraryaddict on 2/06/2017.
|
||||||
*/
|
*/
|
||||||
public class LibsPremium {
|
public class LibsPremium {
|
||||||
private static class PluginInformation {
|
private static Boolean thisPluginIsPaidFor;
|
||||||
private String userID;
|
/**
|
||||||
private boolean premium;
|
* Information of the actively running plugin
|
||||||
private String version;
|
*/
|
||||||
private String buildNumber;
|
private static PluginInformation pluginInformation;
|
||||||
private String buildDate;
|
/**
|
||||||
|
* 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) {
|
public static PluginInformation getPluginInformation() {
|
||||||
this.userID = userID;
|
return pluginInformation;
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Boolean thisPluginIsPaidFor;
|
public static PluginInformation getPaidInformation() {
|
||||||
|
return paidInformation;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Account ID if downloaded through SpigotMC
|
* @return Account ID if downloaded through SpigotMC
|
||||||
@ -92,8 +63,11 @@ public class LibsPremium {
|
|||||||
return !userID.contains("__USER__");
|
return !userID.contains("__USER__");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if this plugin is premium
|
||||||
|
*/
|
||||||
public static Boolean isPremium() {
|
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;
|
Boolean premium;
|
||||||
String userId = null;
|
String userId = null;
|
||||||
|
String downloadId = null;
|
||||||
|
String resourceId = null;
|
||||||
|
|
||||||
if (oldJarFile) {
|
if (oldJarFile) {
|
||||||
premium = (Boolean) c.getMethod("isPremium").invoke(null);
|
premium = (Boolean) c.getMethod("isPremium").invoke(null);
|
||||||
} else {
|
} else {
|
||||||
userId = (String) c.getMethod("getUserID").invoke(null);
|
userId = (String) c.getMethod("getUserID").invoke(null);
|
||||||
|
resourceId = (String) c.getMethod("getResourceID").invoke(null);
|
||||||
|
downloadId = (String) c.getMethod("getDownloadID").invoke(null);
|
||||||
premium = isPremium(userId);
|
premium = isPremium(userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +150,8 @@ public class LibsPremium {
|
|||||||
|
|
||||||
String pluginVersion = config.getString("version");
|
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());
|
plugin.getBuildDate());
|
||||||
|
|
||||||
if (plugin.isPremium()) {
|
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(
|
DisguiseUtilities.getLogger().warning(
|
||||||
"You have an old Lib's Disguises jar (" + file.getName() + " " + fileInfo +
|
"You have an old Lib's Disguises jar (" + file.getName() + " " + fileInfo +
|
||||||
") in the LibsDisguises folder! For security purposes, please replace this with a" +
|
") in the LibsDisguises folder! For security purposes, please replace this with a" +
|
||||||
@ -220,6 +200,8 @@ public class LibsPremium {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
paidInformation = plugin;
|
||||||
|
|
||||||
thisPluginIsPaidFor = true;
|
thisPluginIsPaidFor = true;
|
||||||
// Found a premium Lib's Disguises jar (v5.2.6, build #40, created 16/02/2019)
|
// 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 + ")");
|
DisguiseUtilities.getLogger().info("Found a premium Lib's Disguises jar (" + fileInfo + ")");
|
||||||
@ -251,12 +233,42 @@ public class LibsPremium {
|
|||||||
total += Character.getNumericValue(c);
|
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();
|
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()) {
|
if (!isPremium() || !LibsDisguises.getInstance().isReleaseBuild()) {
|
||||||
doSecondaryCheck(version);
|
doSecondaryCheck(version);
|
||||||
} else {
|
} else {
|
||||||
@ -264,7 +276,11 @@ public class LibsPremium {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isPremium()) {
|
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 ? "!" : ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import me.libraryaddict.disguise.disguisetypes.Disguise;
|
|||||||
import me.libraryaddict.disguise.disguisetypes.TargetedDisguise;
|
import me.libraryaddict.disguise.disguisetypes.TargetedDisguise;
|
||||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||||
import me.libraryaddict.disguise.utilities.LibsPremium;
|
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||||
|
import me.libraryaddict.disguise.utilities.plugin.PluginInformation;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -42,7 +43,22 @@ public class MetricsInitalizer {
|
|||||||
final String premiumType;
|
final String premiumType;
|
||||||
|
|
||||||
if (LibsPremium.isPremium()) {
|
if (LibsPremium.isPremium()) {
|
||||||
if (plugin.isReleaseBuild()) {
|
PluginInformation info = LibsPremium.getPaidInformation();
|
||||||
|
|
||||||
|
if (info == null) {
|
||||||
|
info = LibsPremium.getPluginInformation();
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean customPremium = !info.getUserID().matches("[0-9]+") || info.getUserID().equals("1") ||
|
||||||
|
!LibsPremium.getResourceID().equals("32453") || !info.getDownloadID().matches("-?[0-9]+");
|
||||||
|
|
||||||
|
if (customPremium) {
|
||||||
|
if (plugin.isReleaseBuild() && LibsPremium.getPaidInformation() == null) {
|
||||||
|
premiumType = "Custom Plugin";
|
||||||
|
} else {
|
||||||
|
premiumType = "Custom Builds";
|
||||||
|
}
|
||||||
|
} else if (plugin.isReleaseBuild()) {
|
||||||
premiumType = "Paid Plugin";
|
premiumType = "Paid Plugin";
|
||||||
} else {
|
} else {
|
||||||
premiumType = "Paid Builds";
|
premiumType = "Paid Builds";
|
||||||
|
@ -0,0 +1,60 @@
|
|||||||
|
package me.libraryaddict.disguise.utilities.plugin;
|
||||||
|
|
||||||
|
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by libraryaddict on 20/06/2019.
|
||||||
|
*/
|
||||||
|
public class PluginInformation {
|
||||||
|
private String userID;
|
||||||
|
private String resourceID;
|
||||||
|
private String downloadID;
|
||||||
|
private boolean premium;
|
||||||
|
private String version;
|
||||||
|
private String buildNumber;
|
||||||
|
private String buildDate;
|
||||||
|
|
||||||
|
public PluginInformation(String userID, String resourceID, String downloadID, boolean premium, String version,
|
||||||
|
String buildNumber, String buildDate) {
|
||||||
|
this.userID = userID;
|
||||||
|
this.resourceID = resourceID;
|
||||||
|
this.downloadID = downloadID;
|
||||||
|
this.premium = premium;
|
||||||
|
this.version = version;
|
||||||
|
this.buildNumber = buildNumber;
|
||||||
|
this.buildDate = buildDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserID() {
|
||||||
|
return userID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getResourceID() {
|
||||||
|
return resourceID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDownloadID() {
|
||||||
|
return downloadID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPremium() {
|
||||||
|
return premium;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersion() {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBuildNumber() {
|
||||||
|
return buildNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBuildDate() {
|
||||||
|
return buildDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLegit() {
|
||||||
|
return getUserID().matches("[0-9]+") && LibsPremium.getResourceID().equals("32453") &&
|
||||||
|
getDownloadID().matches("-?[0-9]+");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user