package tv.mineinthebox.essentials.events.chat; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerEditBookEvent; import org.bukkit.inventory.meta.BookMeta; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.events.customevents.PlayerOpenBookEvent; import tv.mineinthebox.essentials.interfaces.EventTemplate; import tv.mineinthebox.essentials.interfaces.XOfflinePlayer; import tv.mineinthebox.essentials.interfaces.XPlayer; @SuppressWarnings("deprecation") public class AntiAddvertiseEvent extends EventTemplate implements Listener { public AntiAddvertiseEvent(xEssentials pl) { super(pl, "Anti Addvertise"); } @EventHandler public void onAntiAddvertise(PlayerChatEvent e) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); e.setMessage(ipcheck(e.getMessage(), xp)); } @EventHandler public void onAntiAddvertiseOnBook(PlayerOpenBookEvent e) { if(e.hasBookContents()) { if(e.getBookItem().getType() == Material.WRITTEN_BOOK) { if(e.getBookContents().hasAuthor()) { if(pl.getManagers().getPlayerManager().isEssentialsPlayer(e.getBookContents().getAuthor())) { XOfflinePlayer off = pl.getManagers().getPlayerManager().getOfflinePlayer(e.getBookContents().getAuthor()); for(String bookPage : e.getBookContents().getPages()) { if(ipcheck(bookPage, off)) { sendMessage(e.getPlayer(), ChatColor.RED + "you cannot open this book, this book contains addvertises from " + off.getName()); e.getPlayer().setItemInHand(null); e.setCancelled(true); break; } } } } } } } @EventHandler public void createBook(PlayerEditBookEvent e) { if(!e.isSigning()) { if(!e.getPreviousBookMeta().hasAuthor()) { BookMeta meta = e.getNewBookMeta(); meta.setAuthor(e.getPlayer().getName()); e.setNewBookMeta(meta); e.setSigning(true); sendMessage(e.getPlayer(), ChatColor.GREEN + "book automatic signed, by anti addvertise system!"); } } } @EventHandler public void onPreprocess(PlayerCommandPreprocessEvent e) { if(e.getMessage().startsWith("/")) { e.setMessage(ipcheck(e.getMessage(), pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()))); } } public String ipcheck(String a, XPlayer xp) { String pattern = "\\d{1,3}(?:\\.\\d{1,3}){3}(?::\\d{1,5})?"; Pattern compiledPattern = Pattern.compile(pattern); Matcher matcher = compiledPattern.matcher(a); while (matcher.find()) { xp.setPermBanned("You are banned for addvertising.", "CONSOLE"); xp.getBukkitPlayer().kickPlayer("You are banned for addvertising."); return a.toString().replace(matcher.group(), "***.***.***:****"); } if(a.toLowerCase().contains("no-ip.org")) { xp.setPermBanned("You are banned for addvertising.", "CONSOLE"); xp.getBukkitPlayer().kickPlayer("You are banned for addvertising."); return a.toString().toLowerCase().replace("no-ip.org", "*****.***"); } else if(a.toLowerCase().contains("kicks-ass.net")) { xp.setPermBanned("You are banned for addvertising.", "CONSOLE"); xp.getBukkitPlayer().kickPlayer("You are banned for addvertising."); return a.toString().toLowerCase().replace("kicks-ass.net", "*********.***"); } String url = "mc\\.([a-z0-9])+\\.(.*?)"; Pattern compile = Pattern.compile(url.toLowerCase()); Matcher match = compile.matcher(a.toLowerCase()); while(match.find()) { //log.info(match.group()); xp.setPermBanned("You are banned for addvertising.", "CONSOLE"); xp.getBukkitPlayer().kickPlayer("You are banned for addvertising."); return a.toString().toLowerCase().replace(match.group().toString(), "mc.*****.***"); } String nfoServers = "(.*?)\\.nfoservers\\.com"; Pattern compileNfo = Pattern.compile(nfoServers.toLowerCase()); Matcher matchNfo = compileNfo.matcher(a.toLowerCase()); while(matchNfo.find()) { //log.info(match.group()); xp.setPermBanned("You are banned for addvertising.", "CONSOLE"); xp.getBukkitPlayer().kickPlayer("You are banned for addvertising."); return a.toString().toLowerCase().replace(matchNfo.group().toString(), "***.*****.***"); } return a; } public boolean ipcheck(String a, XOfflinePlayer off) { String pattern = "\\d{1,3}(?:\\.\\d{1,3}){3}(?::\\d{1,5})?"; Pattern compiledPattern = Pattern.compile(pattern); Matcher matcher = compiledPattern.matcher(a); while (matcher.find()) { off.setPermBanned("You are banned for addvertising.", "CONSOLE"); if(off.getBukkitPlayer() instanceof Player) { off.getBukkitPlayer().kickPlayer("You are banned for addvertising."); } return true; } if(a.toLowerCase().contains("no-ip.org")) { off.setPermBanned("You are banned for addvertising.", "CONSOLE"); if(off.getBukkitPlayer() instanceof Player) { off.getBukkitPlayer().kickPlayer("You are banned for addvertising."); } return true; } else if(a.toLowerCase().contains("kicks-ass.net")) { off.setPermBanned("You are banned for addvertising.", "CONSOLE"); if(off.getBukkitPlayer() instanceof Player) { off.getBukkitPlayer().kickPlayer("You are banned for addvertising."); } return true; } String url = "mc\\.([a-z0-9])+\\.(.*?)"; Pattern compile = Pattern.compile(url.toLowerCase()); Matcher match = compile.matcher(a.toLowerCase()); while(match.find()) { //log.info(match.group()); off.setPermBanned("You are banned for addvertising.", "CONSOLE"); if(off.getBukkitPlayer() instanceof Player) { off.getBukkitPlayer().kickPlayer("You are banned for addvertising."); } return true; } String nfoServers = "(.*?)\\.nfoservers\\.com"; Pattern compileNfo = Pattern.compile(nfoServers.toLowerCase()); Matcher matchNfo = compileNfo.matcher(a.toLowerCase()); while(matchNfo.find()) { //log.info(match.group()); off.setPermBanned("You are banned for addvertising.", "CONSOLE"); if(off.getBukkitPlayer() instanceof Player) { off.getBukkitPlayer().kickPlayer("You are banned for addvertising."); } return true; } return false; } }