diff --git a/Bukkit/dependency-reduced-pom.xml b/Bukkit/dependency-reduced-pom.xml
index 9874355..3e7b35e 100644
--- a/Bukkit/dependency-reduced-pom.xml
+++ b/Bukkit/dependency-reduced-pom.xml
@@ -7,6 +7,45 @@
4.0.0
Bukkit
+
+
+
+ true
+ src/main/resources
+
+
+
+
+ maven-compiler-plugin
+ 3.7.0
+
+ 8
+ 8
+ -XDignore.symbol.file
+
+
+
+ maven-shade-plugin
+ 3.1.0
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ org.bstats
+ dev.brighten.antivpn.bukkit.org.bstats
+
+
+
+
+
+
org.github.spigot
@@ -14,6 +53,12 @@
1.13.2
provided
+
+ dev.brighten.antivpn
+ Common
+ 1.4.0
+ provided
+
cc.funkemunky.utils
lombok
diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml
index 7576d84..c006c24 100644
--- a/Bukkit/pom.xml
+++ b/Bukkit/pom.xml
@@ -23,6 +23,28 @@
-XDignore.symbol.file
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.1.0
+
+
+
+ org.bstats
+
+ dev.brighten.antivpn.bukkit.org.bstats
+
+
+
+
+
+ package
+
+ shade
+
+
+
+
@@ -50,6 +72,12 @@
1.4.0
provided
+
+ org.bstats
+ bstats-bukkit
+ 2.2.1
+ compile
+
\ No newline at end of file
diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java
index c1e821d..e9a95f7 100644
--- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java
+++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java
@@ -35,7 +35,8 @@ public class BukkitConfig implements VPNConfig {
"commands.enabled", BukkitPlugin.pluginInstance), defaultKickPlayers
= new ConfigDefault<>(true, "kickPlayers", BukkitPlugin.pluginInstance),
defaultAlertToStaff = new ConfigDefault<>(true, "alerts.enabled",
- BukkitPlugin.pluginInstance);
+ BukkitPlugin.pluginInstance),
+ defaultMetrics = new ConfigDefault<>(true, "bstats", BukkitPlugin.pluginInstance);
private final ConfigDefault
defaultPort = new ConfigDefault<>(-1, "database.port", BukkitPlugin.pluginInstance);
private final ConfigDefault> prefixWhitelistsDefault = new ConfigDefault<>(new ArrayList<>(),
@@ -46,7 +47,7 @@ public class BukkitConfig implements VPNConfig {
private String license, kickMessage, databaseType, databaseName, username, password, ip, alertMsg;
private List prefixWhitelists, commands;
private int port;
- private boolean cacheResults, databaseEnabled, commandsEnabled, kickPlayers, alertToStaff;
+ private boolean cacheResults, databaseEnabled, commandsEnabled, kickPlayers, alertToStaff, metrics;
@Override
public String getLicense() {
@@ -140,6 +141,11 @@ public class BukkitConfig implements VPNConfig {
return port;
}
+ @Override
+ public boolean metrics() {
+ return metrics;
+ }
+
public void update() {
license = licenseDefault.get();
kickMessage = kickStringDefault.get();
@@ -157,5 +163,6 @@ public class BukkitConfig implements VPNConfig {
kickPlayers = defaultKickPlayers.get();
alertToStaff = defaultAlertToStaff.get();
alertMsg = defaultAlertMsg.get();
+ metrics = defaultMetrics.get();
}
}
diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java
index 6a9dee1..a0727da 100644
--- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java
+++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java
@@ -4,12 +4,16 @@ import dev.brighten.antivpn.AntiVPN;
import dev.brighten.antivpn.command.Command;
import lombok.val;
import net.md_5.bungee.api.ChatColor;
+import org.bstats.bukkit.Metrics;
+import org.bstats.charts.MultiLineChart;
+import org.bstats.charts.SingleLineChart;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.command.SimpleCommandMap;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.SimplePluginManager;
import org.bukkit.plugin.java.JavaPlugin;
+import org.bukkit.scheduler.BukkitRunnable;
import java.lang.reflect.Field;
import java.util.ArrayList;
@@ -23,18 +27,33 @@ public class BukkitPlugin extends JavaPlugin {
public static BukkitPlugin pluginInstance;
private SimpleCommandMap commandMap;
private List registeredCommands = new ArrayList<>();
+ private SingleLineChart vpnDetections, ipsChecked;
public void onEnable() {
pluginInstance = this;
//Loading config
- System.out.println("Loading config...");
+ Bukkit.getLogger().info("Loading config...");
saveDefaultConfig();
- System.out.println("Starting AntiVPN services...");
+ Bukkit.getLogger().info("Starting AntiVPN services...");
AntiVPN.start(new BukkitConfig(), new BukkitListener(), new BukkitPlayerExecutor());
- System.out.println("Setting up and registering commands...");
+ if(AntiVPN.getInstance().getConfig().metrics()) {
+ Bukkit.getLogger().info("Starting bStats metrics...");
+ Metrics metrics = new Metrics(this, 12615);
+ metrics.addCustomChart(vpnDetections = new SingleLineChart("vpn_detections",
+ () -> AntiVPN.getInstance().detections));
+ metrics.addCustomChart(ipsChecked = new SingleLineChart("ips_checked",
+ () -> AntiVPN.getInstance().checked));
+ new BukkitRunnable() {
+ public void run() {
+ AntiVPN.getInstance().checked = AntiVPN.getInstance().detections = 0;
+ }
+ }.runTaskTimerAsynchronously(this, 12000, 12000);
+ }
+
+ Bukkit.getLogger().info("Setting up and registering commands...");
if (pluginInstance.getServer().getPluginManager() instanceof SimplePluginManager) {
SimplePluginManager manager = (SimplePluginManager) pluginInstance.getServer().getPluginManager();
try {
@@ -110,10 +129,10 @@ public class BukkitPlugin extends JavaPlugin {
@Override
public void onDisable() {
- System.out.println("Stopping plugin services...");
+ Bukkit.getLogger().info("Stopping plugin services...");
AntiVPN.getInstance().stop();
- System.out.println("Unregistering commands...");
+ Bukkit.getLogger().info("Unregistering commands...");
try {
Field field = SimpleCommandMap.class.getDeclaredField("knownCommands");
field.setAccessible(true);
@@ -126,10 +145,10 @@ public class BukkitPlugin extends JavaPlugin {
e.printStackTrace();
}
- System.out.println("Unregistering listeners...");
+ Bukkit.getLogger().info("Unregistering listeners...");
HandlerList.unregisterAll(this);
- System.out.println("Cancelling any running tasks...");
+ Bukkit.getLogger().info("Cancelling any running tasks...");
Bukkit.getScheduler().cancelTasks(this);
}
}
diff --git a/Bungee/dependency-reduced-pom.xml b/Bungee/dependency-reduced-pom.xml
index 44993d0..4017f08 100644
--- a/Bungee/dependency-reduced-pom.xml
+++ b/Bungee/dependency-reduced-pom.xml
@@ -7,7 +7,52 @@
4.0.0
Bungee
+
+
+
+ true
+ src/main/resources
+
+
+
+
+ maven-compiler-plugin
+ 3.7.0
+
+ 8
+ 8
+ -XDignore.symbol.file
+
+
+
+ maven-shade-plugin
+ 3.1.0
+
+
+ package
+
+ shade
+
+
+
+
+
+
+ org.bstats
+ dev.brighten.antivpn.bungee.org.bstats
+
+
+
+
+
+
+
+ dev.brighten.antivpn
+ Common
+ 1.4.0
+ provided
+
org.github.bungee
BungeeCord-1.8
diff --git a/Bungee/pom.xml b/Bungee/pom.xml
index 945cec2..f483674 100644
--- a/Bungee/pom.xml
+++ b/Bungee/pom.xml
@@ -23,6 +23,28 @@
-XDignore.symbol.file
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.1.0
+
+
+
+ org.bstats
+
+ dev.brighten.antivpn.bungee.org.bstats
+
+
+
+
+
+ package
+
+ shade
+
+
+
+
@@ -50,6 +72,12 @@
1.8
provided
+
+ org.bstats
+ bstats-bungeecord
+ 2.2.1
+ compile
+
\ No newline at end of file
diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java
index e4cd748..91c9db4 100644
--- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java
+++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java
@@ -33,7 +33,8 @@ public class BungeeConfig implements VPNConfig {
"commands.enabled", BungeePlugin.pluginInstance), defaultKickPlayers
= new ConfigDefault<>(true, "kickPlayers", BungeePlugin.pluginInstance),
defaultAlertToStaff = new ConfigDefault<>(true, "alerts.enabled",
- BungeePlugin.pluginInstance);
+ BungeePlugin.pluginInstance),
+ defaultMetrics = new ConfigDefault<>(true, "bstats", BungeePlugin.pluginInstance);
private final ConfigDefault
defaultPort = new ConfigDefault<>(-1, "database.port", BungeePlugin.pluginInstance);
private final ConfigDefault> prefixWhitelistsDefault = new ConfigDefault<>(new ArrayList<>(),
@@ -44,7 +45,7 @@ public class BungeeConfig implements VPNConfig {
private String license, kickMessage, databaseType, databaseName, username, password, ip, alertMsg;
private List prefixWhitelists, commands;
private int port;
- private boolean cacheResults, databaseEnabled, commandsEnabled, kickPlayers, alertToStaff;
+ private boolean cacheResults, databaseEnabled, commandsEnabled, kickPlayers, alertToStaff, metrics;
@Override
public String getLicense() {
@@ -138,6 +139,11 @@ public class BungeeConfig implements VPNConfig {
return port;
}
+ @Override
+ public boolean metrics() {
+ return metrics;
+ }
+
public void update() {
license = licenseDefault.get();
kickMessage = kickStringDefault.get();
@@ -155,5 +161,6 @@ public class BungeeConfig implements VPNConfig {
kickPlayers = defaultKickPlayers.get();
alertToStaff = defaultAlertToStaff.get();
alertMsg = defaultAlertMsg.get();
+ metrics = defaultMetrics.get();
}
}
diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java
index dbf8f73..5761b53 100644
--- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java
+++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java
@@ -72,12 +72,14 @@ public class BungeeListener extends VPNExecutor implements Listener {
command.replace("%player%", event.getPlayer().getName())));
}
}
+ AntiVPN.getInstance().detections++;
} else if(!result.isSuccess()) {
BungeeCord.getInstance().getLogger()
.log(Level.WARNING,
"The API query was not a success! " +
"You may need to upgrade your license on https://funkemunky.cc/shop");
}
+ AntiVPN.getInstance().checked++;
});
}
}
diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeePlugin.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeePlugin.java
index 5567cd0..d812c6c 100644
--- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeePlugin.java
+++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeePlugin.java
@@ -12,8 +12,11 @@ import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.plugin.Plugin;
+import org.bstats.bungeecord.Metrics;
+import org.bstats.charts.SingleLineChart;
import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
public class BungeePlugin extends Plugin {
@@ -22,6 +25,7 @@ public class BungeePlugin extends Plugin {
@Getter
private Config config;
+ private SingleLineChart vpnDetections, ipsChecked;
private static BaseComponent[] noPermission = new ComponentBuilder("No permission").color(ChatColor.RED)
.create();
@@ -31,11 +35,25 @@ public class BungeePlugin extends Plugin {
pluginInstance = this;
//Setting up config
+ BungeeCord.getInstance().getLogger().info("Loading config...");
config = new Config();
//Loading plugin
+ BungeeCord.getInstance().getLogger().info("Starting AntiVPN services...");
AntiVPN.start(new BungeeConfig(), new BungeeListener(), new BungeePlayerExecutor());
+ if(AntiVPN.getInstance().getConfig().metrics()) {
+ BungeeCord.getInstance().getLogger().info("Starting bStats metrics...");
+ Metrics metrics = new Metrics(this, 12616);
+ metrics.addCustomChart(vpnDetections = new SingleLineChart("vpn_detections",
+ () -> AntiVPN.getInstance().detections));
+ metrics.addCustomChart(ipsChecked = new SingleLineChart("ips_checked",
+ () -> AntiVPN.getInstance().checked));
+ BungeeCord.getInstance().getScheduler().schedule(this,
+ () -> AntiVPN.getInstance().checked = AntiVPN.getInstance().detections = 0,
+ 10, 10, TimeUnit.MINUTES);
+ }
+
//TODO Add command functionality for BungeeCord
for (Command command : AntiVPN.getInstance().getCommands()) {
BungeeCord.getInstance().getPluginManager().registerCommand(pluginInstance, new net.md_5.bungee.api.plugin
diff --git a/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java b/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java
index 554cd9c..e1e4af2 100644
--- a/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java
+++ b/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java
@@ -30,6 +30,7 @@ public class AntiVPN {
private PlayerExecutor playerExecutor;
private VPNDatabase database;
private List commands = new ArrayList<>();
+ public int detections, checked;
public static void start(VPNConfig config, VPNExecutor executor, PlayerExecutor playerExecutor) {
//Initializing
diff --git a/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java b/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java
index 64accac..b6a1507 100644
--- a/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java
+++ b/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java
@@ -36,6 +36,8 @@ public interface VPNConfig {
int getPort();
+ boolean metrics();
+
void update();
}