package launchserver.command.ip; import launcher.helper.LogHelper; import launchserver.LaunchServer; import launchserver.auth.limiter.AuthLimiterIPConfig; import launchserver.command.Command; import sun.net.util.IPAddressUtil; import java.util.Locale; public class IPBlockCommand extends Command { public IPBlockCommand(LaunchServer server) { super(server); } @Override public String getArgsDescription() { return "<type> <ip>"; } @Override public String getUsageDescription() { return "Add/Remove IP to Block List"; } @Override public void invoke(String... args) throws Throwable { verifyArgs(args, 2); String type = args[0].toLowerCase(Locale.ROOT); String getIP = args[1]; if (type.isEmpty()) { LogHelper.error("Type cannot be empty!"); } if (getIP.isEmpty()) { LogHelper.error("IP address cannot be empty!"); return; } if (!IPAddressUtil.isIPv4LiteralAddress(getIP) && !IPAddressUtil.isIPv6LiteralAddress(getIP)) { LogHelper.error("This is not an IP address!"); return; } if (type.equals("add")) { AuthLimiterIPConfig.Instance.addBlockIp(getIP).saveIPConfig(); LogHelper.info("IP address add to Block List!"); return; } if (type.equals("del")) { AuthLimiterIPConfig.Instance.delBlockIp(getIP).saveIPConfig(); LogHelper.info("IP address remove to Block List!"); return; } LogHelper.error("This is type is unknown!"); } }