From 5e1e88347a085a582d2d2ddb20cab2541aec8fdb Mon Sep 17 00:00:00 2001 From: Process <116966709+processofficial@users.noreply.github.com> Date: Sat, 6 Jul 2024 22:57:46 +0200 Subject: [PATCH 1/5] =?UTF-8?q?modification=20du=20temps=20que=20le=20titr?= =?UTF-8?q?e=20et=20le=20sous=20titre=20appara=C3=AEt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/communaywen/core/staff/freeze/FreezeCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/communaywen/core/staff/freeze/FreezeCommand.java b/src/main/java/fr/communaywen/core/staff/freeze/FreezeCommand.java index 28d1edbb..797c1ca1 100644 --- a/src/main/java/fr/communaywen/core/staff/freeze/FreezeCommand.java +++ b/src/main/java/fr/communaywen/core/staff/freeze/FreezeCommand.java @@ -52,7 +52,7 @@ public boolean onCommand(CommandSender sender, Command command, String label, St } plugin.getFrozenPlayers().add(target.getUniqueId()); - target.sendTitle(ChatColor.RED + "Vous êtes freeze !", ChatColor.YELLOW + "Regardez votre chat", 10, 70, 20); + target.sendTitle(ChatColor.RED + "Vous êtes freeze !", ChatColor.YELLOW + "Regardez votre chat", 10, 1000, 20); target.sendMessage(ChatColor.RED + "Vous êtes Freeze, si vous déconnectez, vous serez banni !"); player.sendMessage(ChatColor.GREEN + target.getName() + " a bien été freeze."); return true; From de2236f51c64449dae42a8ed74454143dd9767dd Mon Sep 17 00:00:00 2001 From: Process <116966709+processofficial@users.noreply.github.com> Date: Sat, 6 Jul 2024 23:01:36 +0200 Subject: [PATCH 2/5] Mise a jour du message de ban MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tester si ça rend bien --- .../java/fr/communaywen/core/staff/freeze/FreezeListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/communaywen/core/staff/freeze/FreezeListener.java b/src/main/java/fr/communaywen/core/staff/freeze/FreezeListener.java index 5a7d79ad..a325957f 100644 --- a/src/main/java/fr/communaywen/core/staff/freeze/FreezeListener.java +++ b/src/main/java/fr/communaywen/core/staff/freeze/FreezeListener.java @@ -37,7 +37,7 @@ public void onPlayerQuit(PlayerQuitEvent event) { if (plugin.getFrozenPlayers().contains(playerUUID)) { int banDurationDays = plugin.getBanDuration(); Date banDuration = new Date(System.currentTimeMillis() + TimeUnit.DAYS.toMillis(banDurationDays)); - Bukkit.getBanList(BanList.Type.NAME).addBan(player.getName(), "Vous avez été banni pour déconnexion en étant freeze pandant ", banDuration, "Anti Déco Freeze"); + Bukkit.getBanList(BanList.Type.NAME).addBan(player.getName(), "Déconnexion en étant freeze !", banDuration, "Anti Déco Freeze"); plugin.getFrozenPlayers().remove(playerUUID); } From 080b170a4f1be973f23a1001fc08eb8e8211e3ed Mon Sep 17 00:00:00 2001 From: processofficial <116966709+processofficial@users.noreply.github.com> Date: Sun, 7 Jul 2024 14:49:46 +0200 Subject: [PATCH 3/5] Anti Vpn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit J'ai fait un anti vpn. J'utilise l'api ip-api qui est une superbe api très fiable pour savoir si une ip est vpn ou non. Ptet ajouter une commande pour whitelist une ip ou un pseudo au futur ? --- .../fr/communaywen/core/AywenCraftPlugin.java | 1 + .../core/listeners/VpnListener.java | 66 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/main/java/fr/communaywen/core/listeners/VpnListener.java diff --git a/src/main/java/fr/communaywen/core/AywenCraftPlugin.java b/src/main/java/fr/communaywen/core/AywenCraftPlugin.java index d58599d4..0d8f21a0 100644 --- a/src/main/java/fr/communaywen/core/AywenCraftPlugin.java +++ b/src/main/java/fr/communaywen/core/AywenCraftPlugin.java @@ -137,6 +137,7 @@ public void onEnable() { getServer().getPluginManager().registerEvents(new ChatListener(discordWebhook), this); getServer().getPluginManager().registerEvents(new FreezeListener(this), this); getServer().getPluginManager().registerEvents(new WelcomeMessage(loadWelcomeMessageConfig()), this); + getServer().getPluginManager().registerEvents(new VpnListener(this), this); /* --------- */ saveDefaultConfig(); diff --git a/src/main/java/fr/communaywen/core/listeners/VpnListener.java b/src/main/java/fr/communaywen/core/listeners/VpnListener.java new file mode 100644 index 00000000..86c2c2e1 --- /dev/null +++ b/src/main/java/fr/communaywen/core/listeners/VpnListener.java @@ -0,0 +1,66 @@ +package fr.communaywen.core.listeners; + +import fr.communaywen.core.AywenCraftPlugin; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.scheduler.BukkitRunnable; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +public class VpnListener implements Listener { + + private final AywenCraftPlugin plugin; + + public VpnListener(AywenCraftPlugin plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onPlayerLogin(PlayerLoginEvent event) { + String ip = event.getAddress().getHostAddress(); + new BukkitRunnable() { + @Override + public void run() { + try { + URL url = new URL("http://ip-api.com/json/" + ip + "?fields=proxy"); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("GET"); + + BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String inputLine; + StringBuilder content = new StringBuilder(); + while ((inputLine = in.readLine()) != null) { + content.append(inputLine); + } + + in.close(); + connection.disconnect(); + + String response = content.toString(); + if (response.contains("\"proxy\":true")) { + Bukkit.getScheduler().runTask(plugin, () -> { + event.disallow(PlayerLoginEvent.Result.KICK_OTHER, + "§l§cOpenMc - Sécuritée\n" + + "§l§eConnexion Non Permise !§r\n" + + "§6Vous essayez actuellement de vous connecter au serveur\n" + + "§6avec un vpn ou un proxy.\n" + + "§3Merci de le désactiver et de réessayer\n" + + "§cSi vous pensez qu'il s'agit d'une erreur, vous pouvez\n" + + "§cavoir de l'assistance sur discord.gg/aywen"); + Bukkit.broadcast(ChatColor.YELLOW + event.getPlayer().getName() + " a essayé de se connecter mais il avait un vpn.", + "aywencraft.antivpn.notification"); + }); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }.runTaskAsynchronously(plugin); + } +} \ No newline at end of file From 132418dafe89e3fc52b8caaca52dad72cf843671 Mon Sep 17 00:00:00 2001 From: processofficial <116966709+processofficial@users.noreply.github.com> Date: Sun, 7 Jul 2024 15:34:09 +0200 Subject: [PATCH 4/5] Cmd pour bypass l'anti vpn --- .../java/fr/communaywen/core/listeners/VpnListener.java | 9 +++++++++ src/main/resources/plugin.yml | 7 ++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/fr/communaywen/core/listeners/VpnListener.java b/src/main/java/fr/communaywen/core/listeners/VpnListener.java index 86c2c2e1..4680715c 100644 --- a/src/main/java/fr/communaywen/core/listeners/VpnListener.java +++ b/src/main/java/fr/communaywen/core/listeners/VpnListener.java @@ -3,6 +3,7 @@ import fr.communaywen.core.AywenCraftPlugin; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerLoginEvent; @@ -23,6 +24,14 @@ public VpnListener(AywenCraftPlugin plugin) { @EventHandler public void onPlayerLogin(PlayerLoginEvent event) { + + Player player = event.getPlayer(); + + if (player.hasPermission("aywencraft.antivpn.bypass")) { + return; + } + + String ip = event.getAddress().getHostAddress(); new BukkitRunnable() { @Override diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f2de1f44..6eb1be37 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -83,4 +83,9 @@ permissions: openmc.staff.freeze: description: 'Ensemble de commandes pour freeze un joueur' default: false - + aywencraft.antivpn.notification: + description: 'Permission to receive VPN connection notifications' + default: op + aywencraft.antivpn.bypass: + description: 'Permission to bypass VPN check' + default: false \ No newline at end of file From 090233ee772181b70ce97c05a92ab7d59fec3569 Mon Sep 17 00:00:00 2001 From: processofficial <116966709+processofficial@users.noreply.github.com> Date: Sun, 7 Jul 2024 15:42:38 +0200 Subject: [PATCH 5/5] Perm pour bypass --- src/main/java/fr/communaywen/core/listeners/VpnListener.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/fr/communaywen/core/listeners/VpnListener.java b/src/main/java/fr/communaywen/core/listeners/VpnListener.java index 4680715c..a29a7a20 100644 --- a/src/main/java/fr/communaywen/core/listeners/VpnListener.java +++ b/src/main/java/fr/communaywen/core/listeners/VpnListener.java @@ -30,8 +30,7 @@ public void onPlayerLogin(PlayerLoginEvent event) { if (player.hasPermission("aywencraft.antivpn.bypass")) { return; } - - + String ip = event.getAddress().getHostAddress(); new BukkitRunnable() { @Override