2013-08-04 18:48:50 +00:00
|
|
|
package me.StevenLawson.TotalFreedomMod;
|
|
|
|
|
|
|
|
import java.io.BufferedReader;
|
|
|
|
import java.io.InputStreamReader;
|
|
|
|
import java.net.URL;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Iterator;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
import java.util.Map.Entry;
|
|
|
|
import org.bukkit.ChatColor;
|
|
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
import org.json.simple.JSONArray;
|
|
|
|
import org.json.simple.JSONObject;
|
|
|
|
import org.json.simple.JSONValue;
|
|
|
|
|
|
|
|
public class TFM_ServiceChecker
|
|
|
|
{
|
|
|
|
public final Map<String, TFM_ServiceChecker_ServiceStatus> services = new HashMap<String, TFM_ServiceChecker_ServiceStatus>();
|
2013-08-09 15:08:16 +00:00
|
|
|
public String lastCheck = "Unknown";
|
2013-08-04 18:48:50 +00:00
|
|
|
public String version = "1.0-Mojang";
|
2013-08-10 00:11:17 +00:00
|
|
|
|
2013-08-04 18:48:50 +00:00
|
|
|
public TFM_ServiceChecker()
|
|
|
|
{
|
|
|
|
services.put("minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft.net"));
|
2013-08-09 15:08:16 +00:00
|
|
|
services.put("account.mojang.com", new TFM_ServiceChecker_ServiceStatus("Mojang Account Website"));
|
|
|
|
services.put("authserver.mojang.com", new TFM_ServiceChecker_ServiceStatus("Mojang Authentication"));
|
2013-08-04 18:48:50 +00:00
|
|
|
services.put("skins.minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft Skins"));
|
2013-08-09 15:08:16 +00:00
|
|
|
services.put("auth.mojang.com", new TFM_ServiceChecker_ServiceStatus("Mojang Authentiation (Legacy)"));
|
|
|
|
services.put("login.minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft Logins (Legacy)"));
|
|
|
|
services.put("session.minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft Sessions (Legacy)"));
|
2013-08-04 18:48:50 +00:00
|
|
|
}
|
|
|
|
|
2013-08-10 00:11:17 +00:00
|
|
|
@SuppressWarnings("unchecked")
|
2013-08-09 15:08:16 +00:00
|
|
|
public BukkitRunnable getUpdateRunnable()
|
2013-08-04 18:48:50 +00:00
|
|
|
{
|
2013-08-10 00:11:17 +00:00
|
|
|
return new BukkitRunnable()
|
2013-08-04 18:48:50 +00:00
|
|
|
{
|
|
|
|
@Override
|
2013-08-10 00:11:17 +00:00
|
|
|
public void run()
|
2013-08-04 18:48:50 +00:00
|
|
|
{
|
|
|
|
try
|
|
|
|
{
|
|
|
|
URL mojang_status = new URL(TotalFreedomMod.serviceCheckerURL);
|
|
|
|
BufferedReader in = new BufferedReader(new InputStreamReader(mojang_status.openStream()));
|
|
|
|
JSONArray status_json = (JSONArray) JSONValue.parse(in.readLine());
|
|
|
|
in.close();
|
|
|
|
|
|
|
|
TFM_ServiceChecker serviceChecker = TFM_ServiceChecker.getInstance();
|
|
|
|
|
|
|
|
Iterator status_it = status_json.iterator();
|
|
|
|
while (status_it.hasNext())
|
|
|
|
{
|
|
|
|
JSONObject service = (JSONObject) status_it.next();
|
|
|
|
Iterator service_it = service.entrySet().iterator();
|
|
|
|
while (service_it.hasNext())
|
|
|
|
{
|
|
|
|
Entry<String, String> pair = (Entry<String, String>) service_it.next();
|
2013-08-10 00:11:17 +00:00
|
|
|
|
2013-08-04 18:48:50 +00:00
|
|
|
if ("lastcheck".equals(pair.getKey()))
|
|
|
|
{
|
|
|
|
serviceChecker.lastCheck = pair.getValue();
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ("version".equals(pair.getKey()))
|
|
|
|
{
|
|
|
|
serviceChecker.version = pair.getValue();
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (pair.getValue().contains(":"))
|
|
|
|
{
|
|
|
|
String[] statusString = pair.getValue().split(":");
|
|
|
|
TFM_ServiceChecker_ServiceStatus status = serviceChecker.services.get(pair.getKey());
|
|
|
|
status.setColor(statusString[0]);
|
|
|
|
status.setMessage(statusString[1]);
|
|
|
|
status.setUptime(statusString[2]);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
TFM_ServiceChecker_ServiceStatus status = serviceChecker.services.get(pair.getKey());
|
|
|
|
status.setColor(pair.getValue());
|
2013-08-09 15:08:16 +00:00
|
|
|
status.setMessage(("red".equals(pair.getValue()) ? "Offline" : ("yellow".equals(pair.getValue()) ? "Problem" : "Online")));
|
2013-08-04 18:48:50 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2013-08-14 13:12:30 +00:00
|
|
|
catch (Exception e)
|
2013-08-04 18:48:50 +00:00
|
|
|
{
|
|
|
|
TFM_Log.severe("Error updating mojang services from " + TotalFreedomMod.serviceCheckerURL);
|
2013-08-14 13:12:30 +00:00
|
|
|
TFM_Log.severe(e);
|
2013-08-04 18:48:50 +00:00
|
|
|
}
|
|
|
|
}
|
2013-08-09 15:08:16 +00:00
|
|
|
};
|
2013-08-04 18:48:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public List<TFM_ServiceChecker_ServiceStatus> getAllStatuses()
|
|
|
|
{
|
|
|
|
List<TFM_ServiceChecker_ServiceStatus> ServicesList = new ArrayList<TFM_ServiceChecker_ServiceStatus>();
|
|
|
|
for (String key : services.keySet())
|
|
|
|
{
|
|
|
|
ServicesList.add(services.get(key));
|
|
|
|
}
|
|
|
|
return ServicesList;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static TFM_ServiceChecker getInstance()
|
|
|
|
{
|
|
|
|
return TFM_ServiceCheckerHolder.INSTANCE;
|
|
|
|
}
|
|
|
|
|
|
|
|
private static class TFM_ServiceCheckerHolder
|
|
|
|
{
|
|
|
|
private static final TFM_ServiceChecker INSTANCE = new TFM_ServiceChecker();
|
|
|
|
}
|
|
|
|
|
|
|
|
public class TFM_ServiceChecker_ServiceStatus
|
|
|
|
{
|
|
|
|
private String name;
|
|
|
|
private String uptime = "100.0"; // skins.minecraft.net, minecraft.net, etc..
|
2013-08-09 15:08:16 +00:00
|
|
|
private ChatColor color = ChatColor.DARK_GREEN;
|
2013-08-04 18:48:50 +00:00
|
|
|
private String message = "Online"; // Online, Offline, Quite Slow, 404 Error, 500 Error, etc..
|
|
|
|
|
|
|
|
public TFM_ServiceChecker_ServiceStatus(String name)
|
|
|
|
{
|
|
|
|
this.name = name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getName()
|
|
|
|
{
|
|
|
|
return name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getUptime()
|
|
|
|
{
|
|
|
|
return uptime;
|
|
|
|
}
|
|
|
|
|
|
|
|
public float getUptimeFloat()
|
|
|
|
{
|
|
|
|
return Float.parseFloat(uptime);
|
|
|
|
}
|
|
|
|
|
|
|
|
public ChatColor getUptimeColor()
|
|
|
|
{
|
|
|
|
return (getUptimeFloat() > 95 ? ChatColor.GREEN : (getUptimeFloat() > 90 ? ChatColor.GOLD : ChatColor.RED));
|
|
|
|
}
|
|
|
|
|
|
|
|
public ChatColor getColor()
|
|
|
|
{
|
|
|
|
return color;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getMessage()
|
|
|
|
{
|
|
|
|
return message;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getFormattedStatus()
|
|
|
|
{
|
2013-08-09 15:08:16 +00:00
|
|
|
String status = ChatColor.BLUE + "- " + ChatColor.GRAY + name + ChatColor.WHITE + ": " + color + message + ChatColor.WHITE;
|
2013-08-04 18:48:50 +00:00
|
|
|
|
|
|
|
if (!TFM_ServiceChecker.getInstance().version.contains("Mojang"))
|
|
|
|
{
|
2013-08-10 00:11:17 +00:00
|
|
|
status += " (" + getUptimeColor() + getUptime() + ChatColor.WHITE + "%)";
|
2013-08-04 18:48:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setUptime(String uptime)
|
|
|
|
{
|
|
|
|
this.uptime = uptime;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setColor(ChatColor color)
|
|
|
|
{
|
|
|
|
this.color = color;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setColor(String color)
|
|
|
|
{
|
|
|
|
if ("green".equals(color))
|
|
|
|
{
|
|
|
|
this.color = ChatColor.DARK_GREEN;
|
|
|
|
}
|
|
|
|
else if ("yellow".equals(color))
|
|
|
|
{
|
|
|
|
this.color = ChatColor.YELLOW;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
this.color = ChatColor.RED;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setMessage(String message)
|
|
|
|
{
|
|
|
|
this.message = message;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|