Compare commits
No commits in common. "stable" and "1.0" have entirely different histories.
7 changed files with 32 additions and 237 deletions
|
|
@ -25,7 +25,6 @@ dependencies {
|
||||||
implementation 'org.postgresql:postgresql:42.7.7'
|
implementation 'org.postgresql:postgresql:42.7.7'
|
||||||
implementation 'org.flywaydb:flyway-core:10.7.2'
|
implementation 'org.flywaydb:flyway-core:10.7.2'
|
||||||
implementation 'org.flywaydb:flyway-database-postgresql:10.7.2'
|
implementation 'org.flywaydb:flyway-database-postgresql:10.7.2'
|
||||||
implementation 'com.google.code.gson:gson:2.11.0'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
shadowJar {
|
shadowJar {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package net.kuraczyk.banhammer;
|
package net.kuraczyk.banhammer;
|
||||||
|
|
||||||
import net.kuraczyk.banhammer.workers.BanJobWorker;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
@ -58,8 +57,6 @@ public final class BanHammer extends JavaPlugin {
|
||||||
new BHConfig(this);
|
new BHConfig(this);
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(new PlayerPreLogin(this), this);
|
getServer().getPluginManager().registerEvents(new PlayerPreLogin(this), this);
|
||||||
|
|
||||||
new BanJobWorker(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
package net.kuraczyk.banhammer.cmds;
|
package net.kuraczyk.banhammer.cmds;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import io.papermc.paper.configuration.type.fallback.FallbackValue;
|
import io.papermc.paper.configuration.type.fallback.FallbackValue;
|
||||||
import net.kuraczyk.banhammer.BanHammer;
|
import net.kuraczyk.banhammer.BanHammer;
|
||||||
import net.kuraczyk.banhammer.utils.IPBan;
|
|
||||||
import net.kuraczyk.banhammer.utils.PlayerBan;
|
import net.kuraczyk.banhammer.utils.PlayerBan;
|
||||||
import net.kuraczyk.banhammer.utils.TextUtils;
|
import net.kuraczyk.banhammer.utils.TextUtils;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
|
|
@ -20,9 +17,6 @@ import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
|
|
||||||
|
|
||||||
public class Ban implements CommandExecutor {
|
public class Ban implements CommandExecutor {
|
||||||
|
|
||||||
BanHammer plugin;
|
BanHammer plugin;
|
||||||
|
|
@ -106,7 +100,7 @@ public class Ban implements CommandExecutor {
|
||||||
stmt.setString(2, scope);
|
stmt.setString(2, scope);
|
||||||
ResultSet rs = stmt.executeQuery();
|
ResultSet rs = stmt.executeQuery();
|
||||||
if(rs.next()){
|
if(rs.next()){
|
||||||
p.sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.alreadyBannedInScopeError")), args[0], scope, reason, p.getName())));
|
p.sendMessage(TextUtils.colorString(addPrefix(plugin.translations.getString("command.ban.alreadyBannedInScopeError"))));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} catch (SQLException e){
|
} catch (SQLException e){
|
||||||
|
|
@ -119,7 +113,9 @@ public class Ban implements CommandExecutor {
|
||||||
|
|
||||||
if(b != null) {
|
if(b != null) {
|
||||||
if(banEndDate == null) {
|
if(banEndDate == null) {
|
||||||
createPlayerKickJob(b, scope);
|
if(target!=null)
|
||||||
|
if(target.isOnline())
|
||||||
|
if(Objects.equals(plugin.config.getString("serverID"), scope) || Objects.equals(scope, "*")) target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanPerm"), b)));
|
||||||
p.sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.successfulBanMessagePerm")), args[0], scope, reason, p.getName())));
|
p.sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.successfulBanMessagePerm")), args[0], scope, reason, p.getName())));
|
||||||
String bcMess = plugin.translations.getString("command.ban.banPublicAnnouncementPerm");
|
String bcMess = plugin.translations.getString("command.ban.banPublicAnnouncementPerm");
|
||||||
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveBanMessagePlaceholders(bcMess, args[0], scope, reason, p.getName())));
|
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveBanMessagePlaceholders(bcMess, args[0], scope, reason, p.getName())));
|
||||||
|
|
@ -135,7 +131,9 @@ public class Ban implements CommandExecutor {
|
||||||
long timeLeftSeconds = TimeUnit.MILLISECONDS.toSeconds(timeLeft);
|
long timeLeftSeconds = TimeUnit.MILLISECONDS.toSeconds(timeLeft);
|
||||||
String parsedBanDuration = TextUtils.parsePolishDate(timeLeftDays, timeLeftHours, timeLeftMinutes, timeLeftSeconds);
|
String parsedBanDuration = TextUtils.parsePolishDate(timeLeftDays, timeLeftHours, timeLeftMinutes, timeLeftSeconds);
|
||||||
|
|
||||||
createPlayerKickJob(b, scope);
|
if(target!=null)
|
||||||
|
if(target.isOnline())
|
||||||
|
if(Objects.equals(plugin.config.getString("serverID"), scope) || Objects.equals(scope, "*")) target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanTemp"), b)));
|
||||||
p.sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.successfulBanMessageTemp")), args[0], scope, reason, p.getName(), parsedBanDuration)));
|
p.sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.successfulBanMessageTemp")), args[0], scope, reason, p.getName(), parsedBanDuration)));
|
||||||
String bcMess = plugin.translations.getString("command.ban.banPublicAnnouncementTemp");
|
String bcMess = plugin.translations.getString("command.ban.banPublicAnnouncementTemp");
|
||||||
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveBanMessagePlaceholders(bcMess, args[0], scope, reason, p.getName(), parsedBanDuration)));
|
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveBanMessagePlaceholders(bcMess, args[0], scope, reason, p.getName(), parsedBanDuration)));
|
||||||
|
|
@ -216,7 +214,7 @@ public class Ban implements CommandExecutor {
|
||||||
stmt.setString(2, scope);
|
stmt.setString(2, scope);
|
||||||
ResultSet rs = stmt.executeQuery();
|
ResultSet rs = stmt.executeQuery();
|
||||||
if(rs.next()){
|
if(rs.next()){
|
||||||
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.alreadyBannedInScopeError")), args[0], scope, reason, "CONSOLE")));
|
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(addPrefix(plugin.translations.getString("command.ban.alreadyBannedInScopeError"))));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} catch (SQLException e){
|
} catch (SQLException e){
|
||||||
|
|
@ -229,7 +227,9 @@ public class Ban implements CommandExecutor {
|
||||||
|
|
||||||
if(b != null) {
|
if(b != null) {
|
||||||
if(banEndDate == null) {
|
if(banEndDate == null) {
|
||||||
createPlayerKickJob(b, scope);
|
if(target!=null)
|
||||||
|
if(target.isOnline())
|
||||||
|
if(Objects.equals(plugin.config.getString("serverID"), scope) || Objects.equals(scope, "*")) target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanPerm"), b)));
|
||||||
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.successfulBanMessagePerm")), args[0], scope, reason, "CONSOLE")));
|
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.successfulBanMessagePerm")), args[0], scope, reason, "CONSOLE")));
|
||||||
String bcMess = plugin.translations.getString("command.ban.banPublicAnnouncementPerm");
|
String bcMess = plugin.translations.getString("command.ban.banPublicAnnouncementPerm");
|
||||||
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveBanMessagePlaceholders(bcMess, args[0], scope, reason, "CONSOLE")));
|
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveBanMessagePlaceholders(bcMess, args[0], scope, reason, "CONSOLE")));
|
||||||
|
|
@ -245,7 +245,9 @@ public class Ban implements CommandExecutor {
|
||||||
long timeLeftSeconds = TimeUnit.MILLISECONDS.toSeconds(timeLeft);
|
long timeLeftSeconds = TimeUnit.MILLISECONDS.toSeconds(timeLeft);
|
||||||
String parsedBanDuration = TextUtils.parsePolishDate(timeLeftDays, timeLeftHours, timeLeftMinutes, timeLeftSeconds);
|
String parsedBanDuration = TextUtils.parsePolishDate(timeLeftDays, timeLeftHours, timeLeftMinutes, timeLeftSeconds);
|
||||||
|
|
||||||
createPlayerKickJob(b, scope);
|
if(target!=null)
|
||||||
|
if(target.isOnline())
|
||||||
|
if(Objects.equals(plugin.config.getString("serverID"), scope) || Objects.equals(scope, "*")) target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanTemp"), b)));
|
||||||
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.successfulBanMessageTemp")), args[0], scope, reason, "CONSOLE", parsedBanDuration)));
|
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.ban.successfulBanMessageTemp")), args[0], scope, reason, "CONSOLE", parsedBanDuration)));
|
||||||
String bcMess = plugin.translations.getString("command.ban.banPublicAnnouncementTemp");
|
String bcMess = plugin.translations.getString("command.ban.banPublicAnnouncementTemp");
|
||||||
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveBanMessagePlaceholders(bcMess, args[0], scope, reason, "CONSOLE", parsedBanDuration)));
|
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveBanMessagePlaceholders(bcMess, args[0], scope, reason, "CONSOLE", parsedBanDuration)));
|
||||||
|
|
@ -307,27 +309,6 @@ public class Ban implements CommandExecutor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createPlayerKickJob(PlayerBan b, String scope){
|
|
||||||
final Gson gson = new Gson();
|
|
||||||
try {
|
|
||||||
Connection conn = plugin.db.getConnection();
|
|
||||||
|
|
||||||
JsonElement banObject = gson.toJsonTree(b);
|
|
||||||
JsonObject wrapper = new JsonObject();
|
|
||||||
wrapper.addProperty("ban_type", "player");
|
|
||||||
wrapper.addProperty("ban_scope", scope);
|
|
||||||
wrapper.add("ban_data", banObject);
|
|
||||||
String json = gson.toJson(wrapper);
|
|
||||||
|
|
||||||
PreparedStatement ps = conn.prepareStatement("SELECT pg_notify('ban_jobs', ?)");
|
|
||||||
ps.setString(1, json);
|
|
||||||
ps.execute();
|
|
||||||
}
|
|
||||||
catch (SQLException e) {
|
|
||||||
plugin.getLogger().severe(e.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private String resolveBanMessagePlaceholders(String s, String player, String scope, String reason, String operator) {
|
private String resolveBanMessagePlaceholders(String s, String player, String scope, String reason, String operator) {
|
||||||
return s.replace("{player}", player)
|
return s.replace("{player}", player)
|
||||||
.replace("{scope}", scope)
|
.replace("{scope}", scope)
|
||||||
|
|
|
||||||
|
|
@ -18,10 +18,6 @@ import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import com.google.gson.JsonElement;
|
|
||||||
import com.google.gson.JsonObject;
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
|
|
||||||
public class BanIP implements CommandExecutor {
|
public class BanIP implements CommandExecutor {
|
||||||
|
|
||||||
BanHammer plugin;
|
BanHammer plugin;
|
||||||
|
|
@ -123,7 +119,10 @@ public class BanIP implements CommandExecutor {
|
||||||
|
|
||||||
if(b != null) {
|
if(b != null) {
|
||||||
if(banEndDate == null) {
|
if(banEndDate == null) {
|
||||||
createIPKickJob(b, scope);
|
for(Player target : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (target.getAddress().getAddress().equals(addr))
|
||||||
|
if(Objects.equals(plugin.config.getString("serverID"), scope) || Objects.equals(scope, "*")) target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanPerm"), b)));
|
||||||
|
}
|
||||||
p.sendMessage(TextUtils.colorString(resolveIpBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.banip.successfulBanMessagePerm")), args[0], scope, reason, p.getName())));
|
p.sendMessage(TextUtils.colorString(resolveIpBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.banip.successfulBanMessagePerm")), args[0], scope, reason, p.getName())));
|
||||||
String bcMess = plugin.translations.getString("command.banip.banPublicAnnouncementPerm");
|
String bcMess = plugin.translations.getString("command.banip.banPublicAnnouncementPerm");
|
||||||
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveIpBanMessagePlaceholders(bcMess, args[0], scope, reason, p.getName())));
|
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveIpBanMessagePlaceholders(bcMess, args[0], scope, reason, p.getName())));
|
||||||
|
|
@ -139,7 +138,11 @@ public class BanIP implements CommandExecutor {
|
||||||
long timeLeftSeconds = TimeUnit.MILLISECONDS.toSeconds(timeLeft);
|
long timeLeftSeconds = TimeUnit.MILLISECONDS.toSeconds(timeLeft);
|
||||||
String parsedBanDuration = TextUtils.parsePolishDate(timeLeftDays, timeLeftHours, timeLeftMinutes, timeLeftSeconds);
|
String parsedBanDuration = TextUtils.parsePolishDate(timeLeftDays, timeLeftHours, timeLeftMinutes, timeLeftSeconds);
|
||||||
|
|
||||||
createIPKickJob(b, scope);
|
for(Player target : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (target.getAddress().getAddress().equals(addr))
|
||||||
|
if (Objects.equals(plugin.config.getString("serverID"), scope) || Objects.equals(scope, "*"))
|
||||||
|
target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanTemp"), b)));
|
||||||
|
}
|
||||||
p.sendMessage(TextUtils.colorString(resolveIpBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.banip.successfulBanMessageTemp")), args[0], scope, reason, p.getName(), parsedBanDuration)));
|
p.sendMessage(TextUtils.colorString(resolveIpBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.banip.successfulBanMessageTemp")), args[0], scope, reason, p.getName(), parsedBanDuration)));
|
||||||
String bcMess = plugin.translations.getString("command.banip.banPublicAnnouncementTemp");
|
String bcMess = plugin.translations.getString("command.banip.banPublicAnnouncementTemp");
|
||||||
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveIpBanMessagePlaceholders(bcMess, args[0], scope, reason, p.getName(), parsedBanDuration)));
|
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveIpBanMessagePlaceholders(bcMess, args[0], scope, reason, p.getName(), parsedBanDuration)));
|
||||||
|
|
@ -238,7 +241,10 @@ public class BanIP implements CommandExecutor {
|
||||||
|
|
||||||
if(b != null) {
|
if(b != null) {
|
||||||
if(banEndDate == null) {
|
if(banEndDate == null) {
|
||||||
createIPKickJob(b, scope);
|
for(Player target : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (target.getAddress().getAddress().equals(addr))
|
||||||
|
if(Objects.equals(plugin.config.getString("serverID"), scope) || Objects.equals(scope, "*")) target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanPerm"), b)));
|
||||||
|
}
|
||||||
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveIpBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.banip.successfulBanMessagePerm")), args[0], scope, reason, "CONSOLE")));
|
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveIpBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.banip.successfulBanMessagePerm")), args[0], scope, reason, "CONSOLE")));
|
||||||
String bcMess = plugin.translations.getString("command.banip.banPublicAnnouncementPerm");
|
String bcMess = plugin.translations.getString("command.banip.banPublicAnnouncementPerm");
|
||||||
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveIpBanMessagePlaceholders(bcMess, args[0], scope, reason, "CONSOLE")));
|
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveIpBanMessagePlaceholders(bcMess, args[0], scope, reason, "CONSOLE")));
|
||||||
|
|
@ -254,7 +260,11 @@ public class BanIP implements CommandExecutor {
|
||||||
long timeLeftSeconds = TimeUnit.MILLISECONDS.toSeconds(timeLeft);
|
long timeLeftSeconds = TimeUnit.MILLISECONDS.toSeconds(timeLeft);
|
||||||
String parsedBanDuration = TextUtils.parsePolishDate(timeLeftDays, timeLeftHours, timeLeftMinutes, timeLeftSeconds);
|
String parsedBanDuration = TextUtils.parsePolishDate(timeLeftDays, timeLeftHours, timeLeftMinutes, timeLeftSeconds);
|
||||||
|
|
||||||
createIPKickJob(b, scope);
|
for(Player target : Bukkit.getOnlinePlayers()) {
|
||||||
|
if (target.getAddress().getAddress().equals(addr))
|
||||||
|
if (Objects.equals(plugin.config.getString("serverID"), scope) || Objects.equals(scope, "*"))
|
||||||
|
target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanTemp"), b)));
|
||||||
|
}
|
||||||
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveIpBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.banip.successfulBanMessageTemp")), args[0], scope, reason, "CONSOLE", parsedBanDuration)));
|
Bukkit.getConsoleSender().sendMessage(TextUtils.colorString(resolveIpBanMessagePlaceholders(addPrefix(plugin.translations.getString("command.banip.successfulBanMessageTemp")), args[0], scope, reason, "CONSOLE", parsedBanDuration)));
|
||||||
String bcMess = plugin.translations.getString("command.banip.banPublicAnnouncementTemp");
|
String bcMess = plugin.translations.getString("command.banip.banPublicAnnouncementTemp");
|
||||||
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveIpBanMessagePlaceholders(bcMess, args[0], scope, reason, "CONSOLE", parsedBanDuration)));
|
if(bcMess!=null) Bukkit.broadcast(TextUtils.colorString(resolveIpBanMessagePlaceholders(bcMess, args[0], scope, reason, "CONSOLE", parsedBanDuration)));
|
||||||
|
|
@ -315,27 +325,6 @@ public class BanIP implements CommandExecutor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createIPKickJob(IPBan b, String scope){
|
|
||||||
final Gson gson = new Gson();
|
|
||||||
try {
|
|
||||||
Connection conn = plugin.db.getConnection();
|
|
||||||
|
|
||||||
JsonElement banObject = gson.toJsonTree(b);
|
|
||||||
JsonObject wrapper = new JsonObject();
|
|
||||||
wrapper.addProperty("ban_type", "ip");
|
|
||||||
wrapper.addProperty("ban_scope", scope);
|
|
||||||
wrapper.add("ban_data", banObject);
|
|
||||||
String json = gson.toJson(wrapper);
|
|
||||||
|
|
||||||
PreparedStatement ps = conn.prepareStatement("SELECT pg_notify('ban_jobs', ?)");
|
|
||||||
ps.setString(1, json);
|
|
||||||
ps.execute();
|
|
||||||
}
|
|
||||||
catch (SQLException e) {
|
|
||||||
plugin.getLogger().severe(e.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private String resolveIpBanMessagePlaceholders(String s, String ipAddr, String scope, String reason, String operator) {
|
private String resolveIpBanMessagePlaceholders(String s, String ipAddr, String scope, String reason, String operator) {
|
||||||
return s.replace("{ipAddr}", ipAddr)
|
return s.replace("{ipAddr}", ipAddr)
|
||||||
.replace("{scope}", scope)
|
.replace("{scope}", scope)
|
||||||
|
|
|
||||||
|
|
@ -17,24 +17,4 @@ public class IPBan {
|
||||||
this.operator = operator;
|
this.operator = operator;
|
||||||
this.banId = banId;
|
this.banId = banId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InetAddress getIp() {
|
|
||||||
return ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReason() {
|
|
||||||
return reason;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTimeLeft() {
|
|
||||||
return timeLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperator() {
|
|
||||||
return operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID getBanId() {
|
|
||||||
return banId;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package net.kuraczyk.banhammer.utils;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
|
@ -23,28 +22,4 @@ public class PlayerBan {
|
||||||
this.banId = banId;
|
this.banId = banId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPlayerName() {
|
|
||||||
return playerName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID getPlayerUUID() {
|
|
||||||
return uuid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getReason() {
|
|
||||||
return reason;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTimeLeft() {
|
|
||||||
return timeLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOperator() {
|
|
||||||
return operator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public UUID getBanId() {
|
|
||||||
return banId;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
package net.kuraczyk.banhammer.workers;
|
|
||||||
|
|
||||||
import net.kuraczyk.banhammer.BanHammer;
|
|
||||||
import net.kuraczyk.banhammer.utils.IPBan;
|
|
||||||
import net.kuraczyk.banhammer.utils.PlayerBan;
|
|
||||||
import net.kuraczyk.banhammer.utils.TextUtils;
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
import org.postgresql.PGConnection;
|
|
||||||
import org.postgresql.PGNotification;
|
|
||||||
|
|
||||||
import javax.swing.plaf.nimbus.State;
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Statement;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
import com.google.gson.*;
|
|
||||||
|
|
||||||
public class BanJobWorker {
|
|
||||||
|
|
||||||
BanHammer plugin;
|
|
||||||
|
|
||||||
public BanJobWorker(BanHammer p) {
|
|
||||||
plugin=p;
|
|
||||||
banJobListener();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void banJobListener() {
|
|
||||||
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, () -> {
|
|
||||||
try {
|
|
||||||
Connection conn = plugin.db.getConnection();
|
|
||||||
PGConnection pgConn = conn.unwrap(PGConnection.class);
|
|
||||||
|
|
||||||
try (Statement stmt = conn.createStatement()) {
|
|
||||||
stmt.execute("LISTEN ban_jobs");
|
|
||||||
}
|
|
||||||
|
|
||||||
while (!conn.isClosed()){
|
|
||||||
try (Statement ping = conn.createStatement()) {
|
|
||||||
ping.execute("SELECT 1");
|
|
||||||
}
|
|
||||||
|
|
||||||
PGNotification[] notifications = pgConn.getNotifications();
|
|
||||||
|
|
||||||
if(notifications!=null){
|
|
||||||
for(PGNotification notif : notifications){
|
|
||||||
JsonObject unwrappedJson = JsonParser.parseString(notif.getParameter()).getAsJsonObject();
|
|
||||||
String banType = unwrappedJson.get("ban_type").getAsString();
|
|
||||||
String banScope = unwrappedJson.get("ban_scope").getAsString();
|
|
||||||
JsonElement banData = unwrappedJson.get("ban_data");
|
|
||||||
|
|
||||||
if(banScope.equals("*") || banScope.equals(plugin.config.getString("serverID"))){
|
|
||||||
if(banJobExecutor(banType, banData)) plugin.getLogger().info(String.format("[BanHammer] Job %d has been executed successfully!", notif.getPID()));
|
|
||||||
else plugin.getLogger().severe("[BanHammer] Error occured while executing ban job!");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
plugin.getLogger().severe(e.toString());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean banJobExecutor(String type, JsonElement banData) {
|
|
||||||
final Gson gson = new Gson();
|
|
||||||
switch(type){
|
|
||||||
case "player" -> {
|
|
||||||
PlayerBan ban = gson.fromJson(banData, PlayerBan.class);
|
|
||||||
handlePlayerBanJob(ban);
|
|
||||||
}
|
|
||||||
case "ip" -> {
|
|
||||||
IPBan ban = gson.fromJson(banData, IPBan.class);
|
|
||||||
handleIPBanJob(ban);
|
|
||||||
}
|
|
||||||
default -> {
|
|
||||||
plugin.getLogger().severe("[BanHammer] (BanJobExecutorException) Unexpected ban type provided.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean handlePlayerBanJob(PlayerBan b) {
|
|
||||||
Player target = Bukkit.getPlayer(b.getPlayerName());
|
|
||||||
if(target!=null)
|
|
||||||
if(target.isOnline()) {
|
|
||||||
if(b.getTimeLeft()!=null){
|
|
||||||
plugin.getServer().getScheduler().runTask(plugin, () -> {
|
|
||||||
target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanTemp"), b)));
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
plugin.getServer().getScheduler().runTask(plugin, () -> {
|
|
||||||
target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanPerm"), b)));
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean handleIPBanJob(IPBan b) {
|
|
||||||
for(Player target : Bukkit.getOnlinePlayers()) {
|
|
||||||
if (target.getAddress().getAddress().equals(b.getIp())) {
|
|
||||||
if (b.getTimeLeft() != null) {
|
|
||||||
plugin.getServer().getScheduler().runTask(plugin, () -> {
|
|
||||||
target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanTemp"), b)));
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
plugin.getServer().getScheduler().runTask(plugin, () -> {
|
|
||||||
target.kick(TextUtils.colorString(TextUtils.resolvePlaceholders(plugin.translations.getString("banKickMessage.playerBanPerm"), b)));
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue