This commit is contained in:
Thomas Peterson 2024-11-11 19:08:09 +01:00
parent 5597446e95
commit f30d02888e
21 changed files with 368 additions and 69 deletions

View File

@ -0,0 +1 @@
PSCHelpdesk

View File

@ -11,25 +11,23 @@
</component> </component>
<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/avalonia.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.PSCHelpdesk/.idea/avalonia.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$/.idea/.idea.PSCHelpdesk/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.PSCHelpdesk/.idea/workspace.xml" 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/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/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$/Nextcloud/Models/Settings.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Models/Settings.cs" 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$/Nextcloud/Nextcloud.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Nextcloud.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml.cs" beforeDir="false" afterPath="$PROJECT_DIR$/HetznerServer/Views/ServerView.axaml.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Nextcloud/Nextcloud.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Nextcloud.csproj" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Nextcloud/Nextcloud.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Nextcloud.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Nextcloud/ViewModels/NextcloudSettingsViewModel.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/ViewModels/NextcloudSettingsViewModel.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Nextcloud/ViewModels/NotesViewModel.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/ViewModels/NotesViewModel.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Nextcloud/Views/NextcloudSettingsView.axaml" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Views/NextcloudSettingsView.axaml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Nextcloud/Views/NextcloudSettingsView.axaml.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Views/NextcloudSettingsView.axaml.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Nextcloud/Views/NotesView.axaml" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Views/NotesView.axaml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Nextcloud/Views/NotesView.axaml.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Nextcloud/Views/NotesView.axaml.cs" 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$/PSCHelpdesk.sln.DotSettings.user" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk.sln.DotSettings.user" afterDir="false" />
<change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/App.axaml" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/App.axaml" 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$/PSCHelpdesk/PSCHelpdesk/PSCHelpdesk.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/PSCHelpdesk.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Services/PluginService.cs" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Services/PluginService.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Services/PluginService.cs" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Services/PluginService.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Startup.cs" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Startup.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Views/MainWindow.axaml.cs" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Views/MainWindow.axaml.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/ViewLocator.cs" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/ViewLocator.cs" afterDir="false" /> <change beforePath="$PROJECT_DIR$/Vendor/Prise/AssemblyScanning/DefaultAssemblyScanner.cs" beforeDir="false" afterPath="$PROJECT_DIR$/Vendor/Prise/AssemblyScanning/DefaultAssemblyScanner.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/ViewModels/MainWindowViewModel.cs" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/ViewModels/MainWindowViewModel.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Views/MainWindow.axaml" beforeDir="false" afterPath="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk/Views/MainWindow.axaml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Shared/Shared.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/Shared/Shared.csproj" afterDir="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" />
@ -43,15 +41,13 @@
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component> </component>
<component name="HighlightingSettingsPerFile"> <component name="HighlightingSettingsPerFile">
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/667004c0a83e47158c9865f6d54f01d91ac00/59/bf99e13a/IPluginLoader.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/27be5d106a789638721745a2a46f9cb0f7a39905117d644638b6e0d56261be/ReplaySubject.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/27be5d106a789638721745a2a46f9cb0f7a39905117d644638b6e0d56261be/ReplaySubject.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/2e6883f773fb7c69a15db509adac9a0c068e4ca54fa119e835fd2324311c3b/Ioc.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/2e6883f773fb7c69a15db509adac9a0c068e4ca54fa119e835fd2324311c3b/Ioc.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/819105751cb46128114fa4bd3d06a3c14edf957b59ea6fc88b56a13cd93/AvaloniaProperty.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/443ce614ff11fd4152a3c735dec9ef388c537ef8ea9c24e0f018f1bd619e85/JObject.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/823a55a44235a82bb5b699f3503a8ea8aaed43d77afde74a37843abbf1e43/ObservableObject.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/9c351d1cc59a183483a88f5532e1891b7ba62d3717a56fe054af25451258bfaf/ObservableCacheEx.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/9d4f4ac7db6d2c5d183ab2d92602280ed4349fd6e6a1b6313546b3d01fdab5/ServiceProvider.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/9d4f4ac7db6d2c5d183ab2d92602280ed4349fd6e6a1b6313546b3d01fdab5/ServiceProvider.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/a24e12ad3c769dda2069974789f3b97e5250dcb2392b867444b835b79199ff5/CancellationTokenSource.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/c7102cd0ffb8973777e61b1942c3fffac7e14016a511d055c3adf73ff91748/ThrowHelper.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/d5f9ed2178f3d3dcf1fd45e7604d8217cd25a16edff8d7dc27769ff7c958e6/RelayCommand{T}.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/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs" root0="FORCE_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" />
@ -59,7 +55,7 @@
<setting file="file://$PROJECT_DIR$/Shared/IconPack/Icons/PackIconMaterialDataFactory.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/Shared/IconPack/Icons/PackIconMaterialDataFactory.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Shared/IconPack/Icons/PackIconMaterialKind.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/Shared/IconPack/Icons/PackIconMaterialKind.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Vendor/Prise/AssemblyScanning/DefaultAssemblyResolver.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/Vendor/Prise/AssemblyScanning/DefaultAssemblyResolver.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Vendor/Prise/DefaultPluginLoader.cs" root0="SKIP_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/Vendor/Prise/DefaultPluginLoader.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/Vendor/Prise/DependencyInjection/ServiceCollectionExtensions.cs" root0="FORCE_HIGHLIGHTING" /> <setting file="file://$PROJECT_DIR$/Vendor/Prise/DependencyInjection/ServiceCollectionExtensions.cs" root0="FORCE_HIGHLIGHTING" />
</component> </component>
<component name="InvalidFacetManager"> <component name="InvalidFacetManager">
@ -94,6 +90,7 @@
"RunOnceActivity.ShowReadmeOnStart": "true", "RunOnceActivity.ShowReadmeOnStart": "true",
"XThreadsFramesViewSplitterKey": "0.4427131", "XThreadsFramesViewSplitterKey": "0.4427131",
"git-widget-placeholder": "master", "git-widget-placeholder": "master",
"ignore.virus.scanning.warn.message": "true",
"last_opened_file_path": "/home/thomas/RiderProjects/PSCHelpdesk/PSCHelpdesk/PSCHelpdesk.Desktop/bin/Debug/net9.0/plugins", "last_opened_file_path": "/home/thomas/RiderProjects/PSCHelpdesk/PSCHelpdesk/PSCHelpdesk.Desktop/bin/Debug/net9.0/plugins",
"node.js.detected.package.eslint": "true", "node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true", "node.js.detected.package.tslint": "true",
@ -150,7 +147,7 @@
</method> </method>
</configuration> </configuration>
<configuration name="PSCHelpdesk.Desktop" type="DotNetProject" factoryName=".NET Project"> <configuration name="PSCHelpdesk.Desktop" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Desktop/bin/Debug/net9.0/PSCHelpdesk.Desktop" /> <option name="EXE_PATH" value="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Desktop/bin/Debug/net9.0/PSCHelpdesk.Desktop.exe" />
<option name="PROGRAM_PARAMETERS" value="" /> <option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Desktop/bin/Debug/net9.0" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/PSCHelpdesk/PSCHelpdesk.Desktop/bin/Debug/net9.0" />
<option name="PASS_PARENT_ENVS" value="1" /> <option name="PASS_PARENT_ENVS" value="1" />
@ -213,6 +210,8 @@
<workItem from="1731007273821" duration="2499000" /> <workItem from="1731007273821" duration="2499000" />
<workItem from="1731092625067" duration="8735000" /> <workItem from="1731092625067" duration="8735000" />
<workItem from="1731170148773" duration="22780000" /> <workItem from="1731170148773" duration="22780000" />
<workItem from="1731313609440" duration="11083000" />
<workItem from="1731334901251" duration="3939000" />
</task> </task>
<servers /> <servers />
</component> </component>
@ -319,40 +318,19 @@
<line-breakpoint enabled="true" type="DotNet Breakpoints"> <line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs</url> <url>file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs</url>
<line>80</line> <line>80</line>
<properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs" containingFunctionPresentation="Method 'OnClick'"> <properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs" containingFunctionPresentation="Method 'OnClick'" />
<startOffsets>
<option value="2752" />
</startOffsets>
<endOffsets>
<option value="2775" />
</endOffsets>
</properties>
<option name="timeStamp" value="185" /> <option name="timeStamp" value="185" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints"> <line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs</url> <url>file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs</url>
<line>78</line> <line>78</line>
<properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs" containingFunctionPresentation="Method 'OnClick'"> <properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs" containingFunctionPresentation="Method 'OnClick'" />
<startOffsets>
<option value="2723" />
</startOffsets>
<endOffsets>
<option value="2738" />
</endOffsets>
</properties>
<option name="timeStamp" value="186" /> <option name="timeStamp" value="186" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints"> <line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs</url> <url>file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs</url>
<line>60</line> <line>60</line>
<properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs" containingFunctionPresentation="Property 'NavigateUri'"> <properties documentPath="$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/dd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a/HyperlinkButton.cs" containingFunctionPresentation="Property 'NavigateUri'" />
<startOffsets>
<option value="2172" />
</startOffsets>
<endOffsets>
<option value="2209" />
</endOffsets>
</properties>
<option name="timeStamp" value="187" /> <option name="timeStamp" value="187" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints"> <line-breakpoint enabled="true" type="DotNet Breakpoints">
@ -381,6 +359,71 @@
</properties> </properties>
<option name="timeStamp" value="190" /> <option name="timeStamp" value="190" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/Nextcloud/Views/NextcloudSettingsView.axaml.cs</url>
<line>49</line>
<properties documentPath="C:\Users\info\RiderProjects\pschelpdesk\Nextcloud\Views\NextcloudSettingsView.axaml.cs" containingFunctionPresentation="Method 'Button_OnClick'">
<startOffsets>
<option value="1993" />
</startOffsets>
<endOffsets>
<option value="2013" />
</endOffsets>
</properties>
<option name="timeStamp" value="195" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/HetznerServer/HetznerServer.cs</url>
<line>23</line>
<properties documentPath="C:\Users\info\RiderProjects\pschelpdesk\HetznerServer\HetznerServer.cs" containingFunctionPresentation="Method 'Configure'">
<startOffsets>
<option value="634" />
</startOffsets>
<endOffsets>
<option value="699" />
</endOffsets>
</properties>
<option name="timeStamp" value="196" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/Nextcloud/Nextcloud.cs</url>
<line>21</line>
<properties documentPath="C:\Users\info\RiderProjects\pschelpdesk\Nextcloud\Nextcloud.cs" containingFunctionPresentation="Method 'Configure'">
<startOffsets>
<option value="540" />
</startOffsets>
<endOffsets>
<option value="605" />
</endOffsets>
</properties>
<option name="timeStamp" value="197" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/HetznerServer/HetznerServer.cs</url>
<line>24</line>
<properties documentPath="C:\Users\info\RiderProjects\pschelpdesk\HetznerServer\HetznerServer.cs" containingFunctionPresentation="Method 'Configure'">
<startOffsets>
<option value="708" />
</startOffsets>
<endOffsets>
<option value="858" />
</endOffsets>
</properties>
<option name="timeStamp" value="198" />
</line-breakpoint>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/Vendor/Prise/AssemblyScanning/DefaultAssemblyScanner.cs</url>
<line>26</line>
<properties documentPath="C:\Users\info\RiderProjects\pschelpdesk\Vendor\Prise\AssemblyScanning\DefaultAssemblyScanner.cs" containingFunctionPresentation="Method 'Scan'">
<startOffsets>
<option value="1017" />
</startOffsets>
<endOffsets>
<option value="1037" />
</endOffsets>
</properties>
<option name="timeStamp" value="199" />
</line-breakpoint>
</breakpoints> </breakpoints>
</breakpoint-manager> </breakpoint-manager>
</component> </component>

