Jelajahi Sumber

Added getblacklist and settestenv command.

Veloe 1 tahun lalu
induk
melakukan
dc34ab302b

+ 29 - 8
src/main/java/com/veloe/ipfilter/FilterPlugin.java

@@ -5,6 +5,8 @@ import com.google.gson.FieldNamingPolicy;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.JsonDeserializer;
+import com.veloe.ipfilter.commands.GetBlacklistCommand;
+import com.veloe.ipfilter.commands.SetTestEnvCommand;
 import com.veloe.ipfilter.model.CheckResponse;
 import net.kyori.adventure.text.Component;
 import okhttp3.*;
@@ -23,20 +25,37 @@ import java.util.concurrent.TimeUnit;
 public final class FilterPlugin extends JavaPlugin implements @NotNull Listener {
 
     OkHttpClient client = new OkHttpClient();
-    Map<String, Date> blacklist = new HashMap<String, Date>();
-    Map<String, CheckResponse> responses = new HashMap<String, CheckResponse>();
+    public boolean testEnv = false;
+    public Map<String, Date> blacklist = new HashMap<String, Date>();
+    public Map<String, CheckResponse> responses = new HashMap<String, CheckResponse>();
     Map<CheckResponse, Date> responseDate = new HashMap<CheckResponse, Date>();
 
+    private static FilterPlugin _instance;
+
+    public static FilterPlugin getInstance()
+    {
+        return _instance;
+    }
+
     @Override
     public void onEnable() {
         // Plugin startup logic
+        _instance = this;
         Bukkit.getPluginManager().registerEvents(this,this);
+
+        this.getCommand("getblacklist").setExecutor(new GetBlacklistCommand());
+        this.getCommand("settestenv").setExecutor(new SetTestEnvCommand());
     }
 
     @EventHandler
     public void onPlayerJoin(PlayerJoinEvent event) {
         if (responses.containsKey(event.getPlayer().getAddress().getHostName()))
+        {
+            getLogger().info("Player info: " + event.getPlayer().getName() + " "
+                    + event.getPlayer().getAddress().getHostName() + " score: "
+                    + responses.get(event.getPlayer().getAddress().getHostName()).getData().getAbuseConfidenceScore());
             event.getPlayer().sendMessage(Component.text("Your abuse score: " + responses.get(event.getPlayer().getAddress().getHostName()).getData().getAbuseConfidenceScore()));
+        }
     }
 
     @EventHandler
@@ -46,7 +65,9 @@ public final class FilterPlugin extends JavaPlugin implements @NotNull Listener
         {
             if (TimeUnit.DAYS.convert((blacklist.get(event.getOriginalSocketAddressHostname()).getTime() - new Date().getTime()),TimeUnit.MILLISECONDS) < 2)
             {
+                getLogger().warning("Blacklist cache hit: " + event.getOriginalSocketAddressHostname());
                 event.failMessage(Component.text("Sorry, your IP is blacklisted."));
+                event.setCancelled(false);
                 event.setFailed(true);
                 return;
             }
@@ -91,21 +112,21 @@ public final class FilterPlugin extends JavaPlugin implements @NotNull Listener
 
             CheckResponse data = gson.fromJson(response.body().string(), CheckResponse.class);
 
-            if (Arrays.stream(data.getData().getReports()).filter(x -> Arrays.stream(x.getCategories()).anyMatch(y -> y == 14 || y== 15)).count() > 0)
+            if (Arrays.stream(data.getData().getReports()).filter(x -> Arrays.stream(x.getCategories()).anyMatch(y -> y == 14 || y== 15)).count() > 0 || testEnv)
             {
-                Bukkit.getConsoleSender().sendMessage("Added to blacklist: " + event.getOriginalSocketAddressHostname());
+                getLogger().warning("Added to blacklist: " + event.getOriginalSocketAddressHostname());
                 blacklist.put(event.getOriginalSocketAddressHostname(), new Date());
 
                 event.failMessage(Component.text("Sorry, your IP is blacklisted."));
+                event.setCancelled(false);
                 event.setFailed(true);
             }
-            else
-            {
-                responses.put(event.getOriginalSocketAddressHostname(), data);
-            }
+
+            responses.put(event.getOriginalSocketAddressHostname(), data);
 
         } catch (IOException e) {
             event.failMessage(Component.text("Can't check IP address: API IOException."));
+            event.setCancelled(false);
             event.setFailed(true);
             e.printStackTrace();
         }

+ 33 - 0
src/main/java/com/veloe/ipfilter/commands/GetBlacklistCommand.java

@@ -0,0 +1,33 @@
+package com.veloe.ipfilter.commands;
+
+import com.veloe.ipfilter.FilterPlugin;
+import net.kyori.adventure.text.Component;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.ConsoleCommandSender;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+
+public class GetBlacklistCommand implements CommandExecutor {
+
+    public GetBlacklistCommand() {
+        super();
+    }
+
+    @Override
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
+
+        Component message = Component.text("Blocked IP address:\n" + toString().join("\n",FilterPlugin.getInstance().blacklist.keySet()));
+
+        if (sender instanceof Player) {
+            sender.sendMessage(message);
+        }
+        else if (sender instanceof ConsoleCommandSender)
+        {
+            sender.getServer().sendMessage(message);
+        }
+        return true;
+    }
+}
+

+ 36 - 0
src/main/java/com/veloe/ipfilter/commands/SetTestEnvCommand.java

@@ -0,0 +1,36 @@
+package com.veloe.ipfilter.commands;
+
+import com.veloe.ipfilter.FilterPlugin;
+import net.kyori.adventure.text.Component;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.ConsoleCommandSender;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+
+public class SetTestEnvCommand implements CommandExecutor {
+
+    public SetTestEnvCommand() {
+        super();
+    }
+
+    @Override
+    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
+
+        if (FilterPlugin.getInstance().testEnv)
+            FilterPlugin.getInstance().testEnv = false;
+        else
+            FilterPlugin.getInstance().testEnv = true;
+
+        String message = "Test environment set to " + FilterPlugin.getInstance().testEnv;
+
+        if (sender instanceof Player) {
+            sender.sendMessage(Component.text(message));
+        }
+        else if (sender instanceof ConsoleCommandSender) {
+            FilterPlugin.getInstance().getLogger().info(message);
+        }
+        return true;
+    }
+}

+ 8 - 0
src/main/resources/plugin.yml

@@ -7,3 +7,11 @@ load: STARTUP
 authors: [ Veloe_Aetess ]
 description: Plugin for checking players ips for suspicious one.
 website: monitor.veloe.link
+commands:
+  getblacklist:
+    usage: "/getblacklist"
+    description: "shows all ips in blacklist"
+  settestenv:
+    permission: "abuseipdbfilter.command.settest"
+    usage: "/settestenv"
+    description: "enables/disables test environment"