diff --git a/.idea/.idea.PSCHelpdesk/.idea/.name b/.idea/.idea.PSCHelpdesk/.idea/.name
deleted file mode 100644
index 6f7d947..0000000
--- a/.idea/.idea.PSCHelpdesk/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-PSCHelpdesk
\ No newline at end of file
diff --git a/.idea/.idea.PSCHelpdesk/.idea/projectSettingsUpdater.xml b/.idea/.idea.PSCHelpdesk/.idea/projectSettingsUpdater.xml
index 64af657..ef20cb0 100644
--- a/.idea/.idea.PSCHelpdesk/.idea/projectSettingsUpdater.xml
+++ b/.idea/.idea.PSCHelpdesk/.idea/projectSettingsUpdater.xml
@@ -2,6 +2,7 @@
+
\ No newline at end of file
diff --git a/.idea/.idea.PSCHelpdesk/.idea/workspace.xml b/.idea/.idea.PSCHelpdesk/.idea/workspace.xml
index 19661ff..f1956a5 100644
--- a/.idea/.idea.PSCHelpdesk/.idea/workspace.xml
+++ b/.idea/.idea.PSCHelpdesk/.idea/workspace.xml
@@ -11,100 +11,13 @@
+
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -162,7 +75,7 @@
"associatedIndex": 8
}
-
+
@@ -210,8 +123,13 @@
+
+
+
+
+
@@ -228,8 +146,13 @@
+
+
+
+
+
@@ -246,8 +169,13 @@
+
+
+
+
+
@@ -284,7 +212,6 @@
-
@@ -341,6 +268,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -523,6 +479,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/HetznerServer/Service/CheckMKService.cs b/HetznerServer/Service/CheckMKService.cs
index 9bef063..e843408 100644
--- a/HetznerServer/Service/CheckMKService.cs
+++ b/HetznerServer/Service/CheckMKService.cs
@@ -78,6 +78,9 @@ public class CheckMKService: IServerService
if (serv.Services.Count == 0 && serv.BackupLastModified > DateTime.Today.AddDays(-3) && serv.Status == "running")
{
serv.ServerStatus = Brushes.Transparent;
+ }else
+ {
+ serv.ServerStatus = Brushes.Red;
}
}
}
@@ -92,11 +95,57 @@ public class CheckMKService: IServerService
public void DoReScan(Server serv)
{
- doScan(serv);
+ doScan();
}
- async private void doScan(Server serv)
+ async private void doScan()
{
-
+ var settings = new CheckMKSettings();
+ _settingsManager.LoadPluginSettings("CheckMKSettings", settings);
+
+ var httpClient = new HttpClient();
+ httpClient.DefaultRequestHeaders.Accept.Clear();
+ httpClient.DefaultRequestHeaders.Accept.Add(
+ new MediaTypeWithQualityHeaderValue("application/ld+json"));
+ httpClient.DefaultRequestHeaders.Add("User-Agent", "PSC Client");
+ httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes($"{settings.Username}:{settings.Password}")));
+
+ try
+ {
+ foreach (var serv in _server.SourceCache.Items)
+ {
+ serv.Services.Clear();
+ }
+
+ var stringPlugins =
+ httpClient.GetStringAsync("https://check.thomas-peterson.de/cmk/check_mk/view.py?view_name=svcproblems&output_format=json");
+
+ var msg = await stringPlugins;
+ JArray pluginMsg = JArray.Parse(msg);
+
+ foreach (var token in pluginMsg)
+ {
+ if (token[0].ToString() != "service_state")
+ {
+ var serv = _server.SourceCache.Items.FirstOrDefault(e => e.Name.ToLower().Contains(token[1].ToString().ToLower()));
+ if (serv != null)
+ {
+ serv.Services.Add(new Models.Service(token[0].ToString(), token[4].ToString()));
+ }
+ }
+ }
+
+ foreach (var serv in _server.SourceCache.Items)
+ {
+ if (serv.Services.Count == 0 && serv.BackupLastModified > DateTime.Today.AddDays(-3) && serv.Status == "running")
+ {
+ serv.ServerStatus = Brushes.Transparent;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ }
}
}
\ No newline at end of file
diff --git a/HetznerServer/Service/ServerService.cs b/HetznerServer/Service/ServerService.cs
index 7541598..7cbb68b 100644
--- a/HetznerServer/Service/ServerService.cs
+++ b/HetznerServer/Service/ServerService.cs
@@ -285,6 +285,58 @@ public class ServerService: IServerService
}
}
+ if (serv.Domains.Count == 0)
+ {
+ command = client.RunCommand("docker inspect psc-web-1");
+ if (command.ExitStatus == 0)
+ {
+ JArray web = JArray.Parse(command.Result);
+ var hostConfigArray = web[0]["HostConfig"];
+ if (hostConfigArray["RestartPolicy"]["Name"].ToString() == "always")
+ {
+ serv.IsRestartAlways = true;
+ }
+
+ var webEnvArray = web[0]["Config"]["Env"];
+
+ foreach (String entry in webEnvArray)
+ {
+ var webExploded = entry.Split("=");
+ if (webExploded[0] == "LETSENCRYPT_HOST")
+ {
+ var webHosts = webExploded[1].Split(",");
+ serv.Domains.Clear();
+ foreach (String dom in webHosts)
+ {
+ serv.Domains.Add(new Domain(dom));
+ }
+
+ var httpClient = new HttpClient();
+ httpClient.DefaultRequestHeaders.Accept.Clear();
+ httpClient.DefaultRequestHeaders.Accept.Add(
+ new MediaTypeWithQualityHeaderValue("application/ld+json"));
+ httpClient.DefaultRequestHeaders.Add("User-Agent", "PSC Client");
+ try
+ {
+ var stringTask =
+ httpClient.GetStringAsync("https://" + webHosts[0] +
+ "/apps/api/system/version");
+
+ var msg = await stringTask;
+ JObject versionMSg = JObject.Parse(msg);
+
+ serv.Datum = versionMSg["datum"].ToString();
+ serv.Release = float.Parse(versionMSg["release"].ToString());
+ }
+ catch (Exception ex)
+ {
+ }
+
+ }
+ }
+ }
+ }
+
if (serv.PscApiKey != "" && serv.Domains.Count > 0)
{
var httpClient = new HttpClient();
@@ -346,6 +398,15 @@ public class ServerService: IServerService
serv.IsGoodColor = Brushes.Green;
}
+ if (serv.Services.Count == 0 && serv.BackupLastModified > DateTime.Today.AddDays(-3) && serv.Status == "running")
+ {
+ serv.ServerStatus = Brushes.Transparent;
+ }
+ else
+ {
+ serv.ServerStatus = Brushes.Red;
+ }
+
client.Disconnect();
}
catch (Exception ex)
diff --git a/HetznerServer/ViewModels/ServerViewModel.cs b/HetznerServer/ViewModels/ServerViewModel.cs
index 53848c7..a7ab1ba 100644
--- a/HetznerServer/ViewModels/ServerViewModel.cs
+++ b/HetznerServer/ViewModels/ServerViewModel.cs
@@ -180,6 +180,7 @@ public partial class ServerViewModel : ViewModelBase, IViewModelBase
if (serv.IsChecked)
{
ServerService.DoReScan(serv);
+ CheckMKService.DoReScan(serv);
}
}
}
diff --git a/HetznerServer/Views/ServerView.axaml b/HetznerServer/Views/ServerView.axaml
index fb445c2..e67e3d4 100644
--- a/HetznerServer/Views/ServerView.axaml
+++ b/HetznerServer/Views/ServerView.axaml
@@ -18,7 +18,7 @@
-
+
Suchtext
@@ -29,10 +29,10 @@
-
+
-
-
+