View File

@ -13,6 +13,9 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" Private="false" /> <ProjectReference Include="..\Shared\Shared.csproj" Private="false" />
<ProjectReference Include="..\Vendor\Prise.Plugin\Prise.Plugin.csproj" Private="false" />
<ProjectReference Include="..\Vendor\Prise.Proxy\Prise.Proxy.csproj" Private="false" />
<ProjectReference Include="..\Vendor\Prise.ReverseProxy\Prise.ReverseProxy.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -34,8 +37,6 @@
<PackageReference Include="Avalonia.Xaml.Interactions" Version="11.2.0" Private="false" /> <PackageReference Include="Avalonia.Xaml.Interactions" Version="11.2.0" Private="false" />
<PackageReference Include="HetznerCloud.API" Version="1.1.9" Private="false" /> <PackageReference Include="HetznerCloud.API" Version="1.1.9" Private="false" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Private="false" Version="8.0.1" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Private="false" Version="8.0.1" />
<PackageReference Include="Prise.Plugin" Version="6.0.0" Private="false" />
<PackageReference Include="Prise.ReverseProxy" Version="6.1.0" Private="false" />
<PackageReference Include="SSH.NET" Version="2024.1.0" /> <PackageReference Include="SSH.NET" Version="2024.1.0" />
</ItemGroup> </ItemGroup>

View File

@ -34,7 +34,7 @@ public class ServerService: IServerService
{ {
this.reloadServerStatus(); this.reloadServerStatus();
}; };
_reloadTimer.Interval = TimeSpan.FromMinutes(2); _reloadTimer.Interval = TimeSpan.FromMinutes(10);
_reloadTimer.Start(); _reloadTimer.Start();
this.reloadServer(); this.reloadServer();

30
Nextcloud/Api/Notes.cs Normal file
View File

@ -0,0 +1,30 @@
using CommunityToolkit.Mvvm.DependencyInjection;
using PSCHelpdesk.Plugins.Nextcloud.Models;
using RestSharp;
using RestSharp.Authenticators;
namespace PSCHelpdesk.Plugins.Nextcloud.Api;
public class Notes
{
public Notes()
{
}
async public Task<List<Note>> GetNotes(Settings settings)
{
var notes = new List<Note>();
var client = new RestClient(settings.ServerUrl);
var request = new RestRequest("index.php/apps/notes/api/v1/notes");
request.Authenticator = new HttpBasicAuthenticator(settings.Username, settings.AppPassword);
var response = await client.ExecuteAsync<List<Note>>(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
return response.Data;
}
return notes;
}
}

12
Nextcloud/Models/Note.cs Normal file
View File

@ -0,0 +1,12 @@
namespace PSCHelpdesk.Plugins.Nextcloud.Models;
public class Note
{
public long Id { get; set; }
public string Content { get; set; }
public string Title { get; set; }
public string etag { get; set; }
}

View File

@ -3,9 +3,13 @@ namespace PSCHelpdesk.Plugins.Nextcloud.Models;
public class Settings public class Settings
{ {
public string ServerUrl { get; set; } public string ServerUrl { get; set; }
public string Username { get; set; }
public string AppPassword { get; set; }
public Settings() public Settings()
{ {
ServerUrl = "https://api.nextcloud.com"; ServerUrl = "https://api.nextcloud.com";
Username = "";
AppPassword = "";
} }
} }

View File

@ -1,5 +1,6 @@
using CommunityToolkit.Mvvm.DependencyInjection; using CommunityToolkit.Mvvm.DependencyInjection;
using Prise.Plugin; using Prise.Plugin;
using PSCHelpdesk.Plugins.Nextcloud.Services;
using PSCHelpdesk.Plugins.Nextcloud.ViewModels; using PSCHelpdesk.Plugins.Nextcloud.ViewModels;
using PSCHelpdesk.Plugins.Nextcloud.Views; using PSCHelpdesk.Plugins.Nextcloud.Views;
using PSCHelpdesk.Shared.Menu; using PSCHelpdesk.Shared.Menu;
@ -19,13 +20,12 @@ public class Nextcloud : Contract
public void Configure() public void Configure()
{ {
var menuService = Ioc.Default.GetRequiredService<IMenuService>(); var menuService = Ioc.Default.GetRequiredService<IMenuService>();
/*var serverTab = new Item() var notesTab = new Item()
{ {
Header = "Server", Header = "Notes",
CommandParameter = new ServerViewModel(new ServerService()) CommandParameter = new NotesViewModel(new NotesService())
}; };
menuService.AddMenuItem(serverTab); menuService.AddMenuItem(notesTab);
*/
var settingsService = Ioc.Default.GetRequiredService<ISettingsService>(); var settingsService = Ioc.Default.GetRequiredService<ISettingsService>();
var hetznerSettings = new Shared.Setting.Item() var hetznerSettings = new Shared.Setting.Item()
{ {
@ -37,7 +37,7 @@ public class Nextcloud : Contract
public List<Type> LoadViews() public List<Type> LoadViews()
{ {
return [typeof(NextcloudSettingsView)]; return [typeof(NextcloudSettingsView), typeof(NotesView)];
} }
} }

View File

@ -12,11 +12,13 @@
<PackageReference Include="Avalonia.ReactiveUI" Version="11.2.0" Private="false" /> <PackageReference Include="Avalonia.ReactiveUI" Version="11.2.0" Private="false" />
<PackageReference Include="Avalonia.Xaml.Behaviors" Version="11.2.0" Private="false" /> <PackageReference Include="Avalonia.Xaml.Behaviors" Version="11.2.0" Private="false" />
<PackageReference Include="Avalonia.Xaml.Interactivity" Version="11.2.0" Private="false" /> <PackageReference Include="Avalonia.Xaml.Interactivity" Version="11.2.0" Private="false" />
<PackageReference Include="Prise.Plugin" Version="6.0.0" Private="false" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="RestSharp" Version="112.1.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Shared\Shared.csproj" Private="false"/> <ProjectReference Include="..\Shared\Shared.csproj" Private="false"/>
<ProjectReference Include="..\Vendor\Prise.Plugin\Prise.Plugin.csproj" Private="false" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -0,0 +1,44 @@
using Avalonia.Threading;
using CommunityToolkit.Mvvm.DependencyInjection;
using PSCHelpdesk.Plugins.Nextcloud.Models;
using PSCHelpdesk.Shared.Service;
using PSCHelpdesk.Shared.Setting;
namespace PSCHelpdesk.Plugins.Nextcloud.Services;
public class NotesService
{
public List<Note> Notes;
private Api.Notes _notes;
private readonly IToastManager? _toastManager;
private SettingsManager _settingsManager;
public EventHandler OnNotesChanged;
private DispatcherTimer _timer;
public NotesService()
{
Notes = new List<Note>();
_settingsManager = (SettingsManager)Ioc.Default.GetService<ISettingsManager>();
_toastManager = (IToastManager)Ioc.Default.GetService<IToastManager>();
_notes = new Api.Notes();
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromMinutes(10);
_timer.Tick += async (_, _) => LoadNotes();
_timer.Start();
}
public async Task LoadNotes()
{
var settings = new Settings();
_settingsManager.LoadPluginSettings("NextcloudSettings", settings);
if (settings.AppPassword != "")
{
_toastManager.DisplayNewToast("Reload Notes started");
Notes = await _notes.GetNotes(settings);
_toastManager.DisplayNewToast("Reload Notes finshed");
this.OnNotesChanged.Invoke(null, EventArgs.Empty);
}
}
}

View File

@ -9,6 +9,8 @@ namespace PSCHelpdesk.Plugins.Nextcloud.ViewModels;
public class NextcloudSettingsViewModel: ViewModelBase, IViewModelBase public class NextcloudSettingsViewModel: ViewModelBase, IViewModelBase
{ {
private string _serverUrl; private string _serverUrl;
private string _userName;
private string _appPassword;
public NextcloudSettingsViewModel() public NextcloudSettingsViewModel()
{ {
@ -17,6 +19,8 @@ public class NextcloudSettingsViewModel: ViewModelBase, IViewModelBase
settingsManager.LoadPluginSettings("NextcloudSettings", settings); settingsManager.LoadPluginSettings("NextcloudSettings", settings);
ServerUrl = settings.ServerUrl; ServerUrl = settings.ServerUrl;
Username = settings.Username;
AppPassword = settings.AppPassword;
} }
public string ServerUrl public string ServerUrl
@ -24,4 +28,14 @@ public class NextcloudSettingsViewModel: ViewModelBase, IViewModelBase
get => _serverUrl; get => _serverUrl;
set => SetAndRaisePropertyChanged(ref _serverUrl, value); set => SetAndRaisePropertyChanged(ref _serverUrl, value);
} }
public string Username
{
get => _userName;
set => SetAndRaisePropertyChanged(ref _userName, value);
}
public string AppPassword
{
get => _appPassword;
set => SetAndRaisePropertyChanged(ref _appPassword, value);
}
} }

View File

@ -1,13 +1,62 @@
using System.Windows.Input;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Threading;
using CommunityToolkit.Mvvm.DependencyInjection;
using CommunityToolkit.Mvvm.Input;
using PSCHelpdesk.Plugins.Nextcloud.Models;
using PSCHelpdesk.Plugins.Nextcloud.Services;
using PSCHelpdesk.Plugins.Nextcloud.Views; using PSCHelpdesk.Plugins.Nextcloud.Views;
using PSCHelpdesk.Shared.Service;
using PSCHelpdesk.Shared.ViewModels; using PSCHelpdesk.Shared.ViewModels;
using ReactiveUI;
namespace PSCHelpdesk.Plugins.Nextcloud.ViewModels; namespace PSCHelpdesk.Plugins.Nextcloud.ViewModels;
public class NotesViewModel: ViewModelBase public partial class NotesViewModel: ViewModelBase, IViewModelBase
{ {
public UserControl GetViewControl() public ICommand SelectNote { get; }
private List<Note> _notes;
public List<Note> Notes
{ {
return new NotesView(); get => _notes;
set => this.SetAndRaisePropertyChanged(ref _notes, value);
}
private Note _selectedNote;
public Note SelectedNote
{
get => _selectedNote;
set => this.SetAndRaisePropertyChanged(ref _selectedNote, value);
}
private NotesService _notesService;
public NotesViewModel(NotesService notesService)
{
SelectedNote = new Note();
Notes = new List<Note>();
_notesService = notesService;
_notesService.OnNotesChanged += (sender, args) => this.reloadNotes();
_notesService.LoadNotes();
SelectNote = ReactiveCommand.Create((Note note) =>
{
selectNote(note);
});
}
private void reloadNotes()
{
Notes = _notesService.Notes;
}
private async void selectNote(Note note)
{
var uiDispatcher = Ioc.Default.GetService<IUserInterfaceDispatchService>();
await uiDispatcher.InvokeAsync(() =>
{
SelectedNote = note;
});
} }
} }

View File

@ -12,6 +12,15 @@
<TextBlock Margin="0 5" >Server Url</TextBlock> <TextBlock Margin="0 5" >Server Url</TextBlock>
<StackPanel Orientation="Horizontal" Spacing="1"> <StackPanel Orientation="Horizontal" Spacing="1">
<TextBox Text="{Binding ServerUrl}" Width="400"></TextBox> <TextBox Text="{Binding ServerUrl}" Width="400"></TextBox>
<Button Click="Button_OnClick" Content="Login starten"></Button>
</StackPanel>
<StackPanel>
<TextBlock Margin="0 5" >UserName</TextBlock>
<TextBox Text="{Binding Username}" IsReadOnly="True"></TextBox>
</StackPanel>
<StackPanel>
<TextBlock Margin="0 5" >App Password</TextBlock>
<TextBox Text="{Binding AppPassword}" IsReadOnly="True"></TextBox>
</StackPanel> </StackPanel>
<Button Margin="0 5" Content="Save Settings" Click="SaveSettings_OnClick"></Button> <Button Margin="0 5" Content="Save Settings" Click="SaveSettings_OnClick"></Button>
</StackPanel> </StackPanel>

View File

@ -1,8 +1,11 @@
using System.Net.Http.Headers;
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Threading;
using CommunityToolkit.Mvvm.DependencyInjection; using CommunityToolkit.Mvvm.DependencyInjection;
using Newtonsoft.Json.Linq;
using PSCHelpdesk.Plugins.Nextcloud.Models; using PSCHelpdesk.Plugins.Nextcloud.Models;
using PSCHelpdesk.Plugins.Nextcloud.ViewModels; using PSCHelpdesk.Plugins.Nextcloud.ViewModels;
using PSCHelpdesk.Shared.Service; using PSCHelpdesk.Shared.Service;
@ -14,6 +17,7 @@ public partial class NextcloudSettingsView : UserControl
{ {
private SettingsManager settingsManager; private SettingsManager settingsManager;
private Settings settings; private Settings settings;
private static readonly HttpClient httpClient = new HttpClient();
public NextcloudSettingsView() public NextcloudSettingsView()
{ {
@ -26,6 +30,56 @@ public partial class NextcloudSettingsView : UserControl
private void SaveSettings_OnClick(object? sender, RoutedEventArgs e) private void SaveSettings_OnClick(object? sender, RoutedEventArgs e)
{ {
settings.ServerUrl = ((NextcloudSettingsViewModel)this.DataContext).ServerUrl; settings.ServerUrl = ((NextcloudSettingsViewModel)this.DataContext).ServerUrl;
settings.Username = ((NextcloudSettingsViewModel)this.DataContext).Username;
settings.AppPassword = ((NextcloudSettingsViewModel)this.DataContext).AppPassword;
settingsManager.SavePluginSettings("NextcloudSettings", settings); settingsManager.SavePluginSettings("NextcloudSettings", settings);
} }
private async void Button_OnClick(object? sender, RoutedEventArgs e)
{
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/ld+json"));
httpClient.DefaultRequestHeaders.Add("User-Agent", "PSC Client");
var stringTask = httpClient.PostAsync(settings.ServerUrl + "/index.php/login/v2", new MultipartContent());
var msg = await stringTask;
JObject response = JObject.Parse(msg.Content.ReadAsStringAsync().Result);
Uri? uri = new Uri(response["login"].ToString());
if (uri is not null)
{
Dispatcher.UIThread.Post(async () =>
{
bool success = await TopLevel.GetTopLevel(this)!.Launcher.LaunchUriAsync(uri);
});
}
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/ld+json"));
httpClient.DefaultRequestHeaders.Add("User-Agent", "PSC Client");
while (true)
{
var pollLink = httpClient.PostAsync(
response["poll"]["endpoint"].ToString(),
new FormUrlEncodedContent(new []{new KeyValuePair<string, string>("token", response["poll"]["token"].ToString())}));
var resultPoll = await pollLink;
if (resultPoll.IsSuccessStatusCode)
{
JObject responsePoll = JObject.Parse(resultPoll.Content.ReadAsStringAsync().Result);
settings.Username = responsePoll["loginName"].ToString();
settings.AppPassword = responsePoll["appPassword"].ToString();
((NextcloudSettingsViewModel)this.DataContext).Username = settings.Username;
((NextcloudSettingsViewModel)this.DataContext).AppPassword = settings.AppPassword;
break;
}
Thread.Sleep(1000);
}
}
} }

View File

@ -2,7 +2,30 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:PSCHelpdesk.Plugins.Nextcloud.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="PSCHelpdesk.Plugins.Nextcloud.Views.NotesView"> x:Class="PSCHelpdesk.Plugins.Nextcloud.Views.NotesView"
Welcome to Avalonia! x:DataType="vm:NotesViewModel">
<Design.DataContext>
<vm:NotesViewModel></vm:NotesViewModel>
</Design.DataContext>
<SplitView IsPaneOpen="True"
DisplayMode="Inline"
OpenPaneLength="300">
<SplitView.Pane>
<ListBox ItemsSource="{Binding Notes}" >
<ListBox.ItemTemplate>
<DataTemplate>
<Border Padding="1" Margin="0">
<Button Content="{Binding Title}" Command="{Binding $parent[ListBox].DataContext.SelectNote }" CommandParameter="{Binding .}"></Button>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</SplitView.Pane>
<Grid ColumnDefinitions="*,*">
<TextBox Text="{Binding SelectedNote.Content}"></TextBox>
<TextBox Grid.Column="1" Text="{Binding SelectedNote.Content}"></TextBox>
</Grid>
</SplitView>
</UserControl> </UserControl>

View File

@ -1,4 +1,6 @@
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input;
using PSCHelpdesk.Plugins.Nextcloud.ViewModels;
namespace PSCHelpdesk.Plugins.Nextcloud.Views; namespace PSCHelpdesk.Plugins.Nextcloud.Views;
public partial class NotesView : UserControl public partial class NotesView : UserControl
@ -7,4 +9,9 @@ public partial class NotesView : UserControl
{ {
InitializeComponent(); InitializeComponent();
} }
private void InputElement_OnTapped(object? sender, TappedEventArgs e)
{
//((NotesViewModel)DataContext).SelectNote(sender);
}
} }

View File

@ -23,10 +23,12 @@
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHeaderedSelectingItemsControl_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F16a25d89779ca224b34f189688787a4b4f091751ee7706b8b396a5e88aa225_003FHeaderedSelectingItemsControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHeaderedSelectingItemsControl_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F16a25d89779ca224b34f189688787a4b4f091751ee7706b8b396a5e88aa225_003FHeaderedSelectingItemsControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHyperlinkButton_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fdd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a_003FHyperlinkButton_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AHyperlinkButton_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fdd582eafcc7da4dc5ece1e7e4de37b1f271b42b4cea54a2aecfe3bda3fd2e5a_003FHyperlinkButton_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIoc_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F2e6883f773fb7c69a15db509adac9a0c068e4ca54fa119e835fd2324311c3b_003FIoc_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIoc_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F2e6883f773fb7c69a15db509adac9a0c068e4ca54fa119e835fd2324311c3b_003FIoc_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIoc_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ffa3c59274a754721f822d1776be91c7ffdd37ff4219098396aa16ba1fc5447_003FIoc_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIoc_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F2e6883f773fb7c69a15db509adac9a0c068e4ca54fa119e835fd2324311c3b_003FIoc_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIoc_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F2e6883f773fb7c69a15db509adac9a0c068e4ca54fa119e835fd2324311c3b_003FIoc_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIpv6_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F95e899f2b13d4189874af98ec00443321e400_003Ff7_003F54c88032_003FIpv6_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIpv6_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F95e899f2b13d4189874af98ec00443321e400_003Ff7_003F54c88032_003FIpv6_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIServerActionsService_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa924c6fef45b419cbbc71e86813a9b3a35000_003Ff5_003Fd14c12da_003FIServerActionsService_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIServerActionsService_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fa924c6fef45b419cbbc71e86813a9b3a35000_003Ff5_003Fd14c12da_003FIServerActionsService_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIStorageProvider_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fceb1c14a2cad4d38a6c5bf90e72339c81cc000_003F_005Fcb8e6_003FIStorageProvider_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIStorageProvider_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fceb1c14a2cad4d38a6c5bf90e72339c81cc000_003F_005Fcb8e6_003FIStorageProvider_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJObject_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F443ce614ff11fd4152a3c735dec9ef388c537ef8ea9c24e0f018f1bd619e85_003FJObject_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonConvert_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff3981d658666ec9cc1e6958fe22f8614bfe02ccb6625b056c3ece3729c9262_003FJsonConvert_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonConvert_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Ff3981d658666ec9cc1e6958fe22f8614bfe02ccb6625b056c3ece3729c9262_003FJsonConvert_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonSerializerInternalWriter_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fe2e3d26278e439d44964729238a685ad58d3189abf8fb84cdfe34b893a290a2_003FJsonSerializerInternalWriter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AJsonSerializerInternalWriter_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003Fe2e3d26278e439d44964729238a685ad58d3189abf8fb84cdfe34b893a290a2_003FJsonSerializerInternalWriter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F1b81cb3be224213a6a73519b6e340a628d9a1fb8629c351a186a26f6376669_003FList_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F1b81cb3be224213a6a73519b6e340a628d9a1fb8629c351a186a26f6376669_003FList_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
@ -76,11 +78,11 @@
&lt;/AssemblyExplorer&gt;</s:String> &lt;/AssemblyExplorer&gt;</s:String>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=1868ceb9_002D4dab_002D4196_002D91ae_002D60765bdd9820_0023PSCHelpdesk_002EiOS/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=1868ceb9_002D4dab_002D4196_002D91ae_002D60765bdd9820_0023PSCHelpdesk_002EiOS/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=1c4ca302_002Da031_002D439a_002Dbfcb_002D42c4bac467f2_0023PSCHelpdesk_002EAndroid/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=1c4ca302_002Da031_002D439a_002Dbfcb_002D42c4bac467f2_0023PSCHelpdesk_002EAndroid/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=52efdd1b_002Db775_002D49a1_002Dbd3d_002De7b7f6a989ea_0023Prise_002EReverseProxy/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=79029f78_002D5113_002D46e4_002D8896_002D436707a7251f_0023Prise_002EProxy/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=a910fef2_002D046b_002D4956_002Dbc0a_002Daa57ec9a6b27_0023PSCHelpdesk_002EBrowser/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=a910fef2_002D046b_002D4956_002Dbc0a_002Daa57ec9a6b27_0023PSCHelpdesk_002EBrowser/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=ad222f87_002Deac5_002D4120_002Daa33_002Deb32df2ddcd5_0023Prise/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UnloadedProject/UnloadedProjects/=f4ef7157_002Dc5f0_002D4444_002D9e49_002D28f6bd56295f_0023Prise_002EPlugin/@EntryIndexedValue">True</s:Boolean>

View File

@ -21,12 +21,13 @@
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.2" /> <PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Prise" Version="6.0.0" />
<PackageReference Include="Prise.Proxy" Version="6.1.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Shared\Shared.csproj" /> <ProjectReference Include="..\..\Shared\Shared.csproj" />
<ProjectReference Include="..\..\Vendor\Prise.Plugin\Prise.Plugin.csproj" />
<ProjectReference Include="..\..\Vendor\Prise.Proxy\Prise.Proxy.csproj" />
<ProjectReference Include="..\..\Vendor\Prise\Prise.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -25,8 +25,8 @@ public class PluginService
public PluginService() public PluginService()
{ {
this.scanPlugins(); //this.scanPlugins();
this.LoadPlugin("HetznerServer"); //this.LoadPlugin("HetznerServer");
this.LoadPlugin("Nextcloud"); this.LoadPlugin("Nextcloud");
} }
public Dictionary<string, string> GetPlugins() public Dictionary<string, string> GetPlugins()

View File

@ -22,8 +22,8 @@ public partial class MainWindow : Window
SettingsWindow settings = new SettingsWindow SettingsWindow settings = new SettingsWindow
{ {
DataContext = new SettingsViewModel(), DataContext = new SettingsViewModel(),
Width = 500, Width = 800,
Height = 400 Height = 600
}; };
settings.Show(); settings.Show();
} }

View File

@ -44,6 +44,7 @@ namespace Prise.AssemblyScanning
{ {
foreach (var implementation in GetImplementationsOfTypeFromAssembly(typeToScan, assemblyFilePath)) foreach (var implementation in GetImplementationsOfTypeFromAssembly(typeToScan, assemblyFilePath))
if (implementation != null) if (implementation != null)
{
results.Add(new AssemblyScanResult results.Add(new AssemblyScanResult
{ {
ContractType = typeToScan, ContractType = typeToScan,
@ -51,6 +52,8 @@ namespace Prise.AssemblyScanning
AssemblyPath = Path.GetDirectoryName(assemblyFilePath), AssemblyPath = Path.GetDirectoryName(assemblyFilePath),
PluginType = implementation PluginType = implementation
}); });
Console.WriteLine($"Scanning File {assemblyFilePath}");
}
} }
} }