package org.royaldev.royalbot.commands.impl; import org.pircbotx.hooks.types.GenericMessageEvent; import org.royaldev.royalbot.BotUtils; import org.royaldev.royalbot.commands.CallInfo; import org.royaldev.royalbot.commands.NoticeableCommand; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.net.UnknownHostException; public class IsUpCommand extends NoticeableCommand { @Override public void onCommand(GenericMessageEvent event, CallInfo callInfo, String[] args) { if (args.length < 1) { notice(event, "Not enough arguments."); return; } final int port; try { port = (args.length > 1) ? Integer.parseInt(args[1]) : 80; } catch (NumberFormatException ex) { notice(event, "The port was not a number."); return; } final InetAddress ia; final boolean isReachable; try { ia = InetAddress.getByName(args[0]); Socket s = new Socket(); s.connect(new InetSocketAddress(ia, port), 2500); s.close(); isReachable = s.isConnected(); } catch (UnknownHostException e) { notice(event, "Unknown host."); return; } catch (IOException e) { notice(event, BotUtils.formatException(e)); return; } event.respond(ia.getHostName() + " is " + ((isReachable) ? "" : "not ") + "up."); } @Override public String getName() { return "isup"; } @Override public String getUsage() { return "<command> [host]"; } @Override public String getDescription() { return "Checks if a host is up"; } @Override public String[] getAliases() { return new String[0]; } @Override public CommandType getCommandType() { return CommandType.BOTH; } @Override public AuthLevel getAuthLevel() { return AuthLevel.PUBLIC; } }