@EventHandler(priority = EventPriority.HIGHEST) public void banCheck(final AsyncPlayerPreLoginEvent event) { if (plugin.getConfiguration().isCheckOnJoin()) { // Check for new bans/mutes if (!plugin.getIpBanStorage().isBanned(event.getAddress())) { try { IpBanData ban = plugin.getIpBanStorage().retrieveBan(IPUtils.toLong(event.getAddress())); if (ban != null) { plugin.getIpBanStorage().addBan(ban); } } catch (SQLException e) { PluginLogger.warn(e); } } if (!plugin.getPlayerBanStorage().isBanned(event.getUniqueId())) { try { PlayerBanData ban = plugin.getPlayerBanStorage().retrieveBan(event.getUniqueId()); if (ban != null) { plugin.getPlayerBanStorage().addBan(ban); } } catch (SQLException e) { PluginLogger.warn(e); } } if (!plugin.getPlayerMuteStorage().isMuted(event.getUniqueId())) { try { PlayerMuteData mute = plugin.getPlayerMuteStorage().retrieveMute(event.getUniqueId()); if (mute != null) { plugin.getPlayerMuteStorage().addMute(mute); } } catch (SQLException e) { PluginLogger.warn(e); } } } if (plugin.getIpRangeBanStorage().isBanned(event.getAddress())) { IpRangeBanData data = plugin.getIpRangeBanStorage().getBan(event.getAddress()); if (data.hasExpired()) { try { plugin.getIpRangeBanStorage().unban(data, plugin.getPlayerStorage().getConsole()); } catch (SQLException e) { PluginLogger.warn(e); } return; } Message message; if (data.getExpires() == 0) { message = Message.get("baniprange.ip.disallowed"); } else { message = Message.get("tempbaniprange.ip.disallowed"); message.set("expires", DateUtils.getDifferenceFormat(data.getExpires())); } message.set("ip", event.getAddress().toString()); message.set("reason", data.getReason()); message.set("actor", data.getActor().getName()); event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_BANNED); event.setKickMessage(message.toString()); return; } if (plugin.getIpBanStorage().isBanned(event.getAddress())) { IpBanData data = plugin.getIpBanStorage().getBan(event.getAddress()); if (data.hasExpired()) { try { plugin.getIpBanStorage().unban(data, plugin.getPlayerStorage().getConsole()); } catch (SQLException e) { PluginLogger.warn(e); } return; } Message message; if (data.getExpires() == 0) { message = Message.get("banip.ip.disallowed"); } else { message = Message.get("tempbanip.ip.disallowed"); message.set("expires", DateUtils.getDifferenceFormat(data.getExpires())); } message.set("ip", event.getAddress().toString()); message.set("reason", data.getReason()); message.set("actor", data.getActor().getName()); event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_BANNED); event.setKickMessage(message.toString()); handleJoinDeny(event.getAddress().toString(), data.getReason()); return; } PlayerBanData data = plugin.getPlayerBanStorage().getBan(event.getUniqueId()); if (data != null && data.hasExpired()) { try { plugin.getPlayerBanStorage().unban(data, plugin.getPlayerStorage().getConsole()); } catch (SQLException e) { PluginLogger.warn(e); } return; } if (data == null) { return; } Message message; if (data.getExpires() == 0) { message = Message.get("ban.player.disallowed"); } else { message = Message.get("tempban.player.disallowed"); message.set("expires", DateUtils.getDifferenceFormat(data.getExpires())); } message.set("player", data.getPlayer().getName()); message.set("reason", data.getReason()); message.set("actor", data.getActor().getName()); event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_BANNED); event.setKickMessage(message.toString()); handleJoinDeny(data.getPlayer(), data.getReason()); }
@Override public boolean onCommand( final CommandSender sender, Command command, String commandName, String[] args) { if (args.length < 1) { return false; } if (CommandUtils.isValidNameDelimiter(args[0])) { CommandUtils.handleMultipleNames(sender, commandName, args); return true; } final String ipStr = args[0]; final boolean isName = !InetAddresses.isInetAddress(ipStr); if (isName && ipStr.length() > 16) { Message message = Message.get("sender.error.invalidIp"); message.set("ip", ipStr); sender.sendMessage(message.toString()); return true; } final String reason = args.length > 1 ? CommandUtils.getReason(1, args).getMessage() : ""; plugin .getServer() .getScheduler() .runTaskAsynchronously( plugin, new Runnable() { @Override public void run() { final Long ip = CommandUtils.getIp(ipStr); if (ip == null) { sender.sendMessage( Message.get("sender.error.notFound").set("player", ipStr).toString()); return; } if (!plugin.getIpMuteStorage().isMuted(ip)) { Message message = Message.get("unmuteip.error.noExists"); message.set("ip", ipStr); sender.sendMessage(message.toString()); return; } IpMuteData mute = plugin.getIpMuteStorage().getMute(ip); final PlayerData actor = CommandUtils.getActor(sender); if (actor == null) return; boolean unmuted; try { unmuted = plugin.getIpMuteStorage().unmute(mute, actor, reason); } catch (SQLException e) { sender.sendMessage(Message.get("sender.error.exception").toString()); e.printStackTrace(); return; } if (!unmuted) { return; } Message message = Message.get("unmuteip.notify"); message.set("ip", ipStr).set("actor", actor.getName()).set("reason", reason); if (!sender.hasPermission("bm.notify.unmuteip")) { message.sendTo(sender); } CommandUtils.broadcast(message.toString(), "bm.notify.unmuteip"); } }); return true; }