|
@@ -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();
|
|
|
}
|