This commit is contained in:
Thomas Peterson 2024-12-25 11:15:24 +01:00
parent db8075b8f3
commit 3e57fdc4b7
100 changed files with 483 additions and 1944 deletions

View File

@ -12,14 +12,99 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="95257dc5-08bd-4c50-8726-85956b3c2c92" name="Changes" comment=""> <list default="true" id="95257dc5-08bd-4c50-8726-85956b3c2c92" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/.idea.PSCHelpdesk/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.PSCHelpdesk/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/.idea.PSCHelpdesk/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.PSCHelpdesk/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/FastBill/FastBill.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/FastBill/FastBill.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HetznerServer/HetznerServer.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/HetznerServer.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HetznerServer/HetznerServer.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/HetznerServer.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HetznerServer/Models/Server.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/Models/Server.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/HetznerServer/Models/Server.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/Models/Server.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HetznerServer/Service/ServerService.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/Service/ServerService.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/HetznerServer/Service/ServerService.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/Service/ServerService.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HetznerServer/ViewModels/ServerViewModel.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/ViewModels/ServerViewModel.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/HetznerServer/ViewModels/ServerViewModel.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/ViewModels/ServerViewModel.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HetznerServer/Views/ServerDetailView.axaml" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/Views/ServerDetailView.axaml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/HetznerServer.dll" beforeDir="false" afterPath="$PROJECT_DIR$/_dist/hetzner/HetznerServer.dll" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Nextcloud/Nextcloud.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Nextcloud.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/HetznerServer.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/_dist/hetzner/HetznerServer.pdb" afterDir="false" /> <change beforePath="$PROJECT_DIR$/PSCHelpdesk.sln.DotSettings.user" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk.sln.DotSettings.user" afterDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Nextcloud.dll" beforeDir="false" afterPath="$PROJECT_DIR$/_dist/nextcloud/Nextcloud.dll" afterDir="false" /> <change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Desktop/PSCHelpdesk.Desktop.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Desktop/PSCHelpdesk.Desktop.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Nextcloud.pdb" beforeDir="false" afterPath="$PROJECT_DIR$/_dist/nextcloud/Nextcloud.pdb" afterDir="false" /> <change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/PSCHelpdesk.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/PSCHelpdesk.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/PrintshopCreator/PrintshopCreator.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/PrintshopCreator/PrintshopCreator.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Base.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Controls.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.DesignerSupport.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Dialogs.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Markup.Xaml.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Markup.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Metal.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.MicroCom.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.OpenGL.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.ReactiveUI.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Remote.Protocol.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Vulkan.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Xaml.Interactions.Custom.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Xaml.Interactions.DragAndDrop.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Xaml.Interactions.Draggable.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Xaml.Interactions.Events.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Xaml.Interactions.Responsive.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Xaml.Interactions.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.Xaml.Interactivity.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Avalonia.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/DynamicData.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/HetznerCloudApi.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/HetznerServer.deps.json" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/HetznerServer.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/HetznerServer.pdb" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Material.Icons.Avalonia.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Material.Icons.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/MicroCom.Runtime.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Microsoft.Extensions.DependencyInjection.Abstractions.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Microsoft.Extensions.DependencyInjection.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Newtonsoft.Json.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/ReactiveUI.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Renci.SshNet.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/Splat.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/hetzner/System.Reactive.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Base.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Controls.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.DesignerSupport.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Dialogs.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Markup.Xaml.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Markup.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Metal.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.MicroCom.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.OpenGL.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.ReactiveUI.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Remote.Protocol.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Svg.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Vulkan.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Xaml.Interactions.Custom.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Xaml.Interactions.DragAndDrop.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Xaml.Interactions.Draggable.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Xaml.Interactions.Events.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Xaml.Interactions.Responsive.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Xaml.Interactions.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.Xaml.Interactivity.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Avalonia.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/AvaloniaEdit.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/ColorTextBlock.Avalonia.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/CommunityToolkit.Mvvm.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/DynamicData.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/ExCSS.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Fizzler.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/HtmlAgilityPack.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Markdown.Avalonia.Full.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Markdown.Avalonia.Html.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Markdown.Avalonia.Svg.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Markdown.Avalonia.SyntaxHigh.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Markdown.Avalonia.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/MicroCom.Runtime.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Newtonsoft.Json.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Nextcloud.deps.json" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Nextcloud.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Nextcloud.pdb" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/ReactiveUI.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/RestSharp.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/ShimSkiaSharp.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Splat.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Svg.Custom.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/Svg.Model.dll" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/_dist/nextcloud/System.Reactive.dll" beforeDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -37,10 +122,12 @@
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/8b4806d72c8e4cc3b55824ab34018d6a31600/06/4ff6aee3/RootDockGroup.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/8b4806d72c8e4cc3b55824ab34018d6a31600/06/4ff6aee3/RootDockGroup.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/8b4806d72c8e4cc3b55824ab34018d6a31600/76/f4abce16/DockItem.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/8b4806d72c8e4cc3b55824ab34018d6a31600/76/f4abce16/DockItem.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/8b4806d72c8e4cc3b55824ab34018d6a31600/9a/c689be08/StackDockGroup.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/8b4806d72c8e4cc3b55824ab34018d6a31600/9a/c689be08/StackDockGroup.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/95e899f2b13d4189874af98ec00443321e400/2d/9358e780/Server.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/16783de323588e2e074ea466e9fe416d74d7bd3666a553b68bbf4eae9ddfc/IDockSerializer.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/16783de323588e2e074ea466e9fe416d74d7bd3666a553b68bbf4eae9ddfc/IDockSerializer.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/2854ce6d56c18d0d837d3a3ef9c4f2c7c77691fa3528c8394986ac7ce7719/StackFrameIterator.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/2854ce6d56c18d0d837d3a3ef9c4f2c7c77691fa3528c8394986ac7ce7719/StackFrameIterator.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/29ea32a76b2a6b8eb246f247df6a6a86d887384b4c31db2a35effccdd86c24/JsonSerializerInternalReader.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/29ea32a76b2a6b8eb246f247df6a6a86d887384b4c31db2a35effccdd86c24/JsonSerializerInternalReader.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/2e4265f7d1d3c298a3669f37a22d66f557f09ea3a6be4b919260959efd145f25/DockSerializer.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/2e4265f7d1d3c298a3669f37a22d66f557f09ea3a6be4b919260959efd145f25/DockSerializer.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/4fa4bd31d579a35ede6b12dc81943b59b4daa8c40ef828bc38ef631b26f8/SourceCache.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/52dbc4b2fb874f79fb4fec0b07cf7f6ca6ac95616e1d164ef210a0645a1aa9/IFactory.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/52dbc4b2fb874f79fb4fec0b07cf7f6ca6ac95616e1d164ef210a0645a1aa9/IFactory.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/79b4b5d07e8c5ac3de172b75667c6bded8e1fa6f42f36d8f6dc2f9e3d568/ArgumentNullException.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/79b4b5d07e8c5ac3de172b75667c6bded8e1fa6f42f36d8f6dc2f9e3d568/ArgumentNullException.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/8fdfdad679a78c582d01944c74d5231bcb342221f694b89a033be1a1f947263/RecylingDataTemplate.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/8fdfdad679a78c582d01944c74d5231bcb342221f694b89a033be1a1f947263/RecylingDataTemplate.cs" root0="FORCE_HIGHLIGHTING" />
@ -52,6 +139,7 @@
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/ca55e2cf16410d6583d46a0c9733075e7c0a9d8bff277747e638859b39c45/DockItemViewModel.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/ca55e2cf16410d6583d46a0c9733075e7c0a9d8bff277747e638859b39c45/DockItemViewModel.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/e39065ef8f6f61ed1c6d4238f823be9a06766bb174d55b0ba7299b6e21ec0/ExceptionUtils.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/e39065ef8f6f61ed1c6d4238f823be9a06766bb174d55b0ba7299b6e21ec0/ExceptionUtils.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/fa3c59274a754721f822d1776be91c7ffdd37ff4219098396aa16ba1fc5447/Ioc.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/fa3c59274a754721f822d1776be91c7ffdd37ff4219098396aa16ba1fc5447/Ioc.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="mock://C:/Users/info/RiderProjects/pschelpdesk/HetznerServer/Service/ServerService.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/HetznerServer/ViewModels/ServerViewModel.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/HetznerServer/ViewModels/ServerViewModel.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml.cs" root0="FORCE_HIGHLIGHTING" />
@ -67,7 +155,7 @@
</component> </component>
<component name="MetaFilesCheckinStateConfiguration" checkMetaFiles="false" /> <component name="MetaFilesCheckinStateConfiguration" checkMetaFiles="false" />
<component name="ProblemsViewState"> <component name="ProblemsViewState">
<option name="selectedTabId" value="Toolset" /> <option name="selectedTabId" value="SWEA" />
</component> </component>
<component name="ProjectColorInfo">{ <component name="ProjectColorInfo">{
&quot;customColor&quot;: &quot;&quot;, &quot;customColor&quot;: &quot;&quot;,
@ -81,57 +169,41 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent"><![CDATA[{ <component name="PropertiesComponent">{
"keyToString": { &quot;keyToString&quot;: {
".NET Project.PSCHelpdesk.Desktop ohne plugin.executor": "Run", &quot;.NET Project.PSCHelpdesk.Desktop ohne plugin.executor&quot;: &quot;Run&quot;,
".NET Project.PSCHelpdesk.Desktop.executor": "Run", &quot;.NET Project.PSCHelpdesk.Desktop.executor&quot;: &quot;Run&quot;,
"Publish to folder.Build HetznerServer Plugin Debug.executor": "Run", &quot;Publish to folder.Build HetznerServer Plugin Debug.executor&quot;: &quot;Run&quot;,
"Publish to folder.Copy Fastbill.executor": "Run", &quot;Publish to folder.Copy Fastbill.executor&quot;: &quot;Run&quot;,
"Publish to folder.Copy Hetzner Target.executor": "Run", &quot;Publish to folder.Copy Hetzner Target.executor&quot;: &quot;Run&quot;,
"Publish to folder.Copy Hetzner.executor": "Run", &quot;Publish to folder.Copy Hetzner.executor&quot;: &quot;Run&quot;,
"Publish to folder.Copy NextCloud Target.executor": "Run", &quot;Publish to folder.Copy NextCloud Target.executor&quot;: &quot;Run&quot;,
"Publish to folder.Copy NextCloud.executor": "Run", &quot;Publish to folder.Copy NextCloud.executor&quot;: &quot;Run&quot;,
"Publish to folder.Copy PrinshopCreator.executor": "Run", &quot;Publish to folder.Copy PrinshopCreator.executor&quot;: &quot;Run&quot;,
"Publish to folder.Publish HetznerServer to folder.executor": "Run", &quot;Publish to folder.Publish HetznerServer to folder.executor&quot;: &quot;Run&quot;,
"Publish to folder.Publish NextCloud to folder.executor": "Run", &quot;Publish to folder.Publish NextCloud to folder.executor&quot;: &quot;Run&quot;,
"Publish to folder.Publish Nextcloud to folder.executor": "Run", &quot;Publish to folder.Publish Nextcloud to folder.executor&quot;: &quot;Run&quot;,
"RunOnceActivity.ShowReadmeOnStart": "true", &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
"RunOnceActivity.git.unshallow": "true", &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
"XThreadsFramesViewSplitterKey": "0.4427131", &quot;XThreadsFramesViewSplitterKey&quot;: &quot;0.4427131&quot;,
"git-widget-placeholder": "master", &quot;git-widget-placeholder&quot;: &quot;master&quot;,
"ignore.virus.scanning.warn.message": "true", &quot;ignore.virus.scanning.warn.message&quot;: &quot;true&quot;,
"last_opened_file_path": "/home/thomas/RiderProjects/PSCHelpdesk/PSCHelpdesk/PSCHelpdesk.Desktop/bin/Debug/net9.0/plugins", &quot;last_opened_file_path&quot;: &quot;/home/thomas/RiderProjects/PSCHelpdesk/PSCHelpdesk/PSCHelpdesk.Desktop/bin/Debug/net9.0/plugins&quot;,
"node.js.detected.package.eslint": "true", &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
"node.js.detected.package.tslint": "true", &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
"node.js.selected.package.eslint": "(autodetect)", &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
"node.js.selected.package.tslint": "(autodetect)", &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
"nodejs_package_manager_path": "npm", &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
"settings.editor.selected.configurable": "preferences.pluginManager", &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
"vue.rearranger.settings.migration": "true" &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}, },
"keyToStringList": { &quot;keyToStringList&quot;: {
"com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File": [ &quot;com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File&quot;: [
"Shell Script" &quot;Shell Script&quot;
] ]
} }
}]]></component> }</component>
<component name="RunManager" selected=".NET Project.PSCHelpdesk.Desktop"> <component name="RunManager" selected=".NET Project.PSCHelpdesk.Desktop">
<configuration name="Copy Fastbill" type="DotNetFolderPublish" factoryName="Publish to folder">
<riderPublish configuration="Debug" platform="Any CPU" runtime="Portable" target_folder="$PROJECT_DIR$/_dist/fastbill" target_framework="net9.0" uuid_high="-7209100147811201171" uuid_low="-5152034027148450759" />
<method v="2" />
</configuration>
<configuration name="Copy Hetzner" type="DotNetFolderPublish" factoryName="Publish to folder">
<riderPublish configuration="Debug" platform="Any CPU" runtime="Portable" target_folder="$PROJECT_DIR$/_dist/hetzner" target_framework="net9.0" uuid_high="6134591891200954270" uuid_low="-7110083162272853959" />
<method v="2" />
</configuration>
<configuration name="Copy NextCloud" type="DotNetFolderPublish" factoryName="Publish to folder">
<riderPublish configuration="Debug" platform="Any CPU" runtime="Portable" target_folder="$PROJECT_DIR$/_dist/nextcloud" target_framework="net9.0" uuid_high="5491264484688088597" uuid_low="-7520256693357449726" />
<method v="2" />
</configuration>
<configuration name="Copy PrinshopCreator" type="DotNetFolderPublish" factoryName="Publish to folder">
<riderPublish configuration="Debug" platform="Any CPU" runtime="Portable" target_folder="$PROJECT_DIR$/_dist/printshopcreator" target_framework="net9.0" uuid_high="2845292288445532334" uuid_low="-6080808010956145315" />
<method v="2" />
</configuration>
<configuration name="PSCHelpdesk.Browser" type="DotNetProject" factoryName=".NET Project"> <configuration name="PSCHelpdesk.Browser" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="$USER_HOME$/.nuget/packages/microsoft.net.sdk.webassembly.pack/9.0.0-rc.2.24473.5/WasmAppHost/WasmAppHost.dll" /> <option name="EXE_PATH" value="$USER_HOME$/.nuget/packages/microsoft.net.sdk.webassembly.pack/9.0.0-rc.2.24473.5/WasmAppHost/WasmAppHost.dll" />
<option name="PROGRAM_PARAMETERS" value="--use-staticwebassets --runtime-config $PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Browser/bin/Debug/net9.0-browser/PSCHelpdesk.Browser.runtimeconfig.json" /> <option name="PROGRAM_PARAMETERS" value="--use-staticwebassets --runtime-config $PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Browser/bin/Debug/net9.0-browser/PSCHelpdesk.Browser.runtimeconfig.json" />
@ -176,21 +248,18 @@
<option name="USE_EXTERNAL_CONSOLE" value="0" /> <option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" /> <option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" /> <option name="RUNTIME_ARGUMENTS" value="" />
<option name="RUNTIME_TYPE" value="coreclr" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Desktop/PSCHelpdesk.Desktop.csproj" /> <option name="PROJECT_PATH" value="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Desktop/PSCHelpdesk.Desktop.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" /> <option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" /> <option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" /> <option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" /> <option name="PROJECT_KIND" value="Unloaded" />
<option name="PROJECT_TFM" value="net9.0" /> <option name="PROJECT_TFM" value="net9.0" />
<method v="2"> <method v="2">
<option name="Build" default="false" projectName="Nextcloud" projectPath="$PROJECT_DIR$/Nextcloud/Nextcloud.csproj" /> <option name="Build" default="false" projectName="Nextcloud" projectPath="$PROJECT_DIR$/Nextcloud/Nextcloud.csproj" />
<option name="Build" default="false" projectName="HetznerServer" projectPath="$PROJECT_DIR$/HetznerServer/HetznerServer.csproj" /> <option name="Build" default="false" projectName="HetznerServer" projectPath="$PROJECT_DIR$/HetznerServer/HetznerServer.csproj" />
<option name="Build" default="false" projectName="FastBill" projectPath="$PROJECT_DIR$/FastBill/FastBill.csproj" /> <option name="Build" default="false" projectName="FastBill" projectPath="$PROJECT_DIR$/FastBill/FastBill.csproj" />
<option name="Build" default="false" projectName="PrintshopCreator" projectPath="$PROJECT_DIR$/PrintshopCreator/PrintshopCreator.csproj" /> <option name="Build" default="false" projectName="PrintshopCreator" projectPath="$PROJECT_DIR$/PrintshopCreator/PrintshopCreator.csproj" />
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Copy Fastbill" run_configuration_type="DotNetFolderPublish" />
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Copy PrinshopCreator" run_configuration_type="DotNetFolderPublish" />
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Copy Hetzner" run_configuration_type="DotNetFolderPublish" />
<option name="RunConfigurationTask" enabled="true" run_configuration_name="Copy NextCloud" run_configuration_type="DotNetFolderPublish" />
<option name="Build" /> <option name="Build" />
</method> </method>
</configuration> </configuration>
@ -208,6 +277,7 @@
<option name="PROGRAM_PARAMETERS" value="" /> <option name="PROGRAM_PARAMETERS" value="" />
<option name="IS_PASS_PARENT_ENVS" value="false" /> <option name="IS_PASS_PARENT_ENVS" value="false" />
<option name="EXTRA_MLAUNCH_PARAMETERS" value="" /> <option name="EXTRA_MLAUNCH_PARAMETERS" value="" />
<option name="PLATFORM_TYPE" value="IOS" />
<method v="2" /> <method v="2" />
</configuration> </configuration>
<list> <list>
@ -216,10 +286,6 @@
<item itemvalue=".NET Project.PSCHelpdesk.Desktop ohne plugin" /> <item itemvalue=".NET Project.PSCHelpdesk.Desktop ohne plugin" />
<item itemvalue="Android.PSCHelpdesk.Android" /> <item itemvalue="Android.PSCHelpdesk.Android" />
<item itemvalue="iOS.PSCHelpdesk.iOS" /> <item itemvalue="iOS.PSCHelpdesk.iOS" />
<item itemvalue="Publish to folder.Copy NextCloud" />
<item itemvalue="Publish to folder.Copy Fastbill" />
<item itemvalue="Publish to folder.Copy PrinshopCreator" />
<item itemvalue="Publish to folder.Copy Hetzner" />
</list> </list>
</component> </component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
@ -266,6 +332,15 @@
<workItem from="1733213310388" duration="18514000" /> <workItem from="1733213310388" duration="18514000" />
<workItem from="1733247430633" duration="19286000" /> <workItem from="1733247430633" duration="19286000" />
<workItem from="1733729071487" duration="13363000" /> <workItem from="1733729071487" duration="13363000" />
<workItem from="1733994050134" duration="22961000" />
<workItem from="1734438868648" duration="332000" />
<workItem from="1734439262256" duration="655000" />
<workItem from="1734439996321" duration="85000" />
<workItem from="1734440291021" duration="16000" />
<workItem from="1734440327643" duration="505000" />
<workItem from="1734440840094" duration="1461000" />
<workItem from="1734512891958" duration="8348000" />
<workItem from="1734681339447" duration="16737000" />
</task> </task>
<task id="LOCAL-00001" summary="Backup"> <task id="LOCAL-00001" summary="Backup">
<option name="closed" value="true" /> <option name="closed" value="true" />
@ -315,7 +390,15 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1733341591476</updated> <updated>1733341591476</updated>
</task> </task>
<option name="localTasksCounter" value="7" /> <task id="LOCAL-00007" summary="Backup">
<option name="closed" value="true" />
<created>1734120730780</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1734120730780</updated>
</task>
<option name="localTasksCounter" value="8" />
<servers /> <servers />
</component> </component>
<component name="TypeScriptGeneratedFilesManager"> <component name="TypeScriptGeneratedFilesManager">

View File

@ -4,6 +4,7 @@
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View File

@ -1,5 +1,4 @@
using CommunityToolkit.Mvvm.DependencyInjection; using CommunityToolkit.Mvvm.DependencyInjection;
using PSCHelpdesk.Plugins.HetznerServer.Service;
using PSCHelpdesk.Plugins.HetznerServer.ViewModels; using PSCHelpdesk.Plugins.HetznerServer.ViewModels;
using PSCHelpdesk.Plugins.HetznerServer.Views; using PSCHelpdesk.Plugins.HetznerServer.Views;
using PSCHelpdesk.Shared.Menu; using PSCHelpdesk.Shared.Menu;
@ -32,11 +31,17 @@ public class HetznerServer : Contract
CommandParameter = new HetznerSettingsViewModel() CommandParameter = new HetznerSettingsViewModel()
}; };
settingsService.AddSetting(hetznerSettings); settingsService.AddSetting(hetznerSettings);
var checkmkSettings = new Shared.Setting.Item()
{
Header = "CheckMK",
CommandParameter = new CheckMKSettingsViewModel()
};
settingsService.AddSetting(checkmkSettings);
} }
public List<Type> LoadViews() public List<Type> LoadViews()
{ {
return [typeof(ServerView), typeof(HetznerSettingsView)]; return [typeof(ServerView), typeof(HetznerSettingsView), typeof(CheckMKSettingsView)];
} }
} }

View File

@ -5,6 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<RootNamespace>PSCHelpdesk.Plugins.HetznerServer</RootNamespace> <RootNamespace>PSCHelpdesk.Plugins.HetznerServer</RootNamespace>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
@ -12,30 +13,30 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" Private="false" /> <ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Avalonia.Controls" Private="false"> <Reference Include="Avalonia.Controls" >
<HintPath>..\..\..\.nuget\packages\avalonia\11.2.0\ref\net8.0\Avalonia.Controls.dll</HintPath> <HintPath>..\..\..\.nuget\packages\avalonia\11.2.0\ref\net8.0\Avalonia.Controls.dll</HintPath>
</Reference> </Reference>
<Reference Include="Avalonia.Controls.DataGrid" Private="false"> <Reference Include="Avalonia.Controls.DataGrid" >
<HintPath>..\..\..\.nuget\packages\avalonia.controls.datagrid\11.2.0\lib\net8.0\Avalonia.Controls.DataGrid.dll</HintPath> <HintPath>..\..\..\.nuget\packages\avalonia.controls.datagrid\11.2.0\lib\net8.0\Avalonia.Controls.DataGrid.dll</HintPath>
</Reference> </Reference>
<Reference Include="CommunityToolkit.Mvvm" Private="false"> <Reference Include="CommunityToolkit.Mvvm" >
<HintPath>..\..\..\.nuget\packages\communitytoolkit.mvvm\8.2.1\lib\net6.0\CommunityToolkit.Mvvm.dll</HintPath> <HintPath>..\..\..\.nuget\packages\communitytoolkit.mvvm\8.2.1\lib\net6.0\CommunityToolkit.Mvvm.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="11.2.0" Private="false" /> <PackageReference Include="Avalonia" Version="11.2.0" />
<PackageReference Include="Avalonia.ReactiveUI" Version="11.2.0" Private="false" /> <PackageReference Include="Avalonia.ReactiveUI" Version="11.2.0" />
<PackageReference Include="Avalonia.Xaml.Behaviors" Version="11.2.0" Private="false" /> <PackageReference Include="Avalonia.Xaml.Behaviors" Version="11.2.0" />
<PackageReference Include="Avalonia.Xaml.Interactions" Version="11.2.0" Private="false" /> <PackageReference Include="Avalonia.Xaml.Interactions" Version="11.2.0" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.2" /> <PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.2" />
<PackageReference Include="HetznerCloud.API" Version="1.1.9" Private="false" /> <PackageReference Include="HetznerCloud.API" Version="1.1.9" />
<PackageReference Include="Material.Icons.Avalonia" Version="2.1.10" /> <PackageReference Include="Material.Icons.Avalonia" Version="2.1.10" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Private="false" Version="8.0.1" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageReference Include="SSH.NET" Version="2024.1.0" /> <PackageReference Include="SSH.NET" Version="2024.1.0" />
</ItemGroup> </ItemGroup>
@ -43,4 +44,11 @@
<UpToDateCheckInput Remove="Controls\ProgressRing.axaml" /> <UpToDateCheckInput Remove="Controls\ProgressRing.axaml" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Compile Update="Views\CheckMKSettingsView.axaml.cs">
<DependentUpon>CheckMKSettingsView.axaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
</Project> </Project>

View File

@ -0,0 +1,13 @@
namespace PSCHelpdesk.Plugins.HetznerServer.Models;
public class CheckMKSettings
{
public string Username { get; set; }
public string Password { get; set; }
public CheckMKSettings()
{
Username = "";
Password = "";
}
}

View File

@ -12,8 +12,15 @@ namespace PSCHelpdesk.Plugins.HetznerServer.Models;
public class Server : ReactiveObject public class Server : ReactiveObject
{ {
private bool _isChecked; private List<Service> _services;
public List<Service> Services
{
get => _services;
set => this.RaiseAndSetIfChanged(ref _services, value);
}
private bool _isChecked;
public bool IsChecked public bool IsChecked
{ {
get => _isChecked; get => _isChecked;
@ -94,6 +101,14 @@ public class Server : ReactiveObject
set => this.RaiseAndSetIfChanged(ref _isGoodIcon, value); set => this.RaiseAndSetIfChanged(ref _isGoodIcon, value);
} }
private IImmutableSolidColorBrush? _serverStatus = Brushes.IndianRed;
public IImmutableSolidColorBrush? ServerStatus
{
get => _serverStatus;
set => this.RaiseAndSetIfChanged(ref _serverStatus, value);
}
private IImmutableSolidColorBrush? _isGoodColor = Brushes.Red; private IImmutableSolidColorBrush? _isGoodColor = Brushes.Red;
public IImmutableSolidColorBrush? IsGoodColor public IImmutableSolidColorBrush? IsGoodColor
@ -156,6 +171,7 @@ public class Server : ReactiveObject
Ipv6 = ipv6; Ipv6 = ipv6;
Domains = new List<Domain>(); Domains = new List<Domain>();
Plugins = new List<Plugin>(); Plugins = new List<Plugin>();
Services = new List<Service>();
Instance = new Instance(); Instance = new Instance();
} }

View File

@ -0,0 +1,27 @@
using ReactiveUI;
namespace PSCHelpdesk.Plugins.HetznerServer.Models;
public class Service : ReactiveObject
{
private string _serviceState;
private string _serviceDescription;
public Service(string serviceState, string serviceDescription)
{
ServiceState = serviceState;
ServiceDescription = serviceDescription;
}
public string ServiceDescription
{
get => _serviceDescription;
set => this.RaiseAndSetIfChanged(ref _serviceDescription, value);
}
public string ServiceState
{
get => _serviceState;
set => this.RaiseAndSetIfChanged(ref _serviceState, value);
}
}

View File

@ -0,0 +1,102 @@
using System.Collections.ObjectModel;
using System.Net.Http.Headers;
using Avalonia.Media;
using Avalonia.Threading;
using CommunityToolkit.Mvvm.DependencyInjection;
using DynamicData;
using DynamicData.Binding;
using HetznerCloudApi;
using Material.Icons;
using Newtonsoft.Json.Linq;
using PSCHelpdesk.Plugins.HetznerServer.Models;
using PSCHelpdesk.Shared.Service;
using PSCHelpdesk.Shared.Setting;
using PSCHelpdesk.Shared.Tasks;
using ReactiveUI;
using Renci.SshNet;
namespace PSCHelpdesk.Plugins.HetznerServer.Service;
public class CheckMKService: IServerService
{
private SettingsManager _settingsManager;
private readonly DispatcherTimer _reloadTimer = new DispatcherTimer();
private ServerService _server;
public CheckMKService(ServerService serverService)
{
_server = serverService;
_settingsManager = (SettingsManager)Ioc.Default.GetService<ISettingsManager>();
this._reloadTimer.Tick += (sender, args) =>
{
this.reloadServerStatus();
};
_reloadTimer.Interval = TimeSpan.FromMinutes(2);
_reloadTimer.Start();
}
private async Task reloadServerStatus()
{
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);
}
}
public void DoReScan(Server serv)
{
doScan(serv);
}
async private void doScan(Server serv)
{
}
}

View File

@ -77,9 +77,12 @@ public class ServerService: IServerService
_settingsManager.LoadPluginSettings("HetznerSettings", settings); _settingsManager.LoadPluginSettings("HetznerSettings", settings);
foreach (Server serv in SourceCache.Items) foreach (Server serv in SourceCache.Items)
{
if (serv.Status.Equals("running", StringComparison.OrdinalIgnoreCase))
{ {
doScan(serv); doScan(serv);
} }
}
await uiDispatcher.InvokeAsync(() => await uiDispatcher.InvokeAsync(() =>
{ {

View File

@ -0,0 +1,40 @@
using System.Collections.ObjectModel;
using Avalonia.Controls;
using CommunityToolkit.Mvvm.DependencyInjection;
using CommunityToolkit.Mvvm.Input;
using HetznerCloudApi;
using PSCHelpdesk.Plugins.HetznerServer.Models;
using PSCHelpdesk.Plugins.HetznerServer.Views;
using PSCHelpdesk.Shared.Service;
using PSCHelpdesk.Shared.Setting;
using PSCHelpdesk.Shared.ViewModels;
namespace PSCHelpdesk.Plugins.HetznerServer.ViewModels;
public partial class CheckMKSettingsViewModel : ViewModelBase, IViewModelBase
{
private string _username;
private string _password;
public CheckMKSettingsViewModel()
{
var settingsManager = (SettingsManager)Ioc.Default.GetService<ISettingsManager>();
var settings = new CheckMKSettings();
settingsManager.LoadPluginSettings("CheckMKSettings", settings);
Username = settings.Username;
Password = settings.Password;
}
public string Username
{
get => _username;
set => SetAndRaisePropertyChanged(ref _username, value);
}
public string Password
{
get => _password;
set => SetAndRaisePropertyChanged(ref _password, value);
}
}

View File

@ -39,6 +39,7 @@ public class Customers
public partial class ServerViewModel : ViewModelBase, IViewModelBase public partial class ServerViewModel : ViewModelBase, IViewModelBase
{ {
public readonly ServerService ServerService; public readonly ServerService ServerService;
public readonly CheckMKService CheckMKService;
public ReactiveCommand<SelectionChangedEventArgs, Unit> SelectionChanged { get; } public ReactiveCommand<SelectionChangedEventArgs, Unit> SelectionChanged { get; }
public ReactiveCommand<Unit, Unit> SaveServerSettings { get; } public ReactiveCommand<Unit, Unit> SaveServerSettings { get; }
@ -56,6 +57,7 @@ public partial class ServerViewModel : ViewModelBase, IViewModelBase
{ {
Title = "Server"; Title = "Server";
ServerService = new ServerService(); ServerService = new ServerService();
CheckMKService = new CheckMKService(ServerService);
SelectedServer = new Server(1,"","","","",""); SelectedServer = new Server(1,"","","","","");
SelectionChanged = ReactiveCommand.Create<SelectionChangedEventArgs>(selectionChanged); SelectionChanged = ReactiveCommand.Create<SelectionChangedEventArgs>(selectionChanged);
SaveServerSettings = ReactiveCommand.Create(saveServerSettings); SaveServerSettings = ReactiveCommand.Create(saveServerSettings);

View File

@ -0,0 +1,23 @@
<UserControl xmlns="https://github.com/avaloniaui"
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:vm="clr-namespace:PSCHelpdesk.Plugins.HetznerServer.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="PSCHelpdesk.Plugins.HetznerServer.Views.CheckMKSettingsView"
x:DataType="vm:CheckMKSettingsViewModel">
<Design.DataContext>
<vm:CheckMKSettingsViewModel></vm:CheckMKSettingsViewModel>
</Design.DataContext>
<StackPanel>
<TextBlock Margin="0 5" >Username</TextBlock>
<StackPanel Orientation="Horizontal" Spacing="1">
<TextBox Text="{Binding Username }" Width="400"></TextBox>
</StackPanel>
<TextBlock Margin="0 5" >Password</TextBlock>
<StackPanel Orientation="Horizontal" Spacing="1">
<TextBox Text="{Binding Password }" Width="400"></TextBox>
</StackPanel>
<Button Margin="0 5" Content="Save Settings" Click="SaveSettings_OnClick"></Button>
</StackPanel>
</UserControl>

View File

@ -0,0 +1,33 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using CommunityToolkit.Mvvm.DependencyInjection;
using PSCHelpdesk.Plugins.HetznerServer.Models;
using PSCHelpdesk.Plugins.HetznerServer.ViewModels;
using PSCHelpdesk.Shared.Service;
using PSCHelpdesk.Shared.Setting;
namespace PSCHelpdesk.Plugins.HetznerServer.Views;
public partial class CheckMKSettingsView : UserControl
{
private SettingsManager settingsManager;
private CheckMKSettings settings;
public CheckMKSettingsView()
{
InitializeComponent();
settingsManager = (SettingsManager)Ioc.Default.GetService<ISettingsManager>();
settings = new CheckMKSettings();
settingsManager.LoadPluginSettings("CheckMKSettings", settings);
}
private void SaveSettings_OnClick(object? sender, RoutedEventArgs e)
{
settings.Username = ((CheckMKSettingsViewModel)this.DataContext).Username;
settings.Password = ((CheckMKSettingsViewModel)this.DataContext).Password;
settingsManager.SavePluginSettings("CheckMKSettings", settings);
}
}

View File

@ -28,6 +28,27 @@
</ListBox> </ListBox>
</StackPanel> </StackPanel>
</TabItem> </TabItem>
<TabItem Header="Service Errors">
<StackPanel>
<ListBox ItemsSource="{Binding SelectedServer.Services}" Margin="0" Padding="0">
<ListBox.Styles>
<Style Selector="ListBoxItem">
<Setter Property="Padding" Value="0" />
</Style>
</ListBox.Styles>
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="1" Margin="0">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ServiceState}"></TextBlock>
<TextBlock Text="{Binding ServiceDescription}"></TextBlock>
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</TabItem>
<TabItem Header="Info"> <TabItem Header="Info">
<Grid ColumnDefinitions="Auto,*" RowDefinitions="*,*,*,*"> <Grid ColumnDefinitions="Auto,*" RowDefinitions="*,*,*,*">
<TextBlock Grid.Row="0" Grid.Column="0" Padding="0 6 6 0" Text="SftpUserName"></TextBlock> <TextBlock Grid.Row="0" Grid.Column="0" Padding="0 6 6 0" Text="SftpUserName"></TextBlock>

View File

@ -45,6 +45,9 @@
<Style Selector="DataGridCell.lastBackup"> <Style Selector="DataGridCell.lastBackup">
<Setter Property="Foreground" Value="{Binding BackupLastModified, Converter={StaticResource DateTimeConverter}}" /> <Setter Property="Foreground" Value="{Binding BackupLastModified, Converter={StaticResource DateTimeConverter}}" />
</Style> </Style>
<Style Selector="DataGridRow">
<Setter Property="Background" Value="{Binding ServerStatus}"/>
</Style>
</DataGrid.Styles> </DataGrid.Styles>
<Interaction.Behaviors> <Interaction.Behaviors>
<EventTriggerBehavior EventName="SelectionChanged"> <EventTriggerBehavior EventName="SelectionChanged">
@ -66,34 +69,21 @@
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTemplateColumn Header="Has Restart">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding IsRestartAlways}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Has Need Restart">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding HasNeedRestart}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="75" Header="Id" Binding="{Binding ServerId}"/> <DataGridTextColumn Width="75" Header="Id" Binding="{Binding ServerId}"/>
<DataGridTemplateColumn Header="Name"> <DataGridTemplateColumn Header="Name">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<TextBox HorizontalAlignment="Left" Text="{Binding Name}"/> <TextBox Text="{Binding Name}" HorizontalAlignment="Stretch"/>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>
<DataGridTextColumn Width="60" Header="Status" Binding="{Binding Status}" CellStyleClasses="status" /> <DataGridTextColumn Width="60" Header="Status" Binding="{Binding Status}" CellStyleClasses="status" />
<DataGridTextColumn Width="45" Header="Service Error" Binding="{Binding Services.Count}" />
<DataGridTextColumn Width="45" Header="Type" Binding="{Binding Type}" /> <DataGridTextColumn Width="45" Header="Type" Binding="{Binding Type}" />
<DataGridTemplateColumn Header="IpV4"> <DataGridTemplateColumn Header="IpV4">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<TextBox HorizontalAlignment="Left" Text="{Binding Ipv4}"/> <TextBox HorizontalAlignment="Stretch" Text="{Binding Ipv4}"/>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> </DataGridTemplateColumn>

View File

@ -4,28 +4,30 @@
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<RootNamespace>PSCHelpdesk.Plugins.Nextcloud</RootNamespace> <RootNamespace>PSCHelpdesk.Plugins.Nextcloud</RootNamespace>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="11.2.0" Private="false"> <PackageReference Include="Avalonia" Version="11.2.0">
</PackageReference> </PackageReference>
<PackageReference Include="Avalonia.ReactiveUI" Version="11.2.0" Private="false"> <PackageReference Include="Avalonia.ReactiveUI" Version="11.2.0">
</PackageReference> </PackageReference>
<PackageReference Include="Avalonia.Xaml.Behaviors" Version="11.2.0" Private="false"> <PackageReference Include="Avalonia.Xaml.Behaviors" Version="11.2.0">
</PackageReference> </PackageReference>
<PackageReference Include="Avalonia.Xaml.Interactivity" Version="11.2.0" Private="false"> <PackageReference Include="Avalonia.Xaml.Interactivity" Version="11.2.0">
</PackageReference> </PackageReference>
<PackageReference Include="Markdown.Avalonia" Version="11.0.2" /> <PackageReference Include="Markdown.Avalonia" Version="11.0.2" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" Private="false" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="RestSharp" Version="112.1.0" /> <PackageReference Include="RestSharp" Version="112.1.0">
</PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" Private="false" /> <ProjectReference Include="..\Shared\Shared.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -78,10 +78,12 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeType_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fbc57ab3db8ad1c2d647f4171d82a80762571212ac42bb1eac4ed63162acdc4ed_003FRuntimeType_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeType_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fbc57ab3db8ad1c2d647f4171d82a80762571212ac42bb1eac4ed63162acdc4ed_003FRuntimeType_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASafeFileHandle_002EUnix_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9cf5f68d759deefc91b9c48c5ac3dd27708bb7dc38d0c485661fff5ce15b82_003FSafeFileHandle_002EUnix_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASafeFileHandle_002EUnix_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9cf5f68d759deefc91b9c48c5ac3dd27708bb7dc38d0c485661fff5ce15b82_003FSafeFileHandle_002EUnix_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASelectMany_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff93d3944f37777fd1f922d0d91e96fb77c2f83024101cb4b92f8d9b68080da_003FSelectMany_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASelectMany_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff93d3944f37777fd1f922d0d91e96fb77c2f83024101cb4b92f8d9b68080da_003FSelectMany_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServer_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F95e899f2b13d4189874af98ec00443321e400_003F2d_003F9358e780_003FServer_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceCollection_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F33fa97197c7d5dc2e649bd1e13ca25ad6fd7928c626fa7796267b9434bd4ba_003FServiceCollection_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceCollection_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F33fa97197c7d5dc2e649bd1e13ca25ad6fd7928c626fa7796267b9434bd4ba_003FServiceCollection_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceDescriptor_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff53745e7f6e85d65317047eeae9af151fe9aca1cb284d27e5c83962a50be46_003FServiceDescriptor_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceDescriptor_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff53745e7f6e85d65317047eeae9af151fe9aca1cb284d27e5c83962a50be46_003FServiceDescriptor_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceProvider_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9d4f4ac7db6d2c5d183ab2d92602280ed4349fd6e6a1b6313546b3d01fdab5_003FServiceProvider_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceProvider_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9d4f4ac7db6d2c5d183ab2d92602280ed4349fd6e6a1b6313546b3d01fdab5_003FServiceProvider_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceProvider_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9d4f4ac7db6d2c5d183ab2d92602280ed4349fd6e6a1b6313546b3d01fdab5_003FServiceProvider_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AServiceProvider_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F9d4f4ac7db6d2c5d183ab2d92602280ed4349fd6e6a1b6313546b3d01fdab5_003FServiceProvider_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASourceCache_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F4fa4bd31d579a35ede6b12dc81943b59b4daa8c40ef828bc38ef631b26f8_003FSourceCache_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AStackDockGroup_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8b4806d72c8e4cc3b55824ab34018d6a31600_003F9a_003Fc689be08_003FStackDockGroup_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AStackDockGroup_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F8b4806d72c8e4cc3b55824ab34018d6a31600_003F9a_003Fc689be08_003FStackDockGroup_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AStackFrameIterator_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F2854ce6d56c18d0d837d3a3ef9c4f2c7c77691fa3528c8394986ac7ce7719_003FStackFrameIterator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AStackFrameIterator_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F2854ce6d56c18d0d837d3a3ef9c4f2c7c77691fa3528c8394986ac7ce7719_003FStackFrameIterator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AString_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fdad3f0ebff0dd1f8e1d244c3c44c649be8228d5e25fb37ef1de7f3c0e261c_003FString_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AString_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fdad3f0ebff0dd1f8e1d244c3c44c649be8228d5e25fb37ef1de7f3c0e261c_003FString_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>

View File

@ -37,18 +37,18 @@
<ItemGroup> <ItemGroup>
<MySourceFiles Include=" <MySourceFiles Include="
$(SolutionDir)\_dist\nextcloud\Nextcloud.dll; $(SolutionDir)NextCloud\bin\$(Configuration)\net9.0\Nextcloud.dll;
$(SolutionDir)\_dist\nextcloud\RestSharp.dll; $(SolutionDir)NextCloud\bin\$(Configuration)\net9.0\RestSharp.dll;
$(SolutionDir)\_dist\nextcloud\Markdown.Avalonia*; $(SolutionDir)NextCloud\bin\$(Configuration)\net9.0\Markdown.Avalonia*;
$(SolutionDir)\_dist\nextcloud\ColorTextBlock.Avalonia*; $(SolutionDir)NextCloud\bin\$(Configuration)\net9.0\ColorTextBlock.Avalonia*;
$(SolutionDir)\_dist\nextcloud\AvaloniaEdit*; $(SolutionDir)NextCloud\bin\$(Configuration)\net9.0\AvaloniaEdit*;
$(SolutionDir)\_dist\nextcloud\HtmlAgilityPack*; $(SolutionDir)NextCloud\bin\$(Configuration)\net9.0\HtmlAgilityPack*;
$(SolutionDir)\_dist\nextcloud\Avalonia.Svg*; $(SolutionDir)NextCloud\bin\$(Configuration)\net9.0\Avalonia.Svg*;
$(SolutionDir)\_dist\hetzner\HetznerServer.dll; $(SolutionDir)HetznerServer\bin\$(Configuration)\net9.0\HetznerServer.dll;
$(SolutionDir)\_dist\hetzner\HetznerCloudApi.dll; $(SolutionDir)HetznerServer\bin\$(Configuration)\net9.0\HetznerCloudApi.dll;
$(SolutionDir)\_dist\hetzner\Renci.SshNet.dll; $(SolutionDir)HetznerServer\bin\$(Configuration)\net9.0\Renci.SshNet.dll;
$(SolutionDir)\_dist\fastbill\FastBill.dll; $(SolutionDir)FastBill\bin\$(Configuration)\net9.0\FastBill.dll;
$(SolutionDir)\_dist\printshopcreator\PrintshopCreator.dll; $(SolutionDir)PrintshopCreator\bin\$(Configuration)\net9.0\PrintshopCreator.dll;
"/> "/>
</ItemGroup> </ItemGroup>

View File

@ -54,10 +54,4 @@
<ItemGroup> <ItemGroup>
<AdditionalFiles Include="Controls\ProgressRing.axaml" /> <AdditionalFiles Include="Controls\ProgressRing.axaml" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Converter\" />
<Folder Include="Factory\" />
<Folder Include="Model\" />
</ItemGroup>
</Project> </Project>

View File

@ -4,6 +4,7 @@
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,721 +0,0 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v9.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v9.0": {
"HetznerServer/1.0.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.ReactiveUI": "11.2.0",
"Avalonia.Xaml.Behaviors": "11.2.0",
"Avalonia.Xaml.Interactions": "11.2.0",
"CommunityToolkit.Mvvm": "8.3.2",
"HetznerCloud.API": "1.1.9",
"Material.Icons.Avalonia": "2.1.10",
"Microsoft.Extensions.DependencyInjection": "8.0.1",
"SSH.NET": "2024.1.0",
"Shared": "1.0.0"
},
"runtime": {
"HetznerServer.dll": {}
}
},
"Avalonia/11.2.0": {
"dependencies": {
"Avalonia.BuildServices": "0.0.29",
"Avalonia.Remote.Protocol": "11.2.0",
"MicroCom.Runtime": "0.11.0"
},
"runtime": {
"lib/net8.0/Avalonia.Base.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.Controls.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.DesignerSupport.dll": {
"assemblyVersion": "0.7.0.0",
"fileVersion": "0.7.0.0"
},
"lib/net8.0/Avalonia.Dialogs.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.Markup.Xaml.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.Markup.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.Metal.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.MicroCom.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.OpenGL.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.Vulkan.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
},
"lib/net8.0/Avalonia.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.BuildServices/0.0.29": {},
"Avalonia.Controls.ProportionalStackPanel/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.Controls.ProportionalStackPanel.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Controls.Recycling/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Controls.Recycling.Model": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.Controls.Recycling.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Controls.Recycling.Model/11.2.0": {
"runtime": {
"lib/net8.0/Avalonia.Controls.Recycling.Model.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.MarkupExtension/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.MarkupExtension.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.ReactiveUI/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"ReactiveUI": "20.1.1",
"System.Reactive": "6.0.1"
},
"runtime": {
"lib/net8.0/Avalonia.ReactiveUI.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Remote.Protocol/11.2.0": {
"runtime": {
"lib/net8.0/Avalonia.Remote.Protocol.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Xaml.Behaviors/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Xaml.Interactions": "11.2.0",
"Avalonia.Xaml.Interactions.Custom": "11.2.0",
"Avalonia.Xaml.Interactions.DragAndDrop": "11.2.0",
"Avalonia.Xaml.Interactions.Draggable": "11.2.0",
"Avalonia.Xaml.Interactions.Events": "11.2.0",
"Avalonia.Xaml.Interactions.Responsive": "11.2.0",
"Avalonia.Xaml.Interactivity": "11.2.0"
}
},
"Avalonia.Xaml.Interactions/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Xaml.Interactivity": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.Xaml.Interactions.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Xaml.Interactions.Custom/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Xaml.Interactivity": "11.2.0",
"System.Reactive": "6.0.1"
},
"runtime": {
"lib/net8.0/Avalonia.Xaml.Interactions.Custom.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Xaml.Interactions.DragAndDrop/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Xaml.Interactivity": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.Xaml.Interactions.DragAndDrop.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Xaml.Interactions.Draggable/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Xaml.Interactivity": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.Xaml.Interactions.Draggable.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Xaml.Interactions.Events/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Xaml.Interactivity": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.Xaml.Interactions.Events.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Xaml.Interactions.Responsive/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Xaml.Interactivity": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.Xaml.Interactions.Responsive.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Avalonia.Xaml.Interactivity/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0"
},
"runtime": {
"lib/net8.0/Avalonia.Xaml.Interactivity.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"CommunityToolkit.Mvvm/8.3.2": {
"runtime": {
"lib/net8.0/CommunityToolkit.Mvvm.dll": {
"assemblyVersion": "8.3.0.0",
"fileVersion": "8.3.2.1"
}
}
},
"Dock.Avalonia/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Avalonia.Controls.ProportionalStackPanel": "11.2.0",
"Avalonia.Controls.Recycling": "11.2.0",
"Avalonia.MarkupExtension": "11.2.0",
"Dock.Model": "11.2.0",
"Dock.Settings": "11.2.0"
},
"runtime": {
"lib/net8.0/Dock.Avalonia.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Dock.Model/11.2.0": {
"dependencies": {
"Avalonia.Controls.Recycling.Model": "11.2.0"
},
"runtime": {
"lib/net8.0/Dock.Model.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Dock.Model.Avalonia/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Dock.Avalonia": "11.2.0",
"Dock.Model": "11.2.0",
"Dock.Settings": "11.2.0",
"System.Text.Json": "7.0.0"
},
"runtime": {
"lib/net8.0/Dock.Model.Avalonia.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Dock.Model.Mvvm/11.2.0": {
"dependencies": {
"CommunityToolkit.Mvvm": "8.3.2",
"Dock.Model": "11.2.0"
},
"runtime": {
"lib/net8.0/Dock.Model.Mvvm.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Dock.Serializer/11.2.0": {
"dependencies": {
"Dock.Model": "11.2.0",
"Newtonsoft.Json": "13.0.3"
},
"runtime": {
"lib/net8.0/Dock.Serializer.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"Dock.Settings/11.2.0": {
"dependencies": {
"Avalonia": "11.2.0",
"Dock.Model": "11.2.0"
},
"runtime": {
"lib/net8.0/Dock.Settings.dll": {
"assemblyVersion": "11.2.0.0",
"fileVersion": "11.2.0.0"
}
}
},
"DynamicData/8.4.1": {
"dependencies": {
"System.Reactive": "6.0.1"
},
"runtime": {
"lib/net8.0/DynamicData.dll": {
"assemblyVersion": "8.4.0.0",
"fileVersion": "8.4.1.20756"
}
}
},
"HetznerCloud.API/1.1.9": {
"dependencies": {
"Newtonsoft.Json": "13.0.3"
},
"runtime": {
"lib/netstandard2.0/HetznerCloudApi.dll": {
"assemblyVersion": "1.1.9.0",
"fileVersion": "1.1.9.0"
}
}
},
"Material.Icons/2.1.10": {
"runtime": {
"lib/netstandard2.0/Material.Icons.dll": {
"assemblyVersion": "2.1.10.0",
"fileVersion": "2.1.10.0"
}
}
},
"Material.Icons.Avalonia/2.1.10": {
"dependencies": {
"Avalonia": "11.2.0",
"Material.Icons": "2.1.10"
},
"runtime": {
"lib/netstandard2.0/Material.Icons.Avalonia.dll": {
"assemblyVersion": "2.1.10.0",
"fileVersion": "2.1.10.0"
}
}
},
"MicroCom.Runtime/0.11.0": {
"runtime": {
"lib/net5.0/MicroCom.Runtime.dll": {
"assemblyVersion": "0.11.0.0",
"fileVersion": "0.11.0.0"
}
}
},
"Microsoft.Extensions.DependencyInjection/8.0.1": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.1024.46610"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "8.0.0.0",
"fileVersion": "8.0.1024.46610"
}
}
},
"Newtonsoft.Json/13.0.3": {
"runtime": {
"lib/net6.0/Newtonsoft.Json.dll": {
"assemblyVersion": "13.0.0.0",
"fileVersion": "13.0.3.27908"
}
}
},
"ReactiveUI/20.1.1": {
"dependencies": {
"DynamicData": "8.4.1",
"Splat": "15.1.1",
"System.ComponentModel.Annotations": "5.0.0"
},
"runtime": {
"lib/net8.0/ReactiveUI.dll": {
"assemblyVersion": "20.1.0.0",
"fileVersion": "20.1.1.46356"
}
}
},
"Splat/15.1.1": {
"runtime": {
"lib/net8.0/Splat.dll": {
"assemblyVersion": "15.1.0.0",
"fileVersion": "15.1.1.17670"
}
}
},
"SSH.NET/2024.1.0": {
"runtime": {
"lib/net8.0/Renci.SshNet.dll": {
"assemblyVersion": "2024.1.0.0",
"fileVersion": "2024.1.0.0"
}
}
},
"System.ComponentModel.Annotations/5.0.0": {},
"System.Reactive/6.0.1": {
"runtime": {
"lib/net6.0/System.Reactive.dll": {
"assemblyVersion": "6.0.0.0",
"fileVersion": "6.0.1.7420"
}
}
},
"System.Text.Encodings.Web/7.0.0": {},
"System.Text.Json/7.0.0": {
"dependencies": {
"System.Text.Encodings.Web": "7.0.0"
}
}
}
},
"libraries": {
"HetznerServer/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Avalonia/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dM5GvrBRNtxPDypOQ9TnUEx3zd5CmCkXUQX/kd2Ged2iqxHuJtipZcWiS5WtFfprlHa/J8ki4+0+jeawC0VtCA==",
"path": "avalonia/11.2.0",
"hashPath": "avalonia.11.2.0.nupkg.sha512"
},
"Avalonia.BuildServices/0.0.29": {
"type": "package",
"serviceable": true,
"sha512": "sha512-U4eJLQdoDNHXtEba7MZUCwrBErBTxFp6sUewXBOdAhU0Kwzwaa/EKFcYm8kpcysjzKtfB4S0S9n0uxKZFz/ikw==",
"path": "avalonia.buildservices/0.0.29",
"hashPath": "avalonia.buildservices.0.0.29.nupkg.sha512"
},
"Avalonia.Controls.ProportionalStackPanel/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-MV3PBPfqDEhZz9m3NSewhat8EknKzs7HNedlPhYGYnTMtvRKcXqhoygjh0GiBIV8As5E7BB6AyzFyZ6IX3JYOg==",
"path": "avalonia.controls.proportionalstackpanel/11.2.0",
"hashPath": "avalonia.controls.proportionalstackpanel.11.2.0.nupkg.sha512"
},
"Avalonia.Controls.Recycling/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZgSzvZcXoWx5A9V32X9Mm7Azaq+BTqzVY0ZE7/Ve87kedGo/jlxN4r3nDvjxNf9L0shkuQpHCHdc/9SaRBldvw==",
"path": "avalonia.controls.recycling/11.2.0",
"hashPath": "avalonia.controls.recycling.11.2.0.nupkg.sha512"
},
"Avalonia.Controls.Recycling.Model/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-QSvLVBhBWGZvmX4dZu5gNaTHfOkh+CtwT2fvM1WnroG2zKdpev00M3U+/x+o9wuWR+FDFodqfIsDHU/s3w6Q1A==",
"path": "avalonia.controls.recycling.model/11.2.0",
"hashPath": "avalonia.controls.recycling.model.11.2.0.nupkg.sha512"
},
"Avalonia.MarkupExtension/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mt18kHbzB0L5UGf70NT9CJDDudIaWG1LSjBWw1cH92CrZue04y7kmYtYC7fr8TSzbu1OvNcda9nanNJA0ryRCw==",
"path": "avalonia.markupextension/11.2.0",
"hashPath": "avalonia.markupextension.11.2.0.nupkg.sha512"
},
"Avalonia.ReactiveUI/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xecP1P3G7MzkXrwRIVmsfpQ8ofsS9XK3H4YXtyH+dZvqhXc/emsRGFfrtjL8TBidnE7JCLYP9QF7Z3n7bvMYSw==",
"path": "avalonia.reactiveui/11.2.0",
"hashPath": "avalonia.reactiveui.11.2.0.nupkg.sha512"
},
"Avalonia.Remote.Protocol/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dt/YyfLV+WG+jrqwBIthL8UOX9Jmn1AQi9P3vrXyYrWpNJREYz7mEGTwPau5jNOTN2scitJ3fbxrzPO8yoAX0A==",
"path": "avalonia.remote.protocol/11.2.0",
"hashPath": "avalonia.remote.protocol.11.2.0.nupkg.sha512"
},
"Avalonia.Xaml.Behaviors/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ixv49B87zUEv940uutXtBL4qHO+tj5JbDsGBq7bbe8rFYkyv4X92QAR/jEmb/jIGZzflL0z4lQ6F33849U0EtQ==",
"path": "avalonia.xaml.behaviors/11.2.0",
"hashPath": "avalonia.xaml.behaviors.11.2.0.nupkg.sha512"
},
"Avalonia.Xaml.Interactions/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-l61PpHzHcRvUAO/WfSPYC3U0/v2jN5gPyovcpKqrJAsneJzAHOzdDhIK3jBaydp0Q0KXQmEoDRc66lhIeG+pqw==",
"path": "avalonia.xaml.interactions/11.2.0",
"hashPath": "avalonia.xaml.interactions.11.2.0.nupkg.sha512"
},
"Avalonia.Xaml.Interactions.Custom/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-F16mZB5mLYP38gehqEmMOHG4qRVxokoDiJP3vpiqJzMVFbw8V0Nx7dI5ogs2IMnVwB47+5bUoqt8angUyrwgZA==",
"path": "avalonia.xaml.interactions.custom/11.2.0",
"hashPath": "avalonia.xaml.interactions.custom.11.2.0.nupkg.sha512"
},
"Avalonia.Xaml.Interactions.DragAndDrop/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1FsJ9zAFNk1KtB0JTzW6wfUdoCGAc5Jvf24zrIyl27a534EWEbm8SQPqXC1ij7vzVslCNUMC4yQAh6vuQpsryA==",
"path": "avalonia.xaml.interactions.draganddrop/11.2.0",
"hashPath": "avalonia.xaml.interactions.draganddrop.11.2.0.nupkg.sha512"
},
"Avalonia.Xaml.Interactions.Draggable/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BcebqkK/4Ao+hAWwl+b4Zzl9PHYIRrfP5Y7kxEM4Ah2gq7Fnp9CyqkGfbFB3gxVsTvnsGSAqKRH46ircA4autg==",
"path": "avalonia.xaml.interactions.draggable/11.2.0",
"hashPath": "avalonia.xaml.interactions.draggable.11.2.0.nupkg.sha512"
},
"Avalonia.Xaml.Interactions.Events/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bd1D11/rhXx7VNfzxIbYHtZ7UHB6XjyJfTYeFFGtEQbmCIp+Kp68vOgEL9frO7OJxAIEDx+yZsQzzglBpP0/vA==",
"path": "avalonia.xaml.interactions.events/11.2.0",
"hashPath": "avalonia.xaml.interactions.events.11.2.0.nupkg.sha512"
},
"Avalonia.Xaml.Interactions.Responsive/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-nWn8CaGxC5sdu1QzOKFQSvXNTXFiCWGdOE2LZabsXrgX139LuqQ7QJY8+OSm5FUc3x2s0Ajcx0NkvRw9w3s1Ag==",
"path": "avalonia.xaml.interactions.responsive/11.2.0",
"hashPath": "avalonia.xaml.interactions.responsive.11.2.0.nupkg.sha512"
},
"Avalonia.Xaml.Interactivity/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-FZaip8lyA+3RcNyDUzOjXH4Cbk2J0kIX47HBRJh39xCf2lyTNGEcWGRBjVUAnSo3MYHQnqI5DtaRw09b0gACaA==",
"path": "avalonia.xaml.interactivity/11.2.0",
"hashPath": "avalonia.xaml.interactivity.11.2.0.nupkg.sha512"
},
"CommunityToolkit.Mvvm/8.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-m8EolE1A0Updj68WTsZSGI6VWb6mUqHPh7QFo0kt7+JPhYMNXRS1ch8TS/oITAdcxTLrwMOp3ku1KjeG1/Zdpg==",
"path": "communitytoolkit.mvvm/8.3.2",
"hashPath": "communitytoolkit.mvvm.8.3.2.nupkg.sha512"
},
"Dock.Avalonia/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3Y214kBlebgk0dLO2vetkQe5qDUBl0hZ8PLpZKiE9W3oAXDGOMjWQ5kLB+Nd8k9mto9NE75BCrtaTYjRwGG53g==",
"path": "dock.avalonia/11.2.0",
"hashPath": "dock.avalonia.11.2.0.nupkg.sha512"
},
"Dock.Model/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-vvgwgCr3IXq3LQQTXiaEeoWPkze31HJxTdEWw8cv84VECHIgH4TiPN1l3P+6u8fKT+4V8cgC1rD8Z4nHUQFkcA==",
"path": "dock.model/11.2.0",
"hashPath": "dock.model.11.2.0.nupkg.sha512"
},
"Dock.Model.Avalonia/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-34AspcVs0qIP4QG792hKDEMgL23w80qLYo3jkl1SFx2umjmYx1xDLykETNt3kNNTQcL+dC3KtG9bfb2ZJyQ8Yw==",
"path": "dock.model.avalonia/11.2.0",
"hashPath": "dock.model.avalonia.11.2.0.nupkg.sha512"
},
"Dock.Model.Mvvm/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XbE5W4Dm+YcN5xfKW3V9NyHNiwev3WYlmWdskx5sO2oFMUuVizyWvwz6JyyqjXadI86tVxi+a9DlsyuPkHCNuA==",
"path": "dock.model.mvvm/11.2.0",
"hashPath": "dock.model.mvvm.11.2.0.nupkg.sha512"
},
"Dock.Serializer/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uqWzINFywxWDMPtaR0XLpSVLx57fr3Uz8AZKnzej6aABZYZcXTTEvmBea4XoySURpX41laIs08fi+jqKzwaBCw==",
"path": "dock.serializer/11.2.0",
"hashPath": "dock.serializer.11.2.0.nupkg.sha512"
},
"Dock.Settings/11.2.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-gsifdPpUSdtTkqpUeLm9/0iBf/SfnGE7jAG8sNCeIi9ApPyJqJUIISGYTpYvQ7s/aOhHvxS2S7lKTffsstRDSQ==",
"path": "dock.settings/11.2.0",
"hashPath": "dock.settings.11.2.0.nupkg.sha512"
},
"DynamicData/8.4.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Mn1+fU/jqxgONEJq8KLQPGWEi7g/hUVTbjZyn4QM0sWWDAVOHPO9WjXWORSykwdfg/6S3GM15qsfz+2EvO+QAQ==",
"path": "dynamicdata/8.4.1",
"hashPath": "dynamicdata.8.4.1.nupkg.sha512"
},
"HetznerCloud.API/1.1.9": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zM/SY9EQtmMCDA+30Fgy2FcaPRcbuSh9b0X3l2B582Klm51oiEtudsSnBZpx1Gl1K6QOKc9wHyP/X/eAR8JhTQ==",
"path": "hetznercloud.api/1.1.9",
"hashPath": "hetznercloud.api.1.1.9.nupkg.sha512"
},
"Material.Icons/2.1.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-nQnLAoVb9lgxWd4OtDADPVzBxERB9UYQd0UWcrqjg0NKFf8oPMuDM2kkxpBKe/Wm6Ayx3C/t3j2+8R1Nscg0Kw==",
"path": "material.icons/2.1.10",
"hashPath": "material.icons.2.1.10.nupkg.sha512"
},
"Material.Icons.Avalonia/2.1.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dclTtNbnoLonYK/YI2vgYvOmLeqw08xHxL+ExOSGZEMJKt6k3F6SDmJ41tByOxgXAd+nIDh8V9FqC0FQSEp/CQ==",
"path": "material.icons.avalonia/2.1.10",
"hashPath": "material.icons.avalonia.2.1.10.nupkg.sha512"
},
"MicroCom.Runtime/0.11.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-MEnrZ3UIiH40hjzMDsxrTyi8dtqB5ziv3iBeeU4bXsL/7NLSal9F1lZKpK+tfBRnUoDSdtcW3KufE4yhATOMCA==",
"path": "microcom.runtime/0.11.0",
"hashPath": "microcom.runtime.0.11.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/8.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==",
"path": "microsoft.extensions.dependencyinjection/8.0.1",
"hashPath": "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==",
"path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512"
},
"Newtonsoft.Json/13.0.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
"path": "newtonsoft.json/13.0.3",
"hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
},
"ReactiveUI/20.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-9hNPknWjijnaSWs6auypoXqUptPZcRpUypF+cf1zD50fgW+SEoQda502N3fVZ2eWPcaiUad+z6GaLwOWmUVHNw==",
"path": "reactiveui/20.1.1",
"hashPath": "reactiveui.20.1.1.nupkg.sha512"
},
"Splat/15.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-RHDTdF90FwVbRia2cmuIzkiVoETqnXSB2dDBBi/I35HWXqv4OKGqoMcfcd6obMvO2OmmY5PjU1M62K8LkJafAA==",
"path": "splat/15.1.1",
"hashPath": "splat.15.1.1.nupkg.sha512"
},
"SSH.NET/2024.1.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-pyOea9czgC+OwMoetuWtMuwRebOyskKkqTZtODgyEZ5K6JwV+Hh/GFiyYubl93YnEvmvNZeuyWyUDsb3LvBDYA==",
"path": "ssh.net/2024.1.0",
"hashPath": "ssh.net.2024.1.0.nupkg.sha512"
},
"System.ComponentModel.Annotations/5.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==",
"path": "system.componentmodel.annotations/5.0.0",
"hashPath": "system.componentmodel.annotations.5.0.0.nupkg.sha512"
},
"System.Reactive/6.0.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rHaWtKDwCi9qJ3ObKo8LHPMuuwv33YbmQi7TcUK1C264V3MFnOr5Im7QgCTdLniztP3GJyeiSg5x8NqYJFqRmg==",
"path": "system.reactive/6.0.1",
"hashPath": "system.reactive.6.0.1.nupkg.sha512"
},
"System.Text.Encodings.Web/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==",
"path": "system.text.encodings.web/7.0.0",
"hashPath": "system.text.encodings.web.7.0.0.nupkg.sha512"
},
"System.Text.Json/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==",
"path": "system.text.json/7.0.0",
"hashPath": "system.text.json.7.0.0.nupkg.sha512"
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.