266 lines
10 KiB
C#
266 lines
10 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
using C4IT.Logging;
|
|
using C4IT.XML;
|
|
using C4IT.DataHistoryProvider;
|
|
|
|
using static C4IT.Logging.cLogManager;
|
|
using C4IT.MsGraph;
|
|
using Newtonsoft.Json.Linq;
|
|
using System.Collections.ObjectModel;
|
|
|
|
namespace C4IT_DataHistoryProvider_Test
|
|
{
|
|
public partial class ctrlActiveDirectory : UserControl
|
|
{
|
|
public ctrlActiveDirectory()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private async void ctrlActiveDirectory_Load(object sender, EventArgs e)
|
|
{
|
|
panelScanNext.Height = textBoxScanNext.Height;
|
|
panelScanNext.Top = textBoxScanNext.Top;
|
|
|
|
if (Program.Collector?.InfrastructureConfig?.AzureTenants != null && Program.Collector?.InfrastructureConfig?.AzureTenants.Count > 0)
|
|
{
|
|
buttonScanAzureAd.Visible = true;
|
|
|
|
}
|
|
|
|
if (Program.Collector?.InfrastructureConfig?.AzureTenants != null && Program.Collector?.InfrastructureConfig?.AzureTenants.Count > 0)
|
|
{
|
|
buttonScanAzureAd.Visible = true;
|
|
|
|
}
|
|
|
|
var _requestInfo = new cF4sdWebRequestInfo("ctrlActiveDirectory_Load", null);
|
|
await checkScanTimesAsync(_requestInfo,1);
|
|
}
|
|
|
|
private async Task checkScanTimesAsync(cF4sdWebRequestInfo requestInfo, int LogDeep)
|
|
{
|
|
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
|
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
|
|
var _startTime = DateTime.UtcNow;
|
|
|
|
try
|
|
{
|
|
var Col = Color.Transparent;
|
|
textBoxScanLast.Text = "";
|
|
textBoxScanNext.Text = "";
|
|
|
|
if (Program.Collector?.ActiveDirectory != null)
|
|
{
|
|
var scanInfo = await Program.Collector.ActiveDirectory.GetScanTimeInfoAsync(requestInfo, LogDeep+1, CancellationToken.None);
|
|
|
|
if (scanInfo?.NextScan is DateTime nextScan)
|
|
{
|
|
textBoxScanNext.Text = nextScan.ToLocalTime().ToString();
|
|
if (scanInfo?.LastScan is DateTime lastScan)
|
|
{
|
|
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
|
if (nextScan >= lastScan)
|
|
Col = Color.Red;
|
|
else
|
|
Col = Color.Green;
|
|
}
|
|
else
|
|
Col = Color.Red;
|
|
}
|
|
else
|
|
{
|
|
Col = Color.Red;
|
|
if (scanInfo?.LastScan is DateTime lastScan)
|
|
textBoxScanLast.Text = lastScan.ToLocalTime().ToString();
|
|
}
|
|
}
|
|
|
|
panelScanNext.BackColor = Col;
|
|
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
LogException(E);
|
|
}
|
|
finally
|
|
{
|
|
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
|
|
if (CM != null) LogMethodEnd(CM);
|
|
}
|
|
}
|
|
|
|
private async Task DoScan(bool Rescan, cF4sdWebRequestInfo requestInfo, int LogDeep)
|
|
{
|
|
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
|
return;
|
|
|
|
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
|
if (cPerformanceLogger.IsActive && requestInfo != null) { if (CM == null) CM = MethodBase.GetCurrentMethod(); cPerformanceLogger.LogPerformanceStart(LogDeep, CM, requestInfo.id, requestInfo.created); }
|
|
var _startTime = DateTime.UtcNow;
|
|
|
|
try
|
|
{
|
|
Cursor = Cursors.WaitCursor;
|
|
|
|
ctrlProtocolBox1.ClearMessages();
|
|
buttonScanAD.Enabled = false;
|
|
|
|
Program.mainForm.DisableAllTabPages(this);
|
|
|
|
Program.Collector.CleanupUiMessageHandler();
|
|
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
|
|
|
var _requestInfo = new cF4sdWebRequestInfo("DoScanActiveDirectory", null);
|
|
|
|
await Program.Collector.ActiveDirectory.DoScanAsync(true, Rescan, _requestInfo, 1, CancellationToken.None);
|
|
|
|
await checkScanTimesAsync(requestInfo, LogDeep+1);
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
LogException(E);
|
|
}
|
|
finally
|
|
{
|
|
ctrlProtocolBox1.ProcessMessage("");
|
|
Program.mainForm.EnableAllTabPages();
|
|
buttonScanAD.Enabled = true;
|
|
Cursor = Cursors.Default;
|
|
|
|
if (cPerformanceLogger.IsActive && requestInfo != null) { cPerformanceLogger.LogPerformanceEnd(LogDeep, CM, requestInfo.id, requestInfo.created, _startTime); }
|
|
if (CM != null) LogMethodEnd(CM);
|
|
}
|
|
|
|
}
|
|
|
|
private async void buttonRescan_Click(object sender, EventArgs e)
|
|
{
|
|
var _requestInfo = new cF4sdWebRequestInfo("buttonRescan_Click", null);
|
|
await DoScan(true, _requestInfo, 1);
|
|
DoDeviceScanAzure(sender, e);
|
|
}
|
|
|
|
private async void buttonScanAD_Click(object sender, EventArgs e)
|
|
{
|
|
var _requestInfo = new cF4sdWebRequestInfo("buttonScanAD_Click", null);
|
|
await DoScan(false, _requestInfo, 1);
|
|
DoDeviceScanAzure(sender,e);
|
|
|
|
}
|
|
|
|
private async void buttonScanAzureAd_Click(object sender, EventArgs e)
|
|
{
|
|
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
|
|
|
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
|
return;
|
|
|
|
try
|
|
{
|
|
Cursor = Cursors.WaitCursor;
|
|
|
|
ctrlProtocolBox1.ClearMessages();
|
|
buttonScanAD.Enabled = false;
|
|
|
|
Program.mainForm.DisableAllTabPages(this);
|
|
|
|
Program.Collector.CleanupUiMessageHandler();
|
|
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
|
|
|
var _requestInfo = new cF4sdWebRequestInfo("buttonScanAzureAd_Click", null);
|
|
await Program.Collector.ActiveDirectory.DoAzureScanAsync(_requestInfo, 1, CancellationToken.None);
|
|
DoDeviceScanAzure(sender, e);
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
LogException(E);
|
|
}
|
|
finally
|
|
{
|
|
ctrlProtocolBox1.ProcessMessage("");
|
|
Program.mainForm.EnableAllTabPages();
|
|
buttonScanAD.Enabled = true;
|
|
Cursor = Cursors.Default;
|
|
if (CM != null) LogMethodEnd(CM);
|
|
}
|
|
}
|
|
|
|
private async void DoDeviceScanAzure(object sender, EventArgs e)
|
|
{
|
|
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
|
|
|
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
|
return;
|
|
|
|
try
|
|
{
|
|
Cursor = Cursors.WaitCursor;
|
|
|
|
Program.mainForm.DisableAllTabPages(this);
|
|
|
|
Program.Collector.CleanupUiMessageHandler();
|
|
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
|
|
|
var _requestInfo = new cF4sdWebRequestInfo("DoDeviceScanAzure", null);
|
|
await Program.Collector.ActiveDirectory.DoDeviceScanAzureAsync(_requestInfo, 1, CancellationToken.None);
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
LogException(E);
|
|
}
|
|
finally
|
|
{
|
|
ctrlProtocolBox1.ProcessMessage("");
|
|
Program.mainForm.EnableAllTabPages();
|
|
DoScanIntune(sender,e);
|
|
Cursor = Cursors.Default;
|
|
if (CM != null) LogMethodEnd(CM);
|
|
}
|
|
}
|
|
|
|
private async void DoScanIntune(object sender, EventArgs e)
|
|
{
|
|
MethodBase CM = null; if (cLogManager.DefaultLogger.IsDebug) { CM = MethodBase.GetCurrentMethod(); LogMethodBegin(CM); }
|
|
|
|
if (Program.Collector == null || Program.Collector.ActiveDirectory == null)
|
|
return;
|
|
|
|
try
|
|
{
|
|
Cursor = Cursors.WaitCursor;
|
|
|
|
Program.mainForm.DisableAllTabPages(this);
|
|
|
|
Program.Collector.CleanupUiMessageHandler();
|
|
Program.Collector.ProcessUiMessage += ctrlProtocolBox1.ProcessMessage;
|
|
|
|
var _requestInfo = new cF4sdWebRequestInfo("DoScanIntune", null);
|
|
await Program.Collector.ActiveDirectory.DoScanIntuneAsync(null, 1, CancellationToken.None);
|
|
}
|
|
catch (Exception E)
|
|
{
|
|
LogException(E);
|
|
}
|
|
finally
|
|
{
|
|
Program.mainForm.EnableAllTabPages();
|
|
Cursor = Cursors.Default;
|
|
if (CM != null) LogMethodEnd(CM);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|