Prepare Data History Provider 2.7 integration update

- modularize Citrix and agent integrations and add remote desktop endpoints
- extend ticket overview, ticket links, token validation, and staged relation handling
- update configuration, licensing, project, signing, and publish artifacts
This commit is contained in:
Meik
2026-07-20 09:31:52 +02:00
parent a3357e2a36
commit ccc48c521a
62 changed files with 5267 additions and 2521 deletions

View File

@@ -1,19 +1,15 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using C4IT.DataHistoryProvider;
using System.Reflection;
using C4IT.Logging;
using System.Threading;
using System.Reflection;
using C4IT.Logging;
using C4IT.DataHistoryProvider;
using C4IT.DataHistoryProvider.Base.Modules.Citrix;
using static C4IT.Logging.cLogManager;
using System.Threading;
namespace C4IT_DataHistoryProvider_Test
{
public partial class ctrlCitrix: UserControl
@@ -39,12 +35,22 @@ namespace C4IT_DataHistoryProvider_Test
Program.Collector.CleanupUiMessageHandler();
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
var _requestInfo = new cF4sdWebRequestInfo("btnConnectCitrix_Click", null);
var tenants = Program.Collector.InfrastructureConfig.CitrixTenants?.Values;
var systems = Program.Collector.InfrastructureConfig.Citrix.Systems;
ctrlProtocolBox1.ProcessMessage($"Validating Citrix connections...");
foreach (var Tenant in tenants)
await Program.Collector.CitrixCollector.ValidateConnectionsAsync(CancellationToken.None);
ctrlProtocolBox1.ProcessMessage($"Validating Citrix connections finished.");
return;
foreach (var _system in systems)
{
var result = await Program.Collector.CitrixCollector.GetCitrixCommunicationForTenantAsync(Tenant.TenantID, false);
if (!(_system is cDataHistoryCitrixCloudTenant Tenant))
continue;
var result = await Program.Collector.CitrixCollector.GetCitrixCommunicationForSystemAsync(Tenant.TenantID, false);
if (result != null)
{
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} successful");
@@ -84,13 +90,17 @@ namespace C4IT_DataHistoryProvider_Test
Program.Collector.CleanupUiMessageHandler();
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
var _requestInfo = new cF4sdWebRequestInfo("btnConnectCitrix_Click", null);
var tenants = Program.Collector.InfrastructureConfig.CitrixTenants?.Values;
var systems = Program.Collector.InfrastructureConfig.Citrix.Systems;
foreach (var Tenant in tenants)
foreach (var _system in systems)
{
if (!(_system is cDataHistoryCitrixCloudTenant Tenant))
continue;
var result = await Program.Collector.CitrixCollector.GetCitrixUsersAsync();
if (result != null)
if (result)
{
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} successful");
}
@@ -129,13 +139,16 @@ namespace C4IT_DataHistoryProvider_Test
Program.Collector.CleanupUiMessageHandler();
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
var _requestInfo = new cF4sdWebRequestInfo("btnGetSessions_Click", null);
var tenants = Program.Collector.InfrastructureConfig.CitrixTenants?.Values;
var systems = Program.Collector.InfrastructureConfig.Citrix.Systems;
foreach (var Tenant in tenants)
foreach (var _system in systems)
{
if (!(_system is cDataHistoryCitrixCloudTenant Tenant))
continue;
var result = await Program.Collector.CitrixCollector.GetCitrixSessionsAsync();
if (result != null)
if (result)
{
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} successful");
}
@@ -170,8 +183,6 @@ namespace C4IT_DataHistoryProvider_Test
{
Cursor = Cursors.WaitCursor;
if (Program.Collector == null)
return;
@@ -179,23 +190,16 @@ namespace C4IT_DataHistoryProvider_Test
Program.Collector.CleanupUiMessageHandler();
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
var _requestInfo = new cF4sdWebRequestInfo("btnScanUsers_Click", null);
var tenants = Program.Collector.InfrastructureConfig.CitrixTenants?.Values;
ctrlProtocolBox1.ProcessMessage($"Starting Citrix user scans...");
foreach (var Tenant in tenants)
{
var result = await Program.Collector.CitrixCollector.DoScanAsync(true, true, _requestInfo, 1, CancellationToken.None);
if (result)
{
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} successful");
}
else
{
ctrlProtocolBox1.ProcessMessage($"Citrix connection for tenant {Tenant.TenantID} failed");
}
}
Program.Collector.CitrixCollector.DoScanSequential = true;
var result = await Program.Collector.CitrixCollector.DoScanAsync(true, true, _requestInfo, 0, CancellationToken.None);
if (result)
ctrlProtocolBox1.ProcessMessage($"All Citrix user scans finished successfully.");
else
ctrlProtocolBox1.ProcessMessage($"At least one Citrix user scan finished with errors.");
}
catch (Exception E)
{