diff --git a/.idea/.idea.PSCHelpdesk/.idea/workspace.xml b/.idea/.idea.PSCHelpdesk/.idea/workspace.xml
index f6ace41..49e5564 100644
--- a/.idea/.idea.PSCHelpdesk/.idea/workspace.xml
+++ b/.idea/.idea.PSCHelpdesk/.idea/workspace.xml
@@ -11,7 +11,18 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -29,50 +40,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
+
-
-
-
-
-
+
+
+
-
diff --git a/HetznerServer/HetznerServer.csproj b/HetznerServer/HetznerServer.csproj
index 9c2a4dc..3215248 100644
--- a/HetznerServer/HetznerServer.csproj
+++ b/HetznerServer/HetznerServer.csproj
@@ -33,6 +33,7 @@
+
diff --git a/HetznerServer/Models/Domain.cs b/HetznerServer/Models/Domain.cs
index 14fab85..4a51c5c 100644
--- a/HetznerServer/Models/Domain.cs
+++ b/HetznerServer/Models/Domain.cs
@@ -3,6 +3,8 @@ namespace PSCHelpdesk.Plugins.HetznerServer.Models;
public class Domain
{
public string Name { get; set; }
+
+ public string LinkDomain { get => "https://" + Name.ToLower(); }
public Domain(String name)
{
diff --git a/HetznerServer/Models/Server.cs b/HetznerServer/Models/Server.cs
index fcf4c8a..3b195cb 100644
--- a/HetznerServer/Models/Server.cs
+++ b/HetznerServer/Models/Server.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
+using Avalonia.Media;
+using Material.Icons;
using ReactiveUI;
namespace PSCHelpdesk.Plugins.HetznerServer.Models;
@@ -12,6 +14,62 @@ public class Server : ReactiveObject
public string Status { get; set; }
+ private string _isGoodIcon = MaterialIconKind.AlertCircleOutline.ToString();
+
+ public string IsGoodIcon
+ {
+ get => _isGoodIcon;
+ set => this.RaiseAndSetIfChanged(ref _isGoodIcon, value);
+ }
+
+ private IImmutableSolidColorBrush? _isGoodColor = Brushes.Red;
+
+ public IImmutableSolidColorBrush? IsGoodColor
+ {
+ get => _isGoodColor;
+ set => this.RaiseAndSetIfChanged(ref _isGoodColor, value);
+ }
+
+ private String _rootDirUsed = "100%";
+
+ public string RootDirUsed
+ {
+ get => _rootDirUsed;
+ set => this.RaiseAndSetIfChanged(ref _rootDirUsed, value);
+ }
+
+ private String _dataDirUsed = "100%";
+
+ public string DataDirUsed
+ {
+ get => _dataDirUsed;
+ set => this.RaiseAndSetIfChanged(ref _dataDirUsed, value);
+ }
+
+ private String _mongoVersion = "";
+
+ public string MongoVersion
+ {
+ get => _mongoVersion;
+ set => this.RaiseAndSetIfChanged(ref _mongoVersion, value);
+ }
+
+ private int _runningContainerCount = 0;
+
+ public int RunningContainerCount
+ {
+ get => _runningContainerCount;
+ set => this.RaiseAndSetIfChanged(ref _runningContainerCount, value);
+ }
+
+ private String _mysqlVersion = "";
+
+ public string MysqlVersion
+ {
+ get => _mysqlVersion;
+ set => this.RaiseAndSetIfChanged(ref _mysqlVersion, value);
+ }
+
public string Type { get; set; }
public string Ipv4 { get; set; }
public string Ipv6 { get; set; }
diff --git a/HetznerServer/Service/ServerService.cs b/HetznerServer/Service/ServerService.cs
index 3023339..c3535d7 100644
--- a/HetznerServer/Service/ServerService.cs
+++ b/HetznerServer/Service/ServerService.cs
@@ -92,7 +92,42 @@ public class ServerService: IServerService
});
}
-
+ command = client.RunCommand("docker inspect psc_mongodb_1");
+ if (command.ExitStatus == 0)
+ {
+ JArray mongoDB = JArray.Parse(command.Result);
+ var mongoDBEnvArray = mongoDB[0]["Config"]["Env"];
+
+ foreach (String entry in mongoDBEnvArray)
+ {
+ var mongodDBexploded = entry.Split("=");
+ if (mongodDBexploded[0] == "MONGO_VERSION")
+ {
+ serv.MongoVersion = mongodDBexploded[1];
+ }
+ }
+ }
+ command = client.RunCommand("docker inspect psc_mysql_1");
+ if (command.ExitStatus == 0)
+ {
+ JArray mongoDB = JArray.Parse(command.Result);
+ var mongoDBEnvArray = mongoDB[0]["Config"]["Env"];
+
+ foreach (String entry in mongoDBEnvArray)
+ {
+ var mongodDBexploded = entry.Split("=");
+ if (mongodDBexploded[0] == "MARIADB_VERSION")
+ {
+ serv.MysqlVersion = mongodDBexploded[1];
+ }
+ }
+ }
+
+ command = client.RunCommand("docker ps|wc -l");
+ if (command.ExitStatus == 0)
+ {
+ serv.RunningContainerCount = int.Parse(command.Result);
+ }
command = client.RunCommand("docker inspect psc_web_1");
if (command.ExitStatus == 0)
{
diff --git a/HetznerServer/Views/ServerView.axaml b/HetznerServer/Views/ServerView.axaml
index b1579fd..a275372 100644
--- a/HetznerServer/Views/ServerView.axaml
+++ b/HetznerServer/Views/ServerView.axaml
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia"
xmlns:vm="clr-namespace:PSCHelpdesk.Plugins.HetznerServer.ViewModels"
xmlns:converter="clr-namespace:PSCHelpdesk.Plugins.HetznerServer.Converter"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
@@ -15,10 +16,8 @@
-
-
+
+
Suchtext
@@ -42,18 +41,25 @@
-
+
+
+
+
+
+
+
+
-
-
+
+
-
+
+ Width="35" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PSCHelpdesk.sln.DotSettings.user b/PSCHelpdesk.sln.DotSettings.user
index f0910b6..de79d68 100644
--- a/PSCHelpdesk.sln.DotSettings.user
+++ b/PSCHelpdesk.sln.DotSettings.user
@@ -8,6 +8,7 @@
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
@@ -25,7 +26,9 @@
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
@@ -37,6 +40,7 @@
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
diff --git a/PSCHelpdesk/PSCHelpdesk.Desktop/PSCHelpdesk.Desktop.csproj b/PSCHelpdesk/PSCHelpdesk.Desktop/PSCHelpdesk.Desktop.csproj
index 116b071..da6d212 100644
--- a/PSCHelpdesk/PSCHelpdesk.Desktop/PSCHelpdesk.Desktop.csproj
+++ b/PSCHelpdesk/PSCHelpdesk.Desktop/PSCHelpdesk.Desktop.csproj
@@ -27,6 +27,12 @@
..\..\..\..\.nuget\packages\avalonia\11.2.0\ref\net8.0\Avalonia.Controls.dll
+
+ ..\..\..\..\.nuget\packages\projektanker.icons.avalonia\9.4.1\lib\netstandard2.0\Projektanker.Icons.Avalonia.dll
+
+
+ ..\..\..\..\.nuget\packages\projektanker.icons.avalonia.fontawesome\9.4.1\lib\netstandard2.0\Projektanker.Icons.Avalonia.FontAwesome.dll
+
diff --git a/PSCHelpdesk/PSCHelpdesk.Desktop/Program.cs b/PSCHelpdesk/PSCHelpdesk.Desktop/Program.cs
index dfbf411..f4d5e76 100644
--- a/PSCHelpdesk/PSCHelpdesk.Desktop/Program.cs
+++ b/PSCHelpdesk/PSCHelpdesk.Desktop/Program.cs
@@ -15,9 +15,12 @@ sealed class Program
// Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp()
- => AppBuilder.Configure()
+ {
+
+ return AppBuilder.Configure()
.UsePlatformDetect()
.WithInterFont()
.UseReactiveUI()
.LogToTrace();
+ }
}
\ No newline at end of file
diff --git a/PSCHelpdesk/PSCHelpdesk/App.axaml b/PSCHelpdesk/PSCHelpdesk/App.axaml
index bec75b6..0657b66 100644
--- a/PSCHelpdesk/PSCHelpdesk/App.axaml
+++ b/PSCHelpdesk/PSCHelpdesk/App.axaml
@@ -1,6 +1,7 @@
@@ -10,6 +11,7 @@
+