package net.romvoid.crashbot.commands; import java.awt.*; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.util.concurrent.TimeUnit; import com.jagrosh.jdautilities.command.Command; import com.jagrosh.jdautilities.command.CommandEvent; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.MessageChannel; import net.romvoid.crashbot.Bot; import br.com.azalim.mcserverping.MCPing; import br.com.azalim.mcserverping.MCPingOptions; import br.com.azalim.mcserverping.MCPingResponse; import net.romvoid.crashbot.utilities.EmbedUtil; public class StatusCommand extends Command { public StatusCommand() { this.name = "status"; this.help = "Returns the status of services MFND.ru"; this.botPermissions = new Permission[]{Permission.MESSAGE_EMBED_LINKS}; this.guildOnly = false; } @Override protected void execute(CommandEvent event) { String google = "https://www.google.com/"; String mfnd = "https://www.mfnd.ru/"; Bot.LOG.info(event.getAuthor().getName() + " invoked command " + this.name); MessageChannel channel = event.getChannel(); EmbedBuilder embed = EmbedUtil.embed("Status MFND.ru services", ""); if (checkInternetConnection(google)) { embed.addField("Route to the server - OK", "Google traceroute", false); embed.setColor(Color.green); } else { embed.addField("Route to the server - FAIL", "Google traceroute", false); embed.setColor(Color.red); } if (checkInternetConnection(mfnd)) { embed.addField("Site activity - OK", "Ping www.mfnd.ru", false); embed.setColor(Color.green); } else { embed.addField("Site activity - FAIL", "Ping www.mfnd.ru", false); embed.setColor(Color.red); } MCPingOptions iisoptions = MCPingOptions.builder() .hostname("www.mfnd.ru") .port(22630) .build(); MCPingResponse iisreply; try { iisreply = MCPing.getPing(iisoptions); } catch (IOException ex) { embed.addField("IIS server - FAIL", "", false); embed.setColor(Color.red); return; } MCPingResponse.Players iisplayers = iisreply.getPlayers(); embed.addField("IIS server - OK", "Online count: "+ iisplayers.getOnline() + "/" + iisplayers.getMax(), false); embed.setColor(Color.green); MCPingOptions impactoptions = MCPingOptions.builder() .hostname("www.mfnd.ru") .port(22631) .build(); MCPingResponse impactreply; try { impactreply = MCPing.getPing(impactoptions); } catch (IOException ex) { embed.addField("IMPACT server - FAIL", "", false); embed.setColor(Color.red); return; } MCPingResponse.Players impactplayers = impactreply.getPlayers(); embed.addField("IMPACT server - OK", "Online count: "+ impactplayers.getOnline() + "/" + impactplayers.getMax(), false); embed.setColor(Color.green); // if () { // embed.addField("", "Jabber connect - OK", false); // embed.setColor(Color.green); // } else // { // embed.addField("", "Jabber connect - FAIL", false); // embed.setColor(Color.red); // } Message msg = EmbedUtil.message(embed); EmbedUtil.sendAndDeleteOnGuilds(channel, msg, -1, TimeUnit.MINUTES); } private static boolean checkInternetConnection(String site) { Boolean result = false; HttpURLConnection con = null; try { con = (HttpURLConnection) new URL(site).openConnection(); con.setRequestMethod("HEAD"); result = (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); } finally { if (con != null) { try { con.disconnect(); } catch (Exception e) { e.printStackTrace(); } } } return result; } }