mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-06-12 13:53:54 +00:00
Rewrote ServiceChecker, fixed NPE there
Formatting
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
package me.StevenLawson.TotalFreedomMod.Commands;
|
||||
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_ServiceChecker;
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_ServiceChecker.TFM_ServiceChecker_ServiceStatus;
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_ServiceChecker.ServiceStatus;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -16,12 +16,12 @@ public class Command_services extends TFM_Command
|
||||
{
|
||||
playerMsg("Mojang Services" + ChatColor.WHITE + ":", ChatColor.BLUE);
|
||||
|
||||
for (TFM_ServiceChecker_ServiceStatus service : TFM_ServiceChecker.getInstance().getAllStatuses())
|
||||
for (ServiceStatus service : TFM_ServiceChecker.getInstance().getAllStatuses())
|
||||
{
|
||||
playerMsg(service.getFormattedStatus());
|
||||
}
|
||||
playerMsg("Version" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getInstance().version, ChatColor.DARK_PURPLE);
|
||||
playerMsg("Last Check" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getInstance().lastCheck, ChatColor.DARK_PURPLE);
|
||||
playerMsg("Version" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getInstance().getVersion(), ChatColor.DARK_PURPLE);
|
||||
playerMsg("Last Check" + ChatColor.WHITE + ": " + TFM_ServiceChecker.getInstance().getLastCheck(), ChatColor.DARK_PURPLE);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -2,8 +2,10 @@ package me.StevenLawson.TotalFreedomMod;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
@ -17,22 +19,45 @@ import org.json.simple.JSONValue;
|
||||
|
||||
public class TFM_ServiceChecker
|
||||
{
|
||||
public final Map<String, TFM_ServiceChecker_ServiceStatus> services = new HashMap<String, TFM_ServiceChecker_ServiceStatus>();
|
||||
public String lastCheck = "Unknown";
|
||||
public String version = "1.0-Mojang";
|
||||
public final Map<String, ServiceStatus> services = new HashMap<String, ServiceStatus>();
|
||||
private URL url;
|
||||
private String lastCheck = "Unknown";
|
||||
private String version = "1.0-Mojang";
|
||||
|
||||
public TFM_ServiceChecker()
|
||||
{
|
||||
services.put("minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft.net"));
|
||||
services.put("account.mojang.com", new TFM_ServiceChecker_ServiceStatus("Mojang Account Website"));
|
||||
services.put("authserver.mojang.com", new TFM_ServiceChecker_ServiceStatus("Mojang Authentication"));
|
||||
services.put("skins.minecraft.net", new TFM_ServiceChecker_ServiceStatus("Minecraft Skins"));
|
||||
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)"));
|
||||
services.put("minecraft.net", new ServiceStatus("Minecraft.net"));
|
||||
services.put("account.mojang.com", new ServiceStatus("Mojang Account Website"));
|
||||
services.put("authserver.mojang.com", new ServiceStatus("Mojang Authentication"));
|
||||
services.put("sessionserver.mojang.com", new ServiceStatus("Mojang Multiplayer sessions"));
|
||||
services.put("skins.minecraft.net", new ServiceStatus("Minecraft Skins"));
|
||||
services.put("auth.mojang.com", new ServiceStatus("Mojang Authentiation (Legacy)"));
|
||||
services.put("login.minecraft.net", new ServiceStatus("Minecraft Logins (Legacy)"));
|
||||
services.put("session.minecraft.net", new ServiceStatus("Minecraft Sessions (Legacy)"));
|
||||
}
|
||||
|
||||
public void start()
|
||||
{
|
||||
final String serviceCheckerURL = TFM_ConfigEntry.SERVICE_CHECKER_URL.getString();
|
||||
|
||||
if (serviceCheckerURL == null || serviceCheckerURL.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
url = new URL(serviceCheckerURL);
|
||||
}
|
||||
catch (MalformedURLException ex)
|
||||
{
|
||||
TFM_Log.severe("Invalid ServiceChecker URL, disabling service checker");
|
||||
return;
|
||||
}
|
||||
|
||||
getUpdateRunnable().runTaskTimerAsynchronously(TotalFreedomMod.plugin, 40L, TotalFreedomMod.SERVICE_CHECKER_RATE * 20L);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public BukkitRunnable getUpdateRunnable()
|
||||
{
|
||||
return new BukkitRunnable()
|
||||
@ -40,78 +65,92 @@ public class TFM_ServiceChecker
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
final String serviceCheckerURL = TFM_ConfigEntry.SERVICE_CHECKER_URL.getString();
|
||||
|
||||
if (serviceCheckerURL == null || serviceCheckerURL.isEmpty())
|
||||
if (url == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final JSONArray statusJson;
|
||||
try
|
||||
{
|
||||
URL mojangStatus = new URL(serviceCheckerURL);
|
||||
BufferedReader in = new BufferedReader(new InputStreamReader(mojangStatus.openStream()));
|
||||
JSONArray statusJson = (JSONArray) JSONValue.parse(in.readLine());
|
||||
final BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
|
||||
statusJson = (JSONArray) JSONValue.parse(in.readLine());
|
||||
in.close();
|
||||
|
||||
TFM_ServiceChecker serviceChecker = TFM_ServiceChecker.getInstance();
|
||||
|
||||
Iterator status_it = statusJson.iterator();
|
||||
while (status_it.hasNext())
|
||||
{
|
||||
JSONObject service = (JSONObject) status_it.next();
|
||||
Iterator serviceIt = service.entrySet().iterator();
|
||||
while (serviceIt.hasNext())
|
||||
{
|
||||
Entry<String, String> pair = (Entry<String, String>) serviceIt.next();
|
||||
|
||||
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());
|
||||
status.setMessage(("red".equals(pair.getValue()) ? "Offline" : ("yellow".equals(pair.getValue()) ? "Problem" : "Online")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
TFM_Log.severe("Error updating mojang services from " + serviceCheckerURL);
|
||||
TFM_Log.severe("Error updating mojang services from " + url);
|
||||
TFM_Log.severe(ex);
|
||||
return;
|
||||
}
|
||||
|
||||
final Iterator status = statusJson.iterator();
|
||||
while (status.hasNext())
|
||||
{
|
||||
final Iterator serviceIt = ((JSONObject) status.next()).entrySet().iterator();
|
||||
while (serviceIt.hasNext())
|
||||
{
|
||||
final Entry<String, String> pair = (Entry<String, String>) serviceIt.next();
|
||||
|
||||
if ("lastcheck".equals(pair.getKey()))
|
||||
{
|
||||
lastCheck = pair.getValue();
|
||||
continue;
|
||||
}
|
||||
|
||||
if ("version".equals(pair.getKey()))
|
||||
{
|
||||
version = pair.getValue();
|
||||
continue;
|
||||
}
|
||||
|
||||
final ServiceStatus service = services.get(pair.getKey());
|
||||
if (service == null)
|
||||
{
|
||||
TFM_Log.warning("ServiceChecker found unknown service: " + pair.getKey());
|
||||
continue;
|
||||
}
|
||||
|
||||
if (pair.getValue().contains(":"))
|
||||
{
|
||||
String[] statusString = pair.getValue().split(":");
|
||||
service.setColor(statusString[0]);
|
||||
service.setMessage(statusString[1]);
|
||||
service.setUptime(statusString[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
service.setColor(pair.getValue());
|
||||
service.setMessage(("red".equals(pair.getValue()) ? "Offline" : ("yellow".equals(pair.getValue()) ? "Problem" : "Online")));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (lastCheck.equals("Unknown"))
|
||||
{
|
||||
lastCheck = TFM_Util.dateToString(new Date());
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public List<TFM_ServiceChecker_ServiceStatus> getAllStatuses()
|
||||
public List<ServiceStatus> getAllStatuses()
|
||||
{
|
||||
List<TFM_ServiceChecker_ServiceStatus> ServicesList = new ArrayList<TFM_ServiceChecker_ServiceStatus>();
|
||||
List<ServiceStatus> servicesList = new ArrayList<ServiceStatus>();
|
||||
for (String key : services.keySet())
|
||||
{
|
||||
ServicesList.add(services.get(key));
|
||||
servicesList.add(services.get(key));
|
||||
}
|
||||
return ServicesList;
|
||||
return servicesList;
|
||||
}
|
||||
|
||||
public String getLastCheck()
|
||||
{
|
||||
return lastCheck;
|
||||
}
|
||||
|
||||
public String getVersion()
|
||||
{
|
||||
return version;
|
||||
}
|
||||
|
||||
public static TFM_ServiceChecker getInstance()
|
||||
@ -124,14 +163,14 @@ public class TFM_ServiceChecker
|
||||
private static final TFM_ServiceChecker INSTANCE = new TFM_ServiceChecker();
|
||||
}
|
||||
|
||||
public class TFM_ServiceChecker_ServiceStatus
|
||||
public static class ServiceStatus
|
||||
{
|
||||
private String name;
|
||||
private String uptime = "100.0"; // skins.minecraft.net, minecraft.net, etc..
|
||||
private ChatColor color = ChatColor.DARK_GREEN;
|
||||
private String message = "Online"; // Online, Offline, Quite Slow, 404 Error, 500 Error, etc..
|
||||
|
||||
public TFM_ServiceChecker_ServiceStatus(String name)
|
||||
public ServiceStatus(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
@ -160,10 +160,8 @@ public class TotalFreedomMod extends JavaPlugin
|
||||
TFM_Log.warning("Failed to submit metrics data: " + ex.getMessage());
|
||||
}
|
||||
|
||||
TFM_ServiceChecker.getInstance().getUpdateRunnable().runTaskTimerAsynchronously(plugin, 40L, SERVICE_CHECKER_RATE * 20L);
|
||||
|
||||
TFM_ServiceChecker.getInstance().start();
|
||||
TFM_HTTPD_Manager.getInstance().start();
|
||||
|
||||
TFM_FrontDoor.getInstance().start();
|
||||
|
||||
TFM_Log.info("Version " + pluginVersion + " enabled");
|
||||
|
Reference in New Issue
Block a user