/// <summary> /// Determines if the server is accessible through the selected networks /// </summary> /// <param name="access">The access scheme</param> /// <returns>True if the server was accessible through all the specified access networks</returns> public async Task<bool> IsAccessible(Settings.AccessType access) { bool accessFailed = false; if (access.HasFlag(Settings.AccessType.Internet)) { Logging.OnLogMessage("Checking access from the internet", Logging.MessageType.Info); if (await ServerIsListening(Settings.Instance.Internet, Settings.Instance.Port)) Logging.OnLogMessage("Access is possible through the internet", Logging.MessageType.Info); else accessFailed = true; } if (access.HasFlag(Settings.AccessType.LAN)) { Logging.OnLogMessage("Checking access from the local network", Logging.MessageType.Info); if (await ServerIsListening(Settings.Instance.LAN, Settings.Instance.Port)) Logging.OnLogMessage("Access is possible through the local network", Logging.MessageType.Info); else accessFailed = true; } if (access.HasFlag(Settings.AccessType.Loopback)) { Logging.OnLogMessage("Checking access via loopback", Logging.MessageType.Info); if (await ServerIsListening(Settings.Instance.Loopback, Settings.Instance.Port)) Logging.OnLogMessage("Access is possible through loopback", Logging.MessageType.Info); else accessFailed = true; } return !accessFailed; }
/// <summary> /// Checks if the server is still running /// </summary> /// <param name="access">The desired access scheme</param> /// <returns>true if everything is fine</returns> public async Task<ServerErrors> Validates(Settings.AccessType access) { ServerErrors serverHealth = 0; if (IsRunning()) { Logging.OnLogMessage("The process is running", Logging.MessageType.Info); } else { Logging.OnLogMessage("The process is dead", Logging.MessageType.Warning); serverHealth |= ServerErrors.ProcessDead; } if (await IsAccessible(access)) { Logging.OnLogMessage("The server is responding fine", Logging.MessageType.Info); } else { Logging.OnLogMessage("The server is not responding as it should", Logging.MessageType.Warning); serverHealth |= ServerErrors.Connection; } return serverHealth; }