diff --git a/Assembly/dependency-reduced-pom.xml b/Assembly/dependency-reduced-pom.xml
index 680acbb..9e49b30 100644
--- a/Assembly/dependency-reduced-pom.xml
+++ b/Assembly/dependency-reduced-pom.xml
@@ -3,7 +3,7 @@
AntiVPN
dev.brighten.antivpn
- 1.7.1.1
+ 1.8
4.0.0
Assembly
diff --git a/Assembly/pom.xml b/Assembly/pom.xml
index 49a9587..e06ea4d 100644
--- a/Assembly/pom.xml
+++ b/Assembly/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.7.1.1
+ 1.8
4.0.0
diff --git a/Bukkit/dependency-reduced-pom.xml b/Bukkit/dependency-reduced-pom.xml
index e6a9f7c..9e87c11 100644
--- a/Bukkit/dependency-reduced-pom.xml
+++ b/Bukkit/dependency-reduced-pom.xml
@@ -3,7 +3,7 @@
AntiVPN
dev.brighten.antivpn
- 1.7.1.1
+ 1.8
4.0.0
Bukkit
@@ -56,7 +56,7 @@
dev.brighten.antivpn
Common
- 1.7.1.1
+ 1.8
provided
diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml
index eb0f246..6a0561f 100644
--- a/Bukkit/pom.xml
+++ b/Bukkit/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.7.1.1
+ 1.8
4.0.0
@@ -69,7 +69,7 @@
dev.brighten.antivpn
Common
- 1.7.1.1
+ 1.8
provided
diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitCommandExecutor.java b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitCommandExecutor.java
index 1fc025b..c8df5ae 100644
--- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitCommandExecutor.java
+++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitCommandExecutor.java
@@ -16,8 +16,9 @@ public class BukkitCommandExecutor implements CommandExecutor {
private final CommandSender sender;
@Override
- public void sendMessage(String message) {
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
+ public void sendMessage(String message, Object... objects) {
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
+ String.format(message, objects)));
}
@Override
diff --git a/Bungee/dependency-reduced-pom.xml b/Bungee/dependency-reduced-pom.xml
index e8a4fff..8df74b3 100644
--- a/Bungee/dependency-reduced-pom.xml
+++ b/Bungee/dependency-reduced-pom.xml
@@ -3,7 +3,7 @@
AntiVPN
dev.brighten.antivpn
- 1.7.1.1
+ 1.8
4.0.0
Bungee
@@ -50,7 +50,7 @@
dev.brighten.antivpn
Common
- 1.7.1.1
+ 1.8
provided
diff --git a/Bungee/pom.xml b/Bungee/pom.xml
index a5c8ecd..1919049 100644
--- a/Bungee/pom.xml
+++ b/Bungee/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.7.1.1
+ 1.8
4.0.0
@@ -63,7 +63,7 @@
dev.brighten.antivpn
Common
- 1.7.1.1
+ 1.8
provided
diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommandExecutor.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommandExecutor.java
index f6d77c8..41b955e 100644
--- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommandExecutor.java
+++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/command/BungeeCommandExecutor.java
@@ -17,9 +17,9 @@ public class BungeeCommandExecutor implements CommandExecutor {
private final CommandSender sender;
@Override
- public void sendMessage(String message) {
+ public void sendMessage(String message, Object... objects) {
sender.sendMessage(TextComponent.fromLegacyText(ChatColor
- .translateAlternateColorCodes('&', message)));
+ .translateAlternateColorCodes('&', String.format(message, objects))));
}
@Override
diff --git a/Common/pom.xml b/Common/pom.xml
index e5cff0f..28dbdbd 100644
--- a/Common/pom.xml
+++ b/Common/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.7.1.1
+ 1.8
4.0.0
diff --git a/Common/src/main/java/dev/brighten/antivpn/command/CommandExecutor.java b/Common/src/main/java/dev/brighten/antivpn/command/CommandExecutor.java
index 7baa689..fbbc949 100644
--- a/Common/src/main/java/dev/brighten/antivpn/command/CommandExecutor.java
+++ b/Common/src/main/java/dev/brighten/antivpn/command/CommandExecutor.java
@@ -2,11 +2,12 @@ package dev.brighten.antivpn.command;
import dev.brighten.antivpn.api.APIPlayer;
+import java.util.Objects;
import java.util.Optional;
public interface CommandExecutor {
- void sendMessage(String message);
+ void sendMessage(String message, Object... objects);
boolean hasPermission(String permission);
Optional getPlayer();
boolean isPlayer();
diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/AntiVPNCommand.java b/Common/src/main/java/dev/brighten/antivpn/command/impl/AntiVPNCommand.java
index ab89ea4..e0d0dc8 100644
--- a/Common/src/main/java/dev/brighten/antivpn/command/impl/AntiVPNCommand.java
+++ b/Common/src/main/java/dev/brighten/antivpn/command/impl/AntiVPNCommand.java
@@ -45,7 +45,7 @@ public class AntiVPNCommand extends Command {
@Override
public Command[] children() {
return new Command[] {new LookupCommand(), new AllowlistCommand(), new AlertsCommand(),
- new ClearCacheCommand()};
+ new ClearCacheCommand(), new PlanCommand()};
}
@Override
diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/LookupCommand.java b/Common/src/main/java/dev/brighten/antivpn/command/impl/LookupCommand.java
index 1f1ac2e..cd2ba12 100644
--- a/Common/src/main/java/dev/brighten/antivpn/command/impl/LookupCommand.java
+++ b/Common/src/main/java/dev/brighten/antivpn/command/impl/LookupCommand.java
@@ -67,13 +67,13 @@ public class LookupCommand extends Command {
executor.sendMessage(StringUtil.line("&8"));
executor.sendMessage("&6&l" + player.get().getName() + "&7&l's Connection Information");
executor.sendMessage("");
- executor.sendMessage(String.format("&e%s&8: &f%s", "Proxy", result.isProxy()
- ? "&a" + result.getMethod() : "&cNo"));
- executor.sendMessage(String.format("&e%s&8: &f%s", "ISP", result.getIsp()));
- executor.sendMessage(String.format("&e%s&8: &f%s", "Country", result.getCountryName()));
- executor.sendMessage(String.format("&e%s&8: &f%s", "City", result.getCity()));
- executor.sendMessage(String.format("&e%s&8: &f%s", "Coordinates", result.getLatitude()
- + "&7/&f" + result.getLongitude()));
+ executor.sendMessage("&e%s&8: &f%s", "Proxy", result.isProxy()
+ ? "&a" + result.getMethod() : "&cNo");
+ executor.sendMessage("&e%s&8: &f%s", "ISP", result.getIsp());
+ executor.sendMessage("&e%s&8: &f%s", "Country", result.getCountryName());
+ executor.sendMessage("&e%s&8: &f%s", "City", result.getCity());
+ executor.sendMessage("&e%s&8: &f%s", "Coordinates", result.getLatitude()
+ + "&7/&f" + result.getLongitude());
executor.sendMessage(StringUtil.line("&8"));
}
});
diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/PlanCommand.java b/Common/src/main/java/dev/brighten/antivpn/command/impl/PlanCommand.java
new file mode 100644
index 0000000..5b193ab
--- /dev/null
+++ b/Common/src/main/java/dev/brighten/antivpn/command/impl/PlanCommand.java
@@ -0,0 +1,100 @@
+package dev.brighten.antivpn.command.impl;
+
+import dev.brighten.antivpn.AntiVPN;
+import dev.brighten.antivpn.api.VPNExecutor;
+import dev.brighten.antivpn.command.Command;
+import dev.brighten.antivpn.command.CommandExecutor;
+import dev.brighten.antivpn.utils.StringUtil;
+import dev.brighten.antivpn.utils.json.JSONException;
+import dev.brighten.antivpn.web.FunkemunkyAPI;
+import dev.brighten.antivpn.web.objects.QueryResponse;
+
+import java.io.IOException;
+import java.util.List;
+
+public class PlanCommand extends Command {
+ @Override
+ public String permission() {
+ return "antivpn.command.plan";
+ }
+
+ @Override
+ public String name() {
+ return "plan";
+ }
+
+ @Override
+ public String[] aliases() {
+ return new String[] {"queries", "query"};
+ }
+
+ @Override
+ public String description() {
+ return "Info related to KauriVPN Plan";
+ }
+
+ @Override
+ public String usage() {
+ return "";
+ }
+
+ @Override
+ public String parent() {
+ return "antivpn";
+ }
+
+ @Override
+ public Command[] children() {
+ return new Command[0];
+ }
+
+ @Override
+ public String execute(CommandExecutor executor, String[] args) {
+ VPNExecutor.threadExecutor.execute(() -> {
+ QueryResponse result;
+ try {
+ if(AntiVPN.getInstance().getVpnConfig().getLicense().equals("")) {
+ result = FunkemunkyAPI.getQueryResponse();
+ } else {
+ result = FunkemunkyAPI.getQueryResponse(AntiVPN.getInstance().getVpnConfig().getLicense());
+
+ if(!result.isValidPlan()) {
+ executor.sendMessage("&cThe license &f%s &cis not a valid license, " +
+ "checking your Free plan information...",
+ AntiVPN.getInstance().getVpnConfig().getLicense());
+
+ result = FunkemunkyAPI.getQueryResponse();
+ }
+ }
+
+ String plan = result.getPlanType();
+ if(plan.equals("IP")) plan+= " (Free)";
+
+ String queryMax = result.getQueriesMax() == Long.MAX_VALUE
+ ? "Unlimited" : String.valueOf(result.getQueriesMax());
+
+ executor.sendMessage(StringUtil.line("&8"));
+ executor.sendMessage("&6&lKauriVPN Plan Information");
+ executor.sendMessage("");
+ executor.sendMessage("&e%s&8: &f%s", "Plan", plan);
+ executor.sendMessage("&e%s&8: &f%s&7/&f%s", "Queries Used",
+ result.getQueries(), queryMax);
+ executor.sendMessage(StringUtil.line("&8"));
+ } catch(JSONException e) {
+ e.printStackTrace();
+ executor.sendMessage("&cThere was a JSONException thrown while looking up your query " +
+ "information. Check console for more details.");
+ } catch (IOException e) {
+ e.printStackTrace();
+ executor.sendMessage("&cThere was a IOException thrown while looking up your query " +
+ "information. Check console for more details.");
+ }
+ });
+ return "&7Looking up your query information...";
+ }
+
+ @Override
+ public List tabComplete(CommandExecutor executor, String alias, String[] args) {
+ return null;
+ }
+}
diff --git a/Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java b/Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java
index b97c3eb..5c7ab21 100644
--- a/Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java
+++ b/Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java
@@ -10,6 +10,17 @@ import java.io.IOException;
public class FunkemunkyAPI {
+ /**
+ *
+ * Queries https://funkemunky.cc/vpn API and returns information on the IP
+ *
+ * @param ip String
+ * @param license String
+ * @param cachedResults boolean
+ * @return VPNResponse
+ * @throws JSONException Throws when JSON response is not formatted properly.
+ * @throws IOException Throws when there is an error connecting to and processing information from API.
+ */
public static VPNResponse getVPNResponse(String ip, String license, boolean cachedResults /* faster if set to true*/)
throws JSONException, IOException {
JSONObject result = JsonReader.readJsonFromUrl(String
@@ -19,6 +30,27 @@ public class FunkemunkyAPI {
return VPNResponse.fromJson(result);
}
+ /**
+ * Feeds into {@link FunkemunkyAPI#getQueryResponse(String)} using "none" as argument
+ * to grab query information based on the connecting IP address.
+ *
+ * @return QueryResponse
+ * @throws JSONException Throws when JSON response is not formatted properly.
+ * @throws IOException Throws when there is an error connecting to and processing information from API.
+ */
+ public static QueryResponse getQueryResponse() throws JSONException, IOException {
+ return getQueryResponse("none");
+ }
+
+ /**
+ * Queries https://funkemunky.cc/vpn/queryCheck and returns information based on the
+ * provided licence input.
+ *
+ * @param license String
+ * @return QueryResponse
+ * @throws JSONException Throws when JSON response is not formatted properly.
+ * @throws IOException Throws when there is an error connecting to and processing information from API.
+ */
public static QueryResponse getQueryResponse(String license) throws JSONException, IOException {
JSONObject result = JsonReader.readJsonFromUrl("https://funkemunky.cc/vpn/queryCheck?license=" + license);
diff --git a/Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java b/Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java
index 651aa0a..2b2d6dd 100644
--- a/Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java
+++ b/Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java
@@ -19,24 +19,22 @@ public class QueryResponse {
private long queriesMax;
/**
- *
* Takes a JSON String and feeds it into {@link QueryResponse#fromJson(JSONObject)}
*
* @param jsonString String (formatted in JSON)
* @return QueryResponse
- * @throws JSONException Will throw if JSON is not formatted properly.
+ * @throws JSONException Throws when JSON is not formatted properly.
*/
public static QueryResponse fromJson(String jsonString) throws JSONException {
return fromJson(new JSONObject(jsonString));
}
/**
+ * Formats response from https://funkemunky.cc/vpn/queryCheck into {@link QueryResponse} for project use.
*
- * Will format response from https://funkemunky.cc/vpn/queryCheck into an Object for use.
- *
- * @param object JSOnObject
+ * @param object JSONObject
* @return QueryResponse
- * @throws JSONException If there is an error with the API.
+ * @throws JSONException Throws when JSON is not formatted properly.
*/
public static QueryResponse fromJson(JSONObject object) throws JSONException {
boolean validPlan = object.getBoolean("validPlan");
@@ -48,6 +46,6 @@ public class QueryResponse {
return QueryResponse.builder().validPlan(object.getBoolean("validPlan"))
.planType(object.getString("planType"))
.queries(object.getLong("queries"))
- .queriesMax(object.getLong("queriesMax")).build();
+ .queriesMax(object.getLong("queryLimit")).build();
}
}
diff --git a/Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java b/Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java
index a3e83b9..a36a06d 100644
--- a/Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java
+++ b/Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java
@@ -6,7 +6,6 @@ import lombok.*;
@Data
@AllArgsConstructor
-@RequiredArgsConstructor
@Builder
public class VPNResponse {
private String asn, ip, countryName, countryCode, city, timeZone, method, isp, failureReason = "N/A";
@@ -28,34 +27,31 @@ public class VPNResponse {
json.put("proxy", proxy);
json.put("success", success);
json.put("timeZone", timeZone);
- json.put("success", true);
json.put("queriesLeft", queriesLeft);
json.put("cached", cached);
return json;
}
+ /**
+ * Feeds into {@link VPNResponse#fromJson(JSONObject)} formatting the JSON {@link String} into
+ * a {@link JSONObject}
+ *
+ * @param json String
+ * @return VPNResponse
+ * @throws JSONException
+ */
public static VPNResponse fromJson(String json) throws JSONException {
- JSONObject jsonObject = new JSONObject(json);
-
- if(jsonObject.getBoolean("success")) {
- return new VPNResponse(jsonObject.getString("asn"), jsonObject.getString("ip"),
- jsonObject.getString("countryName"), jsonObject.getString("countryCode"),
- jsonObject.getString("city"), jsonObject.getString("timeZone"),
- jsonObject.has("method") ? jsonObject.getString("method") : "N/A",
- jsonObject.getString("isp"), "N/A", jsonObject.getBoolean("proxy"),
- jsonObject.getBoolean("cached"), jsonObject.getBoolean("success"),
- jsonObject.getDouble("latitude"), jsonObject.getDouble("longitude"),
- jsonObject.getLong("lastAccess"), jsonObject.getInt("queriesLeft"));
- } else {
- VPNResponse response = new VPNResponse(false);
-
- response.failureReason = jsonObject.getString("failureReason");
-
- return response;
- }
+ return fromJson(new JSONObject(json));
}
+ /**
+ * Formats response from https://funkemunky.cc/vpn into {@link VPNResponse} for project use.
+ *
+ * @param jsonObject JSONObject
+ * @return VPNResponse
+ * @throws JSONException Throws when JSON is not formatted properly.
+ */
public static VPNResponse fromJson(JSONObject jsonObject) throws JSONException {
if(jsonObject.getBoolean("success")) {
return new VPNResponse(jsonObject.getString("asn"), jsonObject.getString("ip"),
@@ -67,11 +63,8 @@ public class VPNResponse {
jsonObject.getDouble("latitude"), jsonObject.getDouble("longitude"),
jsonObject.getLong("lastAccess"), jsonObject.getInt("queriesLeft"));
} else {
- VPNResponse response = new VPNResponse(false);
-
- response.failureReason = jsonObject.getString("failureReason");
-
- return response;
+ return VPNResponse.builder().success(false)
+ .failureReason(jsonObject.getString("failureReason")).build();
}
}
}
diff --git a/Velocity/pom.xml b/Velocity/pom.xml
index eea43d7..cfd8b5e 100644
--- a/Velocity/pom.xml
+++ b/Velocity/pom.xml
@@ -5,7 +5,7 @@
AntiVPN
dev.brighten.antivpn
- 1.7.1.1
+ 1.8
4.0.0
@@ -33,7 +33,7 @@
dev.brighten.antivpn
Common
- 1.7.1.1
+ 1.8
provided
diff --git a/Velocity/src/main/java/dev/brighten/antivpn/velocity/command/VelocityCommandExecutor.java b/Velocity/src/main/java/dev/brighten/antivpn/velocity/command/VelocityCommandExecutor.java
index 7603cb8..b581543 100644
--- a/Velocity/src/main/java/dev/brighten/antivpn/velocity/command/VelocityCommandExecutor.java
+++ b/Velocity/src/main/java/dev/brighten/antivpn/velocity/command/VelocityCommandExecutor.java
@@ -16,8 +16,9 @@ public class VelocityCommandExecutor implements CommandExecutor {
private final CommandSource sender;
@Override
- public void sendMessage(String message) {
- sender.sendMessage(LegacyComponentSerializer.builder().character('&').build().deserialize(message));
+ public void sendMessage(String message, Object... objects) {
+ sender.sendMessage(LegacyComponentSerializer.builder().character('&').build()
+ .deserialize(String.format(message, objects)));
}
@Override
diff --git a/pom.xml b/pom.xml
index ce4882d..8d4e955 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
dev.brighten.antivpn
AntiVPN
pom
- 1.7.1.1
+ 1.8
Common