diff --git a/BLAZAM/BLAZAM.csproj b/BLAZAM/BLAZAM.csproj
index 7ed7d103..5d60d40d 100644
--- a/BLAZAM/BLAZAM.csproj
+++ b/BLAZAM/BLAZAM.csproj
@@ -6,7 +6,7 @@
enable
false
0.8.5
- 2023.11.20.1820
+ 2023.11.20.1939
BLAZAM
False
diff --git a/BLAZAM/Pages/Computers/ViewComputer.razor b/BLAZAM/Pages/Computers/ViewComputer.razor
index 8bf2be2e..5f0fd74a 100644
--- a/BLAZAM/Pages/Computers/ViewComputer.razor
+++ b/BLAZAM/Pages/Computers/ViewComputer.razor
@@ -150,25 +150,10 @@
await InvokeAsync(StateHasChanged);
if (Computer != null)
{
-
- Task.Run(() =>
- {
- var services = Computer.Services;
-
- RefreshEntryComponents();
-
- });
-
-
-
-
Computer.OnOnlineChanged += ((online) =>
{
RefreshEntryComponents();
});
-
-
-
}
LoadingData = false;
await RefreshEntryComponents();
diff --git a/BLAZAMActiveDirectory/Adapters/ADComputer.cs b/BLAZAMActiveDirectory/Adapters/ADComputer.cs
index 3912c1b3..205bd753 100644
--- a/BLAZAMActiveDirectory/Adapters/ADComputer.cs
+++ b/BLAZAMActiveDirectory/Adapters/ADComputer.cs
@@ -7,6 +7,7 @@
using BLAZAM.ActiveDirectory.Interfaces;
using BLAZAM.Database.Models;
using System.Net.Sockets;
+using System.DirectoryServices;
namespace BLAZAM.ActiveDirectory.Adapters
{
@@ -26,7 +27,7 @@ private WmiConnection? wmiConnection
private bool? online;
public ADComputer()
{
- MonitorOnlineStatus();
+
}
public string? OperatingSystem
@@ -59,7 +60,7 @@ public virtual bool? IsOnline
}
}
public List Services => wmiConnection.Services;
- public ComputerMemory Memory =>wmiConnection?.Memory ?? new();
+ public ComputerMemory Memory => wmiConnection?.Memory ?? new();
public int Processor => wmiConnection.Processor;
public double MemoryUsedPercent => wmiConnection.Memory.PercentUsed;
public List GetDrives()
@@ -168,7 +169,7 @@ await Task.Run(() =>
} while (x < retries);
}
- catch(SocketException ex)
+ catch (SocketException ex)
{
}
@@ -187,6 +188,13 @@ await Task.Run(() =>
}
+ public override async Task Parse(SearchResult result, IActiveDirectoryContext directory)
+ {
+ await base.Parse(result, directory);
+ if (!this.IsDeleted)
+ MonitorOnlineStatus();
+ }
+
public override void Dispose()
{
base.Dispose();
diff --git a/BLAZAMActiveDirectory/Searchers/ADSearch.cs b/BLAZAMActiveDirectory/Searchers/ADSearch.cs
index 26c69ff2..c7d60275 100644
--- a/BLAZAMActiveDirectory/Searchers/ADSearch.cs
+++ b/BLAZAMActiveDirectory/Searchers/ADSearch.cs
@@ -15,6 +15,7 @@
using System.ComponentModel;
using System.DirectoryServices;
using System.DirectoryServices.Protocols;
+using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -61,7 +62,9 @@ public class ADSearch : SearchBase
/// to confirm search is completed and no more results are coming.
///
public AppEvent> ResultsCollected { get; set; }
-
+
+ int PageSize = 40;
+
public ActiveDirectoryObjectType? ObjectTypeFilter { get; set; }
public bool? EnabledOnly { get; set; }
public int MaxResults { get; set; } = 50;
@@ -106,7 +109,7 @@ public async Task> SearchAsync()
{
SearchRoot ??= ActiveDirectoryContext.Instance.GetDirectoryEntry(DatabaseCache.ActiveDirectorySettings?.ApplicationBaseDN);
var pageOffset = 1;
- var pageSize = 40;
+
searcher = new DirectorySearcher(SearchRoot)
{
//TODO Ensure bbroken
@@ -214,7 +217,7 @@ public async Task> SearchAsync()
SearchTime = DateTime.Now - startTime;
- PerformSearch(startTime, searcher, pageSize);
+ PerformSearch(startTime, searcher, PageSize);
if (cancellationToken?.IsCancellationRequested == true) return new();
@@ -298,7 +301,7 @@ private DateTime NewMethod()
// throw new ApplicationException("The searcher lost it's VirtualListView in the middle of searching!");
lastResults = searcher.FindAll();
AddResults(lastResults);
- if (lastResults.Count < pageSize)
+ if (searcher.VirtualListView==null || lastResults.Count < pageSize)
moreResults = false;
SearchTime = DateTime.Now - startTime;
@@ -319,7 +322,10 @@ private void PrepareSearcher(DirectorySearcher searcher)
searcher.PropertiesToLoad.Add("name");
}
if (SearchDeleted)
+ {
searcher.Tombstone = true;
+ searcher.VirtualListView = new DirectoryVirtualListView(0, PageSize - 1, 1);
+ }
//searcher.Asynchronous = true;
searcher.SizeLimit = MaxResults;
searcher.Filter = searcher.Filter?.Substring(0, searcher.Filter.Length - 1) + FilterQuery + ")";