diff --git a/insight.sln b/insight.sln
index 4d81ecd..57b9b5c 100644
--- a/insight.sln
+++ b/insight.sln
@@ -33,6 +33,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Updater", "src\Upda
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Agent", "src\Agent\Insight.Agent\Insight.Agent.csproj", "{2A391CA2-F96B-4DB7-80AA-0668A5141640}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Remote", "Remote", "{D4D7BF4A-B2E3-470A-A14C-FC658FF7461D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Remote.Shared", "src\Remote\Insight.Remote.Shared\Insight.Remote.Shared.csproj", "{5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Remote.Windows", "src\Remote\Insight.Remote.Windows\Insight.Remote.Windows.csproj", "{AF313B47-3079-407F-91D1-9989C1E1AF2A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -71,6 +77,14 @@ Global
{2A391CA2-F96B-4DB7-80AA-0668A5141640}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2A391CA2-F96B-4DB7-80AA-0668A5141640}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2A391CA2-F96B-4DB7-80AA-0668A5141640}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AF313B47-3079-407F-91D1-9989C1E1AF2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AF313B47-3079-407F-91D1-9989C1E1AF2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AF313B47-3079-407F-91D1-9989C1E1AF2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AF313B47-3079-407F-91D1-9989C1E1AF2A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -84,6 +98,8 @@ Global
{1E75F7E9-E6AA-44E7-A2F3-DB4CA85E0118} = {038C3821-E554-496D-B585-A3BC193B7913}
{4875D70F-A96B-4EBA-99BE-218886D29BEB} = {F2D241DB-7692-46DB-8A6A-958B365DAAF8}
{2A391CA2-F96B-4DB7-80AA-0668A5141640} = {140F73DD-29D3-4C44-809B-5B470880AA0D}
+ {5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B} = {D4D7BF4A-B2E3-470A-A14C-FC658FF7461D}
+ {AF313B47-3079-407F-91D1-9989C1E1AF2A} = {D4D7BF4A-B2E3-470A-A14C-FC658FF7461D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F376A326-7590-4E7E-AB9B-76CED8527AB0}
diff --git a/src/Agent/Insight.Agent/Insight.Agent.csproj b/src/Agent/Insight.Agent/Insight.Agent.csproj
index fbcdb18..79aa1d5 100644
--- a/src/Agent/Insight.Agent/Insight.Agent.csproj
+++ b/src/Agent/Insight.Agent/Insight.Agent.csproj
@@ -6,7 +6,7 @@
Insight.Agent
Insight
agent
- 2023.9.21.0
+ 2023.11.17.0
enable
enable
@@ -26,7 +26,7 @@
-
+
diff --git a/src/Agent/Insight.Agent/Network/AgentSession.cs b/src/Agent/Insight.Agent/Network/AgentSession.cs
index 2fcd017..b13df10 100644
--- a/src/Agent/Insight.Agent/Network/AgentSession.cs
+++ b/src/Agent/Insight.Agent/Network/AgentSession.cs
@@ -1,5 +1,5 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
+using Insight.Domain.Network;
using Microsoft.Extensions.Logging;
using Vaitr.Network;
diff --git a/src/Agent/Insight.Agent/Network/Handlers/AuthenticationHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/AuthenticationHandler.cs
index 027b0c2..cc71964 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/AuthenticationHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/AuthenticationHandler.cs
@@ -2,8 +2,8 @@
using Insight.Agent.Services;
using Insight.Domain.Constants;
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
namespace Insight.Agent.Network.Handlers;
@@ -11,28 +11,33 @@ public class AuthenticationHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is AuthenticationRequest)
+ switch (message)
{
- Config? config = null;
+ case AuthenticationRequest:
+ {
+ Config? config = null;
- try
- {
- config = await Configurator.ReadAsync(Configuration.DefaultConfig, cancellationToken).ConfigureAwait(false);
- }
- catch (Exception) { }
+ try
+ {
+ config = await Configurator.ReadAsync(Configuration.DefaultConfig, cancellationToken).ConfigureAwait(false);
+ }
+ catch (Exception) { }
- if (config is null)
- {
- config = new Config { Serial = Guid.NewGuid() };
- await Configurator.WriteAsync(config, Configuration.DefaultConfig, cancellationToken).ConfigureAwait(false);
- }
+ if (config is null)
+ {
+ config = new Config { Serial = Guid.NewGuid() };
+ await Configurator.WriteAsync(config, Configuration.DefaultConfig, cancellationToken).ConfigureAwait(false);
+ }
- await sender.SendAsync(new Authentication
- {
- Serial = config.Serial ?? throw new InvalidDataException(nameof(config.Serial)),
- Version = Configuration.Version,
- Hostname = Configuration.Hostname
- }, cancellationToken);
+ await sender.SendAsync(new AuthenticationResponse
+ {
+ Serial = config.Serial ?? throw new InvalidDataException(nameof(config.Serial)),
+ Version = Configuration.Version,
+ Hostname = Configuration.Hostname
+ }, cancellationToken);
+
+ break;
+ }
}
}
}
\ No newline at end of file
diff --git a/src/Agent/Insight.Agent/Network/Handlers/CustomHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/CustomHandler.cs
new file mode 100644
index 0000000..8330a6c
--- /dev/null
+++ b/src/Agent/Insight.Agent/Network/Handlers/CustomHandler.cs
@@ -0,0 +1,40 @@
+using Insight.Agent.Services;
+using Insight.Domain.Interfaces;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
+using Microsoft.Extensions.Logging;
+
+namespace Insight.Agent.Network.Handlers;
+
+public class CustomHandler : IMessageHandler
+{
+ private readonly ScriptService _scriptService;
+ private readonly ILogger _logger;
+
+ public CustomHandler(ScriptService scriptService, ILogger logger)
+ {
+ _scriptService = scriptService;
+ _logger = logger;
+ }
+
+ public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
+ {
+ switch (message)
+ {
+ case Request request:
+ await OnRequestAsync(sender, request, cancellationToken);
+ break;
+ }
+ }
+
+ private async ValueTask OnRequestAsync(AgentSession sender, Request request, CancellationToken cancellationToken)
+ {
+ var result = await _scriptService.QueryAsync(request.RequestData);
+
+ await sender.SendAsync(new Response(request)
+ {
+ ResponseData = result.HadErrors ? result.Errors : result.Data,
+ ResponseError = result.HadErrors
+ }, cancellationToken);
+ }
+}
\ No newline at end of file
diff --git a/src/Agent/Insight.Agent/Network/Handlers/DriveHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/DriveHandler.cs
index 14dba70..d18393c 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/DriveHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/DriveHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
@@ -11,12 +11,16 @@ public class DriveHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new DriveList();
- result.AddRange(GetDrives());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetDrives());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/InterfaceHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/InterfaceHandler.cs
index b910c16..e5b5b1b 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/InterfaceHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/InterfaceHandler.cs
@@ -1,12 +1,11 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Net;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
-using Route = Insight.Domain.Messages.Agent.Route;
namespace Insight.Agent.Network.Handlers;
@@ -15,12 +14,16 @@ public class InterfaceHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new InterfaceList();
- result.AddRange(GetInterfaces());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetInterfaces());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/MainboardHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/MainboardHandler.cs
index 0c80c47..4869735 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/MainboardHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/MainboardHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
@@ -11,9 +11,11 @@ public class MainboardHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- await sender.SendAsync(GetMainboard(), cancellationToken);
+ case InventoryRequest:
+ await sender.SendAsync(GetMainboard(), cancellationToken);
+ break;
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/MemoryHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/MemoryHandler.cs
index 34f0460..aea3bce 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/MemoryHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/MemoryHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
@@ -11,12 +11,16 @@ public class MemoryHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new MemoryList();
- result.AddRange(GetMemory());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetMemory());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/OperationSystemHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/OperationSystemHandler.cs
index a925804..ef15546 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/OperationSystemHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/OperationSystemHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using Microsoft.Win32;
using System.Management;
using System.Runtime.InteropServices;
@@ -14,9 +14,11 @@ public class OperationSystemHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- await sender.SendAsync(GetOperatingSystem(), cancellationToken);
+ case InventoryRequest:
+ await sender.SendAsync(GetOperatingSystem(), cancellationToken);
+ break;
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/PrinterHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/PrinterHandler.cs
index 842f9ea..0b241e6 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/PrinterHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/PrinterHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
@@ -11,12 +11,16 @@ public class PrinterHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new PrinterList();
- result.AddRange(GetPrinters());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetPrinters());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/ProcessorHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/ProcessorHandler.cs
index 2d3c72b..7953846 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/ProcessorHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/ProcessorHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
@@ -11,12 +11,16 @@ public class ProcessorHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new ProcessorList();
- result.AddRange(GetProcessors());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetProcessors());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/ProxyHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/ProxyHandler.cs
new file mode 100644
index 0000000..e837e98
--- /dev/null
+++ b/src/Agent/Insight.Agent/Network/Handlers/ProxyHandler.cs
@@ -0,0 +1,44 @@
+using Insight.Agent.Services;
+using Insight.Domain.Interfaces;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
+using Microsoft.Extensions.Logging;
+
+namespace Insight.Agent.Network.Handlers;
+
+public class ProxyHandler : IMessageHandler
+{
+ private readonly ScriptService _scriptService;
+ private readonly ILogger _logger;
+
+ public ProxyHandler(ScriptService scriptService, ILogger logger)
+ {
+ _scriptService = scriptService;
+ _logger = logger;
+ }
+
+ public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
+ {
+ switch (message)
+ {
+ case Proxy proxyRequest:
+ await OnProxyRequestAsync(sender, proxyRequest, cancellationToken);
+ break;
+ }
+ }
+
+ private async ValueTask OnProxyRequestAsync(AgentSession sender, Proxy proxyRequest, CancellationToken cancellationToken)
+ {
+ var result = await _scriptService.QueryAsync(proxyRequest.Message.RequestData);
+
+ await sender.SendAsync(new Proxy()
+ {
+ ProxyId = proxyRequest.ProxyId,
+ Message = new Response(proxyRequest.Message)
+ {
+ ResponseData = result.HadErrors ? result.Errors : result.Data,
+ ResponseError = result.HadErrors
+ }
+ }, cancellationToken);
+ }
+}
\ No newline at end of file
diff --git a/src/Agent/Insight.Agent/Network/Handlers/ServiceHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/ServiceHandler.cs
index e3ce58a..cfe9342 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/ServiceHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/ServiceHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
using System.ServiceProcess;
@@ -12,12 +12,16 @@ public class ServiceHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new ServiceList();
- result.AddRange(GetServices());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetServices());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/SessionHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/SessionHandler.cs
index 3b331ca..b393ae5 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/SessionHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/SessionHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
@@ -11,19 +11,21 @@ public class SessionHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new SessionList();
- result.AddRange(GetSessions());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetSessions());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
private static List GetSessions()
{
- var query = NativeMethods.GetSessions();
-
var sessions = new List();
foreach (var s in NativeMethods.GetSessions())
diff --git a/src/Agent/Insight.Agent/Network/Handlers/SoftwareHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/SoftwareHandler.cs
index c11fd3a..e2c04ca 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/SoftwareHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/SoftwareHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using Microsoft.Win32;
using System.Globalization;
using System.Runtime.InteropServices;
@@ -14,18 +14,22 @@ internal class SoftwareHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var x64 = Task.Run(() => ApplicationRegistryQuery(RegistryView.Registry64), cancellationToken);
- var x86 = Task.Run(() => ApplicationRegistryQuery(RegistryView.Registry32), cancellationToken);
+ case InventoryRequest:
+ {
+ var x64 = Task.Run(() => ApplicationRegistryQuery(RegistryView.Registry64), cancellationToken);
+ var x86 = Task.Run(() => ApplicationRegistryQuery(RegistryView.Registry32), cancellationToken);
- await Task.WhenAll(x64, x86).ConfigureAwait(false);
+ await Task.WhenAll(x64, x86).ConfigureAwait(false);
- var result = new ApplicationList();
- result.AddRange(x64.Result);
- result.AddRange(x86.Result.Where(p => result.All(app => p.Name != app.Name && p.Version != app.Version)));
+ var result = new Collection();
+ result.AddRange(x64.Result);
+ result.AddRange(x86.Result.Where(p => result.All(app => p.Name != app.Name && p.Version != app.Version)));
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/StoragePoolHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/StoragePoolHandler.cs
index 76466c7..18bb8a1 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/StoragePoolHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/StoragePoolHandler.cs
@@ -1,11 +1,11 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
-using static Insight.Domain.Messages.Agent.PhysicalDisk;
-using static Insight.Domain.Messages.Agent.StoragePool;
-using static Insight.Domain.Messages.Agent.VirtualDisk;
+using static Insight.Domain.Network.Agent.Messages.PhysicalDisk;
+using static Insight.Domain.Network.Agent.Messages.StoragePool;
+using static Insight.Domain.Network.Agent.Messages.VirtualDisk;
namespace Insight.Agent.Network.Handlers;
@@ -14,12 +14,16 @@ public class StoragePoolHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new StoragePoolList();
- result.AddRange(GetStoragePool());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetStoragePool());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/SystemInfoHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/SystemInfoHandler.cs
index 132b41f..49269d7 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/SystemInfoHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/SystemInfoHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using Microsoft.Win32;
using System.Collections;
using System.Management;
@@ -13,9 +13,11 @@ public class SystemInfoHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- await sender.SendAsync(GetSystem(), cancellationToken);
+ case InventoryRequest:
+ await sender.SendAsync(GetSystem(), cancellationToken);
+ break;
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/UpdateHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/UpdateHandler.cs
index c90ae74..80454a2 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/UpdateHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/UpdateHandler.cs
@@ -1,10 +1,11 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Runtime.Versioning;
using System.Text.RegularExpressions;
using WUApiLib;
-using static Insight.Domain.Messages.Agent.Update;
+using static Insight.Domain.Network.Agent.Messages.Update;
+using UpdateCollection = Insight.Domain.Network.Agent.Messages.UpdateCollection;
namespace Insight.Agent.Network.Handlers;
@@ -13,21 +14,18 @@ public class UpdateHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- await sender.SendAsync(GetUpdates(), cancellationToken);
+ case InventoryRequest:
+ await sender.SendAsync(new UpdateCollection
+ {
+ Installed = QueryInstalledUpdates(),
+ Pending = QueryPendingUpdates()
+ }, cancellationToken);
+ break;
}
}
- private static UpdateList GetUpdates()
- {
- return new UpdateList
- {
- Installed = QueryInstalledUpdates(),
- Pending = QueryPendingUpdates()
- };
- }
-
private static List QueryInstalledUpdates()
{
var updates = new List();
diff --git a/src/Agent/Insight.Agent/Network/Handlers/UserHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/UserHandler.cs
index 98d07fa..76b5602 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/UserHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/UserHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
@@ -11,12 +11,16 @@ public class UserHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new UserList();
- result.AddRange(GetUsers());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetUsers());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/VideocardHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/VideocardHandler.cs
index 270384b..078c36a 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/VideocardHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/VideocardHandler.cs
@@ -1,6 +1,6 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
@@ -11,12 +11,16 @@ public class VideocardHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new VideocardList();
- result.AddRange(GetVideocards());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetVideocards());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Network/Handlers/VirtualMaschineHandler.cs b/src/Agent/Insight.Agent/Network/Handlers/VirtualMaschineHandler.cs
index 98faa5b..f8c843f 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/VirtualMaschineHandler.cs
+++ b/src/Agent/Insight.Agent/Network/Handlers/VirtualMaschineHandler.cs
@@ -1,10 +1,10 @@
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using System.Management;
using System.Runtime.Versioning;
-using static Insight.Domain.Messages.Agent.VirtualMaschine;
-using static Insight.Domain.Messages.Agent.VirtualMaschineConfiguration;
+using static Insight.Domain.Network.Agent.Messages.VirtualMaschine;
+using static Insight.Domain.Network.Agent.Messages.VirtualMaschineConfiguration;
namespace Insight.Agent.Network.Handlers;
@@ -13,12 +13,16 @@ public class VirtualMaschineHandler : IMessageHandler
{
public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
- if (message is InventoryRequest)
+ switch (message)
{
- var result = new VirtualMaschineList();
- result.AddRange(GetVirtualMaschines());
+ case InventoryRequest:
+ {
+ var result = new Collection();
+ result.AddRange(GetVirtualMaschines());
- await sender.SendAsync(result, cancellationToken);
+ await sender.SendAsync(result, cancellationToken);
+ break;
+ }
}
}
diff --git a/src/Agent/Insight.Agent/Program.cs b/src/Agent/Insight.Agent/Program.cs
index d75f668..807ac7a 100644
--- a/src/Agent/Insight.Agent/Program.cs
+++ b/src/Agent/Insight.Agent/Program.cs
@@ -4,7 +4,7 @@ using Insight.Agent.Network.Handlers;
using Insight.Agent.Services;
using Insight.Domain.Constants;
using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
+using Insight.Domain.Network;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
@@ -44,12 +44,13 @@ internal class Program
builder.ConfigureServices((host, services) =>
{
- // SERVICES
+ // HOST-SERVICES
services.AddHostedService();
services.AddHostedService();
// SERVICES (WINDOWS)
if (OperatingSystem.IsWindows()) services.AddHostedService();
+ if (OperatingSystem.IsWindows()) services.AddSingleton();
// AGENT NETWORKING
services.UseHostedClient(options =>
@@ -62,9 +63,11 @@ internal class Program
options.Compression = true;
options.Encryption = Encryption.Tls12;
- options.UseSerializer, IMessage>();
+ options.UseSerializer>();
});
+ services.AddSingleton, CustomHandler>();
+ services.AddSingleton, ProxyHandler>();
services.AddSingleton, AuthenticationHandler>();
services.AddSingleton, DriveHandler>();
services.AddSingleton, InterfaceHandler>();
@@ -82,9 +85,10 @@ internal class Program
services.AddSingleton, UserHandler>();
services.AddSingleton, VideocardHandler>();
services.AddSingleton, VirtualMaschineHandler>();
- services.AddSingleton, ConsoleHandler>();
+
// GLOBAL DEPENDENCIES
+ //services.AddSingleton();
services.AddTransient(provider => new HttpClient(new HttpClientHandler
{
ClientCertificateOptions = ClientCertificateOption.Manual,
diff --git a/src/Agent/Insight.Agent/Services/EventService.cs b/src/Agent/Insight.Agent/Services/EventService.cs
index 5499c18..b2520a9 100644
--- a/src/Agent/Insight.Agent/Services/EventService.cs
+++ b/src/Agent/Insight.Agent/Services/EventService.cs
@@ -1,13 +1,13 @@
using Insight.Agent.Network;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.Diagnostics.Eventing.Reader;
using System.Runtime.Versioning;
using System.Threading.Channels;
using Vaitr.Network;
-using static Insight.Domain.Messages.Agent.Event;
+using static Insight.Domain.Network.Agent.Messages.Event;
using EventLevel = System.Diagnostics.Tracing.EventLevel;
namespace Insight.Agent.Services;
diff --git a/src/Agent/Insight.Agent/Network/Handlers/ConsoleHandler.cs b/src/Agent/Insight.Agent/Services/ScriptService.cs
similarity index 62%
rename from src/Agent/Insight.Agent/Network/Handlers/ConsoleHandler.cs
rename to src/Agent/Insight.Agent/Services/ScriptService.cs
index 87aed7c..32e4eda 100644
--- a/src/Agent/Insight.Agent/Network/Handlers/ConsoleHandler.cs
+++ b/src/Agent/Insight.Agent/Services/ScriptService.cs
@@ -1,39 +1,19 @@
-using Insight.Domain.Interfaces;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Microsoft.Extensions.Logging;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
-namespace Insight.Agent.Network.Handlers;
+namespace Insight.Agent.Services;
-public class ConsoleHandler : IMessageHandler
+public class ScriptService
{
- public async ValueTask HandleAsync(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
+ private readonly ILogger _logger;
+
+ public ScriptService(ILogger logger)
{
- if (message is Proxy consoleQueryRequest)
- {
- await OnConsoleQueryRequestAsync(sender, consoleQueryRequest, cancellationToken);
- }
+ _logger = logger;
}
- private async ValueTask OnConsoleQueryRequestAsync(AgentSession sender, Proxy consoleQueryRequest, CancellationToken cancellationToken)
- {
- var result = await QueryScriptAsync(consoleQueryRequest.Message.Query);
-
- await sender.SendAsync(new Proxy
- {
- RequestId = consoleQueryRequest.RequestId,
- HostId = consoleQueryRequest.HostId,
- Message = new ConsoleQuery
- {
- Data = result.Data,
- Errors = result.Errors,
- HadErrors = result.HadErrors
- }
- }, cancellationToken);
- }
-
- private static async Task QueryScriptAsync(string query)
+ public async Task QueryAsync(string query)
{
var result = new QueryResult();
var errors = new List();
@@ -47,7 +27,7 @@ public class ConsoleHandler : IMessageHandler
using var ps = PowerShell.Create(runspace);
ps.AddScript("Set-ExecutionPolicy unrestricted -Scope Process");
ps.AddScript(query);
- ps.AddCommand("ConvertTo-Json"); // -Depth 10
+ //ps.AddCommand("ConvertTo-Json"); // -Depth 10
result.Query = query;
@@ -60,7 +40,15 @@ public class ConsoleHandler : IMessageHandler
}
else
{
- result.Data = queryResult[0].ToString();
+ var newLine = false;
+
+ foreach (var data in queryResult)
+ {
+ if (newLine) result.Data += "\n";
+ else newLine = true;
+
+ result.Data += data.ToString();
+ }
//if (string.IsNullOrWhiteSpace(jsonString)) return result;
@@ -103,12 +91,12 @@ public class ConsoleHandler : IMessageHandler
result.Errors = string.Join("\n", errors);
return result;
}
-}
-public class QueryResult
-{
- public bool HadErrors { get; set; }
- public string? Query { get; set; }
- public string? Data { get; set; }
- public string? Errors { get; set; }
+ public class QueryResult
+ {
+ public bool HadErrors { get; set; }
+ public string? Query { get; set; }
+ public string? Data { get; set; }
+ public string? Errors { get; set; }
+ }
}
\ No newline at end of file
diff --git a/src/Agent/Insight.Agent/Services/TrapService.cs b/src/Agent/Insight.Agent/Services/TrapService.cs
index 8e95054..cd1a1a9 100644
--- a/src/Agent/Insight.Agent/Services/TrapService.cs
+++ b/src/Agent/Insight.Agent/Services/TrapService.cs
@@ -1,6 +1,6 @@
using Insight.Agent.Network;
-using Insight.Domain.Messages;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network;
+using Insight.Domain.Network.Agent.Messages;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
diff --git a/src/Agent/Insight.Agent/Services/_Collector/_Os.cs b/src/Agent/Insight.Agent/Services/_Collector/_Os.cs
index 3caa4b2..34db513 100644
--- a/src/Agent/Insight.Agent/Services/_Collector/_Os.cs
+++ b/src/Agent/Insight.Agent/Services/_Collector/_Os.cs
@@ -1,5 +1,5 @@
using Insight.Agent.Extensions;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network.Agent.Messages;
using Microsoft.Extensions.Logging;
using System.Text.RegularExpressions;
diff --git a/src/Agent/Insight.Agent/Services/_Collector/_Session.cs b/src/Agent/Insight.Agent/Services/_Collector/_Session.cs
index e8d1199..fd42981 100644
--- a/src/Agent/Insight.Agent/Services/_Collector/_Session.cs
+++ b/src/Agent/Insight.Agent/Services/_Collector/_Session.cs
@@ -1,5 +1,5 @@
using Insight.Agent.Extensions;
-using Insight.Domain.Messages.Agent;
+using Insight.Domain.Network.Agent.Messages;
using Microsoft.Extensions.Logging;
using System.Text.RegularExpressions;
diff --git a/src/Api/Insight.Api/Insight.Api.csproj b/src/Api/Insight.Api/Insight.Api.csproj
index 8deb797..c1656c2 100644
--- a/src/Api/Insight.Api/Insight.Api.csproj
+++ b/src/Api/Insight.Api/Insight.Api.csproj
@@ -4,7 +4,7 @@
net7.0
Insight
api
- 2023.9.21.1
+ 2023.11.17.0
Insight.Api
enable
enable
@@ -30,17 +30,10 @@
-
+
-
-
-
-
-
-
-
diff --git a/src/Api/Insight.Api/appsettings.json b/src/Api/Insight.Api/appsettings.json
index 84eb581..21706b1 100644
--- a/src/Api/Insight.Api/appsettings.json
+++ b/src/Api/Insight.Api/appsettings.json
@@ -6,4 +6,4 @@
"jwt.exp": 3600,
"jwt.audience": "https://insight.webmatic.de/api",
"jwt.issuer": "https://insight.webmatic.de/api"
-}
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Enums/RemoteControlMode.cs b/src/Core/Insight.Domain/Enums/RemoteControlMode.cs
new file mode 100644
index 0000000..2c764e5
--- /dev/null
+++ b/src/Core/Insight.Domain/Enums/RemoteControlMode.cs
@@ -0,0 +1,8 @@
+namespace Insight.Domain.Enums;
+
+public enum RemoteControlMode
+{
+ Unknown,
+ Unattended,
+ Attended
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Enums/SessionEndReasons.cs b/src/Core/Insight.Domain/Enums/SessionEndReasons.cs
new file mode 100644
index 0000000..bf01052
--- /dev/null
+++ b/src/Core/Insight.Domain/Enums/SessionEndReasons.cs
@@ -0,0 +1,7 @@
+namespace Insight.Domain.Enums;
+
+public enum SessionEndReasons
+{
+ Logoff = 1,
+ SystemShutdown = 2
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Enums/SessionSwitchReason.cs b/src/Core/Insight.Domain/Enums/SessionSwitchReason.cs
new file mode 100644
index 0000000..3785ee9
--- /dev/null
+++ b/src/Core/Insight.Domain/Enums/SessionSwitchReason.cs
@@ -0,0 +1,14 @@
+namespace Insight.Domain.Enums;
+
+public enum SessionSwitchReason
+{
+ ConsoleConnect = 1,
+ ConsoleDisconnect = 2,
+ RemoteConnect = 3,
+ RemoteDisconnect = 4,
+ SessionLogon = 5,
+ SessionLogoff = 6,
+ SessionLock = 7,
+ SessionUnlock = 8,
+ SessionRemoteControl = 9
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Insight.Domain.csproj b/src/Core/Insight.Domain/Insight.Domain.csproj
index 1ffd066..135a8e4 100644
--- a/src/Core/Insight.Domain/Insight.Domain.csproj
+++ b/src/Core/Insight.Domain/Insight.Domain.csproj
@@ -6,11 +6,11 @@
enable
Insight.Domain
Insight
- 2023.9.21.1
+ 2023.11.17.0
-
+
diff --git a/src/Core/Insight.Domain/Interfaces/IAgentMessageHandler.cs b/src/Core/Insight.Domain/Interfaces/IMessageHandler.cs
similarity index 86%
rename from src/Core/Insight.Domain/Interfaces/IAgentMessageHandler.cs
rename to src/Core/Insight.Domain/Interfaces/IMessageHandler.cs
index b420e74..1c0d3cb 100644
--- a/src/Core/Insight.Domain/Interfaces/IAgentMessageHandler.cs
+++ b/src/Core/Insight.Domain/Interfaces/IMessageHandler.cs
@@ -1,4 +1,4 @@
-using Insight.Domain.Messages;
+using Insight.Domain.Network;
namespace Insight.Domain.Interfaces;
diff --git a/src/Core/Insight.Domain/Messages/Agent/ConsoleQuery.cs b/src/Core/Insight.Domain/Messages/Agent/ConsoleQuery.cs
deleted file mode 100644
index c878462..0000000
--- a/src/Core/Insight.Domain/Messages/Agent/ConsoleQuery.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using MemoryPack;
-
-namespace Insight.Domain.Messages.Agent;
-
-[MemoryPackable]
-public partial class ConsoleQuery : IMessage
-{
- [MemoryPackOrder(0)]
- public string? Data { get; set; }
-
- [MemoryPackOrder(1)]
- public string? Errors { get; set; }
-
- [MemoryPackOrder(2)]
- public bool HadErrors { get; set; }
-}
-
-[MemoryPackable]
-public partial class ConsoleQueryRequest : IMessage
-{
- [MemoryPackOrder(0)]
- public string? Query { get; set; }
-}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/IMessage.cs b/src/Core/Insight.Domain/Messages/IMessage.cs
deleted file mode 100644
index 1d9ff68..0000000
--- a/src/Core/Insight.Domain/Messages/IMessage.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using MemoryPack;
-
-namespace Insight.Domain.Messages;
-
-[MemoryPackable]
-[MemoryPackUnion(0, typeof(Keepalive))]
-[MemoryPackUnion(1, typeof(Agent.AuthenticationRequest))]
-[MemoryPackUnion(2, typeof(Agent.Authentication))]
-[MemoryPackUnion(10, typeof(Agent.InventoryRequest))]
-[MemoryPackUnion(100, typeof(Agent.Application))]
-[MemoryPackUnion(101, typeof(Agent.ApplicationList))]
-[MemoryPackUnion(102, typeof(Agent.Drive))]
-[MemoryPackUnion(103, typeof(Agent.DriveList))]
-[MemoryPackUnion(104, typeof(Agent.Event))]
-[MemoryPackUnion(105, typeof(Agent.Interface))]
-[MemoryPackUnion(106, typeof(Agent.InterfaceList))]
-[MemoryPackUnion(107, typeof(Agent.Mainboard))]
-[MemoryPackUnion(108, typeof(Agent.Memory))]
-[MemoryPackUnion(109, typeof(Agent.MemoryList))]
-[MemoryPackUnion(110, typeof(Agent.OperationSystem))]
-[MemoryPackUnion(111, typeof(Agent.Printer))]
-[MemoryPackUnion(112, typeof(Agent.PrinterList))]
-[MemoryPackUnion(113, typeof(Agent.Processor))]
-[MemoryPackUnion(114, typeof(Agent.ProcessorList))]
-[MemoryPackUnion(115, typeof(Agent.Service))]
-[MemoryPackUnion(116, typeof(Agent.ServiceList))]
-[MemoryPackUnion(117, typeof(Agent.Session))]
-[MemoryPackUnion(118, typeof(Agent.SessionList))]
-[MemoryPackUnion(119, typeof(Agent.Status))]
-[MemoryPackUnion(120, typeof(Agent.StoragePool))]
-[MemoryPackUnion(121, typeof(Agent.StoragePoolList))]
-[MemoryPackUnion(122, typeof(Agent.SystemInfo))]
-[MemoryPackUnion(123, typeof(Agent.Trap))]
-[MemoryPackUnion(124, typeof(Agent.Update))]
-[MemoryPackUnion(125, typeof(Agent.UpdateList))]
-[MemoryPackUnion(126, typeof(Agent.User))]
-[MemoryPackUnion(127, typeof(Agent.UserList))]
-[MemoryPackUnion(128, typeof(Agent.Videocard))]
-[MemoryPackUnion(129, typeof(Agent.VideocardList))]
-[MemoryPackUnion(130, typeof(Agent.VirtualMaschine))]
-[MemoryPackUnion(131, typeof(Agent.VirtualMaschineList))]
-[MemoryPackUnion(132, typeof(Agent.ConsoleQuery))]
-[MemoryPackUnion(133, typeof(Agent.ConsoleQueryRequest))]
-[MemoryPackUnion(1000, typeof(Proxy))]
-[MemoryPackUnion(1001, typeof(Proxy))]
-public partial interface IMessage { }
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Keepalive.cs b/src/Core/Insight.Domain/Messages/Keepalive.cs
deleted file mode 100644
index 3991383..0000000
--- a/src/Core/Insight.Domain/Messages/Keepalive.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-using MemoryPack;
-
-namespace Insight.Domain.Messages;
-
-[MemoryPackable]
-public partial class Keepalive : IMessage { }
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Models/Result.cs b/src/Core/Insight.Domain/Models/Result.cs
new file mode 100644
index 0000000..85f6934
--- /dev/null
+++ b/src/Core/Insight.Domain/Models/Result.cs
@@ -0,0 +1,148 @@
+using MessagePack;
+using System.Diagnostics.CodeAnalysis;
+using System.Runtime.Serialization;
+using System.Text.Json.Serialization;
+
+namespace RemoteControl.Shared;
+
+///
+/// Describes the success or failure of any kind of operation.
+///
+[DataContract]
+public class Result
+{
+ ///
+ /// For serialization only.
+ ///
+ [SerializationConstructor]
+ [JsonConstructor]
+ public Result() { }
+
+ public Result(bool isSuccess, string reason = "", Exception? exception = null)
+ {
+ if (!isSuccess && exception is null && string.IsNullOrWhiteSpace(reason))
+ {
+ throw new ArgumentException("A reason or exception must be supplied for an unsuccessful result.");
+ }
+
+ IsSuccess = isSuccess;
+ Exception = exception;
+ Reason = reason;
+ }
+
+ [IgnoreDataMember]
+ public Exception? Exception { get; init; }
+
+ [IgnoreDataMember]
+ [MemberNotNullWhen(true, nameof(Exception))]
+ public bool HadException => Exception is not null;
+
+ [DataMember]
+ public bool IsSuccess { get; init; }
+
+ [DataMember]
+ public string Reason { get; init; } = string.Empty;
+
+
+ public static Result Fail(string reason)
+ {
+ return new Result(false, reason);
+ }
+
+ public static Result Fail(Exception ex)
+ {
+ return new Result(false, string.Empty, ex);
+ }
+
+ public static Result Fail(string reason)
+ {
+ return new Result(reason);
+ }
+
+ public static Result Fail(Exception ex)
+ {
+ return new Result(ex);
+ }
+
+ public static Result Ok()
+ {
+ return new Result(true);
+ }
+
+ public static Result Ok(T value)
+ {
+ return new Result(value);
+ }
+}
+
+
+///
+/// Describes the success or failure of any kind of operation.
+///
+[DataContract]
+public class Result
+{
+ ///
+ /// Returns a successful result with the given value.
+ ///
+ ///
+ public Result(T value)
+ {
+ IsSuccess = true;
+ Value = value;
+ }
+
+ ///
+ /// Returns an unsuccessful result with the given exception.
+ ///
+ ///
+ public Result(Exception exception)
+ {
+ IsSuccess = false;
+ Exception = exception;
+ Reason = exception.Message;
+ }
+
+ ///
+ /// Returns an unsuccessful result with the given reason.
+ ///
+ ///
+ ///
+ public Result(string reason)
+ {
+ IsSuccess = false;
+ Reason = reason;
+ }
+
+ ///
+ /// For serialization only.
+ ///
+ [SerializationConstructor]
+ [JsonConstructor]
+ public Result() { }
+
+ public Result(Exception? exception, bool isSuccess, string reason, T? value)
+ {
+ Exception = exception;
+ IsSuccess = isSuccess;
+ Reason = reason;
+ Value = value;
+ }
+
+ [IgnoreDataMember]
+ public Exception? Exception { get; init; }
+
+ [IgnoreDataMember]
+ [MemberNotNullWhen(true, nameof(Exception))]
+ public bool HadException => Exception is not null;
+
+ [DataMember]
+ [MemberNotNullWhen(true, nameof(Value))]
+ public bool IsSuccess { get; init; }
+
+ [DataMember]
+ public string Reason { get; init; } = string.Empty;
+
+ [DataMember]
+ public T? Value { get; init; }
+}
diff --git a/src/Core/Insight.Domain/Messages/Agent/Application.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Application.cs
similarity index 81%
rename from src/Core/Insight.Domain/Messages/Agent/Application.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Application.cs
index 45c6696..fc2db2f 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Application.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Application.cs
@@ -1,7 +1,7 @@
using MemoryPack;
using System.Runtime.InteropServices;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Application : IMessage
@@ -29,7 +29,4 @@ public partial class Application : IMessage
[MemoryPackOrder(7)]
public Architecture? Architecture { get; set; }
-}
-
-[MemoryPackable(GenerateType.Collection)]
-public partial class ApplicationList : List, IMessage { }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Agent/Authentication.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Authentication.cs
similarity index 72%
rename from src/Core/Insight.Domain/Messages/Agent/Authentication.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Authentication.cs
index b5841ce..566d490 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Authentication.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Authentication.cs
@@ -1,9 +1,12 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
-public partial class Authentication : IMessage
+public partial class AuthenticationRequest : IMessage { }
+
+[MemoryPackable]
+public partial class AuthenticationResponse : IMessage
{
[MemoryPackOrder(0)]
public PlatformType? Platform { get; set; }
@@ -23,7 +26,4 @@ public partial class Authentication : IMessage
Windows = 1,
Unix = 2
}
-}
-
-[MemoryPackable]
-public partial class AuthenticationRequest : IMessage { }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Agent/Commands.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Commands.cs
similarity index 65%
rename from src/Core/Insight.Domain/Messages/Agent/Commands.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Commands.cs
index 71853ea..e8b32b6 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Commands.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Commands.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class InventoryRequest : IMessage { }
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Agent/Drive.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Drive.cs
similarity index 93%
rename from src/Core/Insight.Domain/Messages/Agent/Drive.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Drive.cs
index 8ac952b..8d8d556 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Drive.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Drive.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Drive : IMessage
@@ -39,9 +39,6 @@ public partial class Drive : IMessage
public List? Volumes { get; set; }
}
-[MemoryPackable(GenerateType.Collection)]
-public partial class DriveList : List, IMessage { }
-
[MemoryPackable]
public partial class Volume : IMessage
{
diff --git a/src/Core/Insight.Domain/Messages/Agent/Event.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Event.cs
similarity index 93%
rename from src/Core/Insight.Domain/Messages/Agent/Event.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Event.cs
index 99bb231..1afb844 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Event.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Event.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Event : IMessage
diff --git a/src/Core/Insight.Domain/Messages/Agent/Interface.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Interface.cs
similarity index 96%
rename from src/Core/Insight.Domain/Messages/Agent/Interface.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Interface.cs
index 265470d..3c985b6 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Interface.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Interface.cs
@@ -3,7 +3,7 @@ using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Interface : IMessage
@@ -90,9 +90,6 @@ public partial class Interface : IMessage
public List? Routes { get; set; }
}
-[MemoryPackable(GenerateType.Collection)]
-public partial class InterfaceList : List, IMessage { }
-
[MemoryPackable]
public partial class Unicast : IMessage
{
diff --git a/src/Core/Insight.Domain/Messages/Agent/Mainboard.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Mainboard.cs
similarity index 91%
rename from src/Core/Insight.Domain/Messages/Agent/Mainboard.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Mainboard.cs
index 05d44c5..463c12b 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Mainboard.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Mainboard.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Mainboard : IMessage
diff --git a/src/Core/Insight.Domain/Messages/Agent/Memory.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Memory.cs
similarity index 89%
rename from src/Core/Insight.Domain/Messages/Agent/Memory.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Memory.cs
index eb42f38..d11ddaf 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Memory.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Memory.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Memory : IMessage
@@ -39,9 +39,6 @@ public partial class Memory : IMessage
public uint? ConfiguredVoltage { get; set; }
}
-[MemoryPackable(GenerateType.Collection)]
-public partial class MemoryList : List, IMessage { }
-
[MemoryPackable]
public partial class MemoryMetric : IMessage
{
diff --git a/src/Core/Insight.Domain/Messages/Agent/OperationSystem.cs b/src/Core/Insight.Domain/Network/Agent/Messages/OperationSystem.cs
similarity index 91%
rename from src/Core/Insight.Domain/Messages/Agent/OperationSystem.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/OperationSystem.cs
index 80bd6ff..3eb9602 100644
--- a/src/Core/Insight.Domain/Messages/Agent/OperationSystem.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/OperationSystem.cs
@@ -1,7 +1,7 @@
using MemoryPack;
using System.Runtime.InteropServices;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class OperationSystem : IMessage
diff --git a/src/Core/Insight.Domain/Messages/Agent/Printer.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Printer.cs
similarity index 73%
rename from src/Core/Insight.Domain/Messages/Agent/Printer.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Printer.cs
index f77a4a7..743fc2c 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Printer.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Printer.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Printer : IMessage
@@ -19,7 +19,4 @@ public partial class Printer : IMessage
[MemoryPackOrder(4)]
public string? Comment { get; set; }
-}
-
-[MemoryPackable(GenerateType.Collection)]
-public partial class PrinterList : List, IMessage { }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Agent/Processor.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Processor.cs
similarity index 89%
rename from src/Core/Insight.Domain/Messages/Agent/Processor.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Processor.cs
index c11f496..94ce8be 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Processor.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Processor.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Processor : IMessage
@@ -51,9 +51,6 @@ public partial class Processor : IMessage
public bool? Virtualization { get; set; }
}
-[MemoryPackable(GenerateType.Collection)]
-public partial class ProcessorList : List, IMessage { }
-
[MemoryPackable]
public partial class ProcessorMetric : IMessage
{
diff --git a/src/Core/Insight.Domain/Network/Agent/Messages/Query.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Query.cs
new file mode 100644
index 0000000..9bd2363
--- /dev/null
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Query.cs
@@ -0,0 +1,61 @@
+using MemoryPack;
+
+namespace Insight.Domain.Network.Agent.Messages;
+
+[MemoryPackable]
+public partial class Request : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? RequestId { get; set; }
+
+ [MemoryPackOrder(1)]
+ public string? RequestData { get; set; }
+}
+
+[MemoryPackable]
+public partial class Response : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? RequestId { get; set; }
+
+ [MemoryPackOrder(1)]
+ public string? RequestData { get; set; }
+
+ [MemoryPackOrder(2)]
+ public string? ResponseId { get; set; }
+
+ [MemoryPackOrder(3)]
+ public string? ResponseData { get; set; }
+
+ [MemoryPackOrder(4)]
+ public bool? ResponseError { get; set; }
+
+ [MemoryPackConstructor]
+ public Response() { }
+
+ public Response(Request request)
+ {
+ RequestId = request.RequestId;
+ RequestData = request.RequestData;
+ }
+}
+
+//[MemoryPackable]
+//public partial class ConsoleQueryRequest : IMessage
+//{
+// [MemoryPackOrder(0)]
+// public string? Query { get; set; }
+//}
+
+//[MemoryPackable]
+//public partial class ConsoleQueryResponse : IMessage
+//{
+// [MemoryPackOrder(0)]
+// public string? Data { get; set; }
+
+// [MemoryPackOrder(1)]
+// public string? Errors { get; set; }
+
+// [MemoryPackOrder(2)]
+// public bool HadErrors { get; set; }
+//}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Agent/Service.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Service.cs
similarity index 88%
rename from src/Core/Insight.Domain/Messages/Agent/Service.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Service.cs
index eb61f63..4d7a51b 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Service.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Service.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Service : IMessage
@@ -53,7 +53,4 @@ public partial class Service : IMessage
Manual = 3,
Disabled = 4
}
-}
-
-[MemoryPackable(GenerateType.Collection)]
-public partial class ServiceList : List, IMessage { }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Agent/Session.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Session.cs
similarity index 73%
rename from src/Core/Insight.Domain/Messages/Agent/Session.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Session.cs
index a9d68b8..024db30 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Session.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Session.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Session : IMessage
@@ -19,7 +19,4 @@ public partial class Session : IMessage
[MemoryPackOrder(4)]
public string? Remote { get; set; }
-}
-
-[MemoryPackable(GenerateType.Collection)]
-public partial class SessionList : List, IMessage { }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Agent/Status.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Status.cs
similarity index 82%
rename from src/Core/Insight.Domain/Messages/Agent/Status.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Status.cs
index 59264d3..ec59e1f 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Status.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Status.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Status : IMessage
diff --git a/src/Core/Insight.Domain/Messages/Agent/StoragePool.cs b/src/Core/Insight.Domain/Network/Agent/Messages/StoragePool.cs
similarity index 97%
rename from src/Core/Insight.Domain/Messages/Agent/StoragePool.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/StoragePool.cs
index 3d39ed9..d2d22da 100644
--- a/src/Core/Insight.Domain/Messages/Agent/StoragePool.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/StoragePool.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class StoragePool : IMessage
@@ -90,9 +90,6 @@ public partial class StoragePool : IMessage
}
}
-[MemoryPackable(GenerateType.Collection)]
-public partial class StoragePoolList : List, IMessage { }
-
[MemoryPackable]
public partial class PhysicalDisk : IMessage
{
diff --git a/src/Core/Insight.Domain/Messages/Agent/SystemInfo.cs b/src/Core/Insight.Domain/Network/Agent/Messages/SystemInfo.cs
similarity index 88%
rename from src/Core/Insight.Domain/Messages/Agent/SystemInfo.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/SystemInfo.cs
index 641202b..187abfd 100644
--- a/src/Core/Insight.Domain/Messages/Agent/SystemInfo.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/SystemInfo.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class SystemInfo : IMessage
diff --git a/src/Core/Insight.Domain/Messages/Agent/Trap.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Trap.cs
similarity index 91%
rename from src/Core/Insight.Domain/Messages/Agent/Trap.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Trap.cs
index a2cd071..e2199ae 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Trap.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Trap.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Trap : IMessage
diff --git a/src/Core/Insight.Domain/Messages/Agent/Update.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Update.cs
similarity index 94%
rename from src/Core/Insight.Domain/Messages/Agent/Update.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Update.cs
index cf4b51f..5a039cb 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Update.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Update.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Update : IMessage
@@ -68,7 +68,7 @@ public partial class Update : IMessage
}
[MemoryPackable]
-public partial class UpdateList : IMessage
+public partial class UpdateCollection : IMessage
{
[MemoryPackOrder(0)]
public List? Installed { get; set; }
diff --git a/src/Core/Insight.Domain/Messages/Agent/User.cs b/src/Core/Insight.Domain/Network/Agent/Messages/User.cs
similarity index 90%
rename from src/Core/Insight.Domain/Messages/Agent/User.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/User.cs
index 2ca6aed..5417641 100644
--- a/src/Core/Insight.Domain/Messages/Agent/User.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/User.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class User : IMessage
@@ -45,9 +45,6 @@ public partial class User : IMessage
public List? Groups { get; set; }
}
-[MemoryPackable(GenerateType.Collection)]
-public partial class UserList : List, IMessage { }
-
[MemoryPackable]
public partial class Group : IMessage
{
diff --git a/src/Core/Insight.Domain/Messages/Agent/Videocard.cs b/src/Core/Insight.Domain/Network/Agent/Messages/Videocard.cs
similarity index 73%
rename from src/Core/Insight.Domain/Messages/Agent/Videocard.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/Videocard.cs
index 0bc8dcf..f651294 100644
--- a/src/Core/Insight.Domain/Messages/Agent/Videocard.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/Videocard.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Videocard : IMessage
@@ -19,7 +19,4 @@ public partial class Videocard : IMessage
[MemoryPackOrder(4)]
public string? DriverVersion { get; set; }
-}
-
-[MemoryPackable(GenerateType.Collection)]
-public partial class VideocardList : List, IMessage { }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Agent/VirtualMaschine.cs b/src/Core/Insight.Domain/Network/Agent/Messages/VirtualMaschine.cs
similarity index 97%
rename from src/Core/Insight.Domain/Messages/Agent/VirtualMaschine.cs
rename to src/Core/Insight.Domain/Network/Agent/Messages/VirtualMaschine.cs
index e630502..7e2eef5 100644
--- a/src/Core/Insight.Domain/Messages/Agent/VirtualMaschine.cs
+++ b/src/Core/Insight.Domain/Network/Agent/Messages/VirtualMaschine.cs
@@ -1,6 +1,6 @@
using MemoryPack;
-namespace Insight.Domain.Messages.Agent;
+namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class VirtualMaschine : IMessage
@@ -150,9 +150,6 @@ public partial class VirtualMaschine : IMessage
}
}
-[MemoryPackable(GenerateType.Collection)]
-public partial class VirtualMaschineList : List, IMessage { }
-
[MemoryPackable]
public partial class VirtualMaschineConfiguration : IMessage
{
diff --git a/src/Core/Insight.Domain/Network/Collection.cs b/src/Core/Insight.Domain/Network/Collection.cs
new file mode 100644
index 0000000..7466c26
--- /dev/null
+++ b/src/Core/Insight.Domain/Network/Collection.cs
@@ -0,0 +1,7 @@
+using MemoryPack;
+
+namespace Insight.Domain.Network;
+
+[MemoryPackable(GenerateType.Collection)]
+public partial class Collection : List, IMessage where TMessage : IMessage
+{ }
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Network/IMessage.cs b/src/Core/Insight.Domain/Network/IMessage.cs
new file mode 100644
index 0000000..39da489
--- /dev/null
+++ b/src/Core/Insight.Domain/Network/IMessage.cs
@@ -0,0 +1,54 @@
+using MemoryPack;
+
+namespace Insight.Domain.Network;
+
+// AGENT [0 - 99]
+[MemoryPackUnion(0, typeof(Agent.Messages.AuthenticationRequest))]
+[MemoryPackUnion(1, typeof(Agent.Messages.AuthenticationResponse))]
+[MemoryPackUnion(2, typeof(Agent.Messages.InventoryRequest))]
+//[MemoryPackUnion(3, typeof(Agent.Messages.ConsoleQueryRequest))]
+//[MemoryPackUnion(4, typeof(Agent.Messages.ConsoleQueryResponse))]
+//[MemoryPackUnion(5, typeof(Proxy))]
+//[MemoryPackUnion(6, typeof(Proxy))]
+[MemoryPackUnion(7, typeof(Agent.Messages.Event))]
+[MemoryPackUnion(8, typeof(Agent.Messages.Trap))]
+[MemoryPackUnion(9, typeof(Agent.Messages.Mainboard))]
+[MemoryPackUnion(10, typeof(Agent.Messages.OperationSystem))]
+[MemoryPackUnion(11, typeof(Agent.Messages.Status))]
+[MemoryPackUnion(12, typeof(Agent.Messages.SystemInfo))]
+[MemoryPackUnion(13, typeof(Collection))]
+[MemoryPackUnion(14, typeof(Collection))]
+[MemoryPackUnion(15, typeof(Collection))]
+[MemoryPackUnion(16, typeof(Collection))]
+[MemoryPackUnion(17, typeof(Collection))]
+[MemoryPackUnion(18, typeof(Collection))]
+[MemoryPackUnion(19, typeof(Collection))]
+[MemoryPackUnion(20, typeof(Collection))]
+[MemoryPackUnion(21, typeof(Collection))]
+[MemoryPackUnion(22, typeof(Agent.Messages.UpdateCollection))]
+[MemoryPackUnion(23, typeof(Collection))]
+[MemoryPackUnion(24, typeof(Collection))]
+[MemoryPackUnion(25, typeof(Collection))]
+
+[MemoryPackUnion(50, typeof(Agent.Messages.Request))]
+[MemoryPackUnion(51, typeof(Agent.Messages.Response))]
+[MemoryPackUnion(52, typeof(Proxy))]
+[MemoryPackUnion(53, typeof(Proxy))]
+
+// REMOTE [100 - 199]
+[MemoryPackUnion(102, typeof(Remote.Messages.RemoteSessionRequest))]
+[MemoryPackUnion(103, typeof(Remote.Messages.RemoteSessionResponse))]
+[MemoryPackUnion(104, typeof(Remote.Messages.CastRequest))]
+[MemoryPackUnion(105, typeof(Remote.Messages.CastRequestResponse))]
+[MemoryPackUnion(107, typeof(Remote.Messages.CastAbort))]
+[MemoryPackUnion(108, typeof(Remote.Messages.CastMetric))]
+[MemoryPackUnion(109, typeof(Remote.Messages.CastDisplay))]
+[MemoryPackUnion(110, typeof(Remote.Messages.CastScreen))]
+[MemoryPackUnion(111, typeof(Remote.Messages.CastScreenReceived))]
+[MemoryPackUnion(112, typeof(Remote.Messages.CastCursor))]
+[MemoryPackUnion(113, typeof(Remote.Messages.CastCursorReceived))]
+[MemoryPackUnion(114, typeof(Remote.Messages.CastClipboardReceived))]
+[MemoryPackUnion(115, typeof(Remote.Messages.CastAudio))]
+
+[MemoryPackable]
+public partial interface IMessage { }
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Messages/Proxy.cs b/src/Core/Insight.Domain/Network/Proxy.cs
similarity index 59%
rename from src/Core/Insight.Domain/Messages/Proxy.cs
rename to src/Core/Insight.Domain/Network/Proxy.cs
index a322ba6..a16fb78 100644
--- a/src/Core/Insight.Domain/Messages/Proxy.cs
+++ b/src/Core/Insight.Domain/Network/Proxy.cs
@@ -1,17 +1,14 @@
using MemoryPack;
-namespace Insight.Domain.Messages;
+namespace Insight.Domain.Network;
[MemoryPackable]
public partial class Proxy : IMessage
where TMessage : IMessage
{
[MemoryPackOrder(0)]
- public string? RequestId { get; set; }
+ public string? ProxyId { get; set; }
[MemoryPackOrder(1)]
- public string? HostId { get; set; }
-
- [MemoryPackOrder(2)]
public TMessage? Message { get; set; }
}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Network/Remote/Messages/Session.cs b/src/Core/Insight.Domain/Network/Remote/Messages/Session.cs
new file mode 100644
index 0000000..1a1ecca
--- /dev/null
+++ b/src/Core/Insight.Domain/Network/Remote/Messages/Session.cs
@@ -0,0 +1,24 @@
+using Insight.Domain.Enums;
+using MemoryPack;
+
+namespace Insight.Domain.Network.Remote.Messages;
+
+[MemoryPackable]
+public partial class RemoteSessionRequest : IMessage
+{
+ [MemoryPackOrder(0)]
+ public RemoteControlMode Mode { get; set; }
+
+ [MemoryPackOrder(1)]
+ public string? AccessKey { get; set; }
+
+ [MemoryPackOrder(2)]
+ public string? Hostname { get; set; }
+}
+
+[MemoryPackable]
+public partial class RemoteSessionResponse : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? SessionId { get; set; }
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Domain/Network/Remote/Messages/Stream.cs b/src/Core/Insight.Domain/Network/Remote/Messages/Stream.cs
new file mode 100644
index 0000000..e1a9ba0
--- /dev/null
+++ b/src/Core/Insight.Domain/Network/Remote/Messages/Stream.cs
@@ -0,0 +1,185 @@
+using Insight.Domain.Enums;
+using MemoryPack;
+
+namespace Insight.Domain.Network.Remote.Messages;
+
+[MemoryPackable]
+public partial class CastRequest : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public RemoteControlMode Mode { get; set; }
+
+ [MemoryPackOrder(2)]
+ public string? RequesterName { get; set; }
+
+ [MemoryPackOrder(3)]
+ public string? AccessKey { get; set; }
+}
+
+[MemoryPackable]
+public partial class CastRequestResponse : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(0)]
+ public bool Accepted { get; set; }
+
+ [MemoryPackConstructor]
+ public CastRequestResponse() { }
+
+ public CastRequestResponse(CastRequest request)
+ {
+ Id = request.Id;
+ }
+}
+
+[MemoryPackable]
+public partial class CastAbort : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+}
+
+[MemoryPackable]
+public partial class CastMetric : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public DateTimeOffset? Timestamp { get; set; }
+
+ [MemoryPackOrder(2)]
+ public double? Mbps { get; set; }
+
+ [MemoryPackOrder(3)]
+ public double? Fps { get; set; }
+
+ [MemoryPackOrder(4)]
+ public double? RTT { get; set; }
+}
+
+[MemoryPackable]
+public partial class CastDisplay : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public IEnumerable? DisplayNames { get; set; }
+
+ [MemoryPackOrder(2)]
+ public string? SelectedDisplay { get; set; }
+
+ [MemoryPackOrder(3)]
+ public int ScreenWidth { get; set; }
+
+ [MemoryPackOrder(4)]
+ public int ScreenHeight { get; set; }
+
+ [MemoryPackOrder(5)]
+ public string? MachineName { get; set; }
+}
+
+[MemoryPackable]
+public partial class CastScreen : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public DateTimeOffset? Timestamp { get; set; }
+
+ [MemoryPackOrder(2)]
+ public float? ViewWidth { get; set; }
+
+ [MemoryPackOrder(3)]
+ public float? ViewHeight { get; set; }
+
+ [MemoryPackOrder(4)]
+ public float? Left { get; set; }
+
+ [MemoryPackOrder(5)]
+ public float? Top { get; set; }
+
+ [MemoryPackOrder(6)]
+ public float? Width { get; set; }
+
+ [MemoryPackOrder(7)]
+ public float? Height { get; set; }
+
+ [MemoryPackOrder(8)]
+ public byte[]? Image { get; set; }
+}
+
+[MemoryPackable]
+public partial class CastScreenReceived : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public DateTimeOffset? Timestamp { get; set; }
+
+ [MemoryPackConstructor]
+ public CastScreenReceived() { }
+
+ public CastScreenReceived(CastScreen screenData)
+ {
+ Id = screenData.Id;
+ Timestamp = screenData.Timestamp;
+ }
+}
+
+[MemoryPackable]
+public partial class CastCursor : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public int X { get; set; }
+
+ [MemoryPackOrder(2)]
+ public int Y { get; set; }
+
+ [MemoryPackOrder(3)]
+ public byte[]? Icon { get; set; }
+}
+
+[MemoryPackable]
+public partial class CastCursorReceived : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public int X { get; set; }
+
+ [MemoryPackOrder(2)]
+ public int Y { get; set; }
+}
+
+[MemoryPackable]
+public partial class CastClipboardReceived : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public string? Text { get; set; }
+}
+
+[MemoryPackable]
+public partial class CastAudio : IMessage
+{
+ [MemoryPackOrder(0)]
+ public string? Id { get; set; }
+
+ [MemoryPackOrder(1)]
+ public byte[]? Buffer { get; set; }
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Infrastructure/Constants/Appsettings.cs b/src/Core/Insight.Infrastructure/Constants/Appsettings.cs
index 2d45d12..e1adf44 100644
--- a/src/Core/Insight.Infrastructure/Constants/Appsettings.cs
+++ b/src/Core/Insight.Infrastructure/Constants/Appsettings.cs
@@ -10,4 +10,8 @@ public class Appsettings
public const string ServerHost = "server.host";
public const string ServerPort = "server.port";
+
+ public const string RemoteServerPort = "remote.port";
+ public const string RemoteServerCertificate = "remote.certificate";
+ public const string RemoteServerCertificatePassword = "remote.certificate.password";
}
\ No newline at end of file
diff --git a/src/Core/Insight.Infrastructure/Entities/Agent.cs b/src/Core/Insight.Infrastructure/Entities/Agent/Agent.cs
similarity index 88%
rename from src/Core/Insight.Infrastructure/Entities/Agent.cs
rename to src/Core/Insight.Infrastructure/Entities/Agent/Agent.cs
index 1f4109e..e673e8e 100644
--- a/src/Core/Insight.Infrastructure/Entities/Agent.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Agent/Agent.cs
@@ -1,10 +1,16 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection Agent(this IMongoDatabase database) => database.GetCollection("agent");
+}
+
[BsonIgnoreExtraElements]
public class AgentEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/AgentLog.cs b/src/Core/Insight.Infrastructure/Entities/Agent/AgentLog.cs
similarity index 80%
rename from src/Core/Insight.Infrastructure/Entities/AgentLog.cs
rename to src/Core/Insight.Infrastructure/Entities/Agent/AgentLog.cs
index 9cbd8cb..b8fc06e 100644
--- a/src/Core/Insight.Infrastructure/Entities/AgentLog.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Agent/AgentLog.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection AgentLog(this IMongoDatabase database) => database.GetCollection("agent_log");
+}
+
[BsonIgnoreExtraElements]
public class AgentLogEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/Customer.cs b/src/Core/Insight.Infrastructure/Entities/Customer/Customer.cs
similarity index 76%
rename from src/Core/Insight.Infrastructure/Entities/Customer.cs
rename to src/Core/Insight.Infrastructure/Entities/Customer/Customer.cs
index e6a23fe..8a1b737 100644
--- a/src/Core/Insight.Infrastructure/Entities/Customer.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Customer/Customer.cs
@@ -1,10 +1,16 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection Customer(this IMongoDatabase database) => database.GetCollection("customer");
+}
+
[BsonIgnoreExtraElements]
public class CustomerEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/Host.cs b/src/Core/Insight.Infrastructure/Entities/Host/Host.cs
similarity index 84%
rename from src/Core/Insight.Infrastructure/Entities/Host.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/Host.cs
index 1766708..2e065c8 100644
--- a/src/Core/Insight.Infrastructure/Entities/Host.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/Host.cs
@@ -1,10 +1,16 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection Host(this IMongoDatabase database) => database.GetCollection("host");
+}
+
[BsonIgnoreExtraElements]
public class HostEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostApplication.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostApplication.cs
similarity index 81%
rename from src/Core/Insight.Infrastructure/Entities/HostApplication.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostApplication.cs
index 8d1b52b..388b522 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostApplication.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostApplication.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostApplication(this IMongoDatabase database) => database.GetCollection("host_app");
+}
+
[BsonIgnoreExtraElements]
public class HostApplicationEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostDrive.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostDrive.cs
similarity index 85%
rename from src/Core/Insight.Infrastructure/Entities/HostDrive.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostDrive.cs
index 2e77a64..72d46e7 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostDrive.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostDrive.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostDrive(this IMongoDatabase database) => database.GetCollection("host_drv");
+}
+
[BsonIgnoreExtraElements]
public class HostDriveEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostHypervisor.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostHypervisor.cs
similarity index 91%
rename from src/Core/Insight.Infrastructure/Entities/HostHypervisor.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostHypervisor.cs
index abbdf4b..0bfdcb5 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostHypervisor.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostHypervisor.cs
@@ -1,9 +1,16 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostHypervisorVirtualMaschine(this IMongoDatabase database) => database.GetCollection("host_hv_vm");
+ public static IMongoCollection HostVirtualMaschineConfig(this IMongoDatabase database) => database.GetCollection("host_hv_vm_cfg");
+}
+
[BsonIgnoreExtraElements]
public class HostHypervisorVirtualMaschineEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostInterface.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostInterface.cs
similarity index 86%
rename from src/Core/Insight.Infrastructure/Entities/HostInterface.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostInterface.cs
index 4761f12..7756a47 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostInterface.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostInterface.cs
@@ -1,9 +1,19 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostInterface(this IMongoDatabase database) => database.GetCollection("host_if");
+ public static IMongoCollection HostInterfaceAddress(this IMongoDatabase database) => database.GetCollection("host_if_addr");
+ public static IMongoCollection HostInterfaceGateway(this IMongoDatabase database) => database.GetCollection("host_if_gw");
+ public static IMongoCollection HostInterfaceNameserver(this IMongoDatabase database) => database.GetCollection("host_if_ns");
+ public static IMongoCollection HostInterfaceRoute(this IMongoDatabase database) => database.GetCollection("host_if_rt");
+}
+
[BsonIgnoreExtraElements]
public class HostInterfaceEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostLog.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostLog.cs
similarity index 81%
rename from src/Core/Insight.Infrastructure/Entities/HostLog.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostLog.cs
index da1e86a..ee34fa6 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostLog.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostLog.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostLog(this IMongoDatabase database) => database.GetCollection("host_log");
+}
+
[BsonIgnoreExtraElements]
public class HostLogEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostLogMonitoring.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostLogMonitoring.cs
similarity index 81%
rename from src/Core/Insight.Infrastructure/Entities/HostLogMonitoring.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostLogMonitoring.cs
index 6b8a14f..6579981 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostLogMonitoring.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostLogMonitoring.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostLogMonitoring(this IMongoDatabase database) => database.GetCollection("host_log_mon");
+}
+
[BsonIgnoreExtraElements]
public class HostLogMonitoringEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostMainboard.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostMainboard.cs
similarity index 80%
rename from src/Core/Insight.Infrastructure/Entities/HostMainboard.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostMainboard.cs
index 4cd6d1a..5339e78 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostMainboard.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostMainboard.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostMainboard(this IMongoDatabase database) => database.GetCollection("host_board");
+}
+
[BsonIgnoreExtraElements]
public class HostMainboardEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostMemory.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostMemory.cs
similarity index 86%
rename from src/Core/Insight.Infrastructure/Entities/HostMemory.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostMemory.cs
index 8b65ca6..0f0dc70 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostMemory.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostMemory.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostMemory(this IMongoDatabase database) => database.GetCollection("host_mem");
+}
+
[BsonIgnoreExtraElements]
public class HostMemoryEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostOs.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostOs.cs
similarity index 82%
rename from src/Core/Insight.Infrastructure/Entities/HostOs.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostOs.cs
index 2e37f3b..06a65df 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostOs.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostOs.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostOs(this IMongoDatabase database) => database.GetCollection("host_os");
+}
+
[BsonIgnoreExtraElements]
public class HostOsEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostPrinter.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostPrinter.cs
similarity index 82%
rename from src/Core/Insight.Infrastructure/Entities/HostPrinter.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostPrinter.cs
index e3b1653..afa266f 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostPrinter.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostPrinter.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostPrinter(this IMongoDatabase database) => database.GetCollection("host_prn");
+}
+
[BsonIgnoreExtraElements]
public class HostPrinterEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostProcessor.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostProcessor.cs
similarity index 88%
rename from src/Core/Insight.Infrastructure/Entities/HostProcessor.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostProcessor.cs
index 8d4a7ea..a31fba5 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostProcessor.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostProcessor.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostProcessor(this IMongoDatabase database) => database.GetCollection("host_cpu");
+}
+
[BsonIgnoreExtraElements]
public class HostProcessorEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostService.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostService.cs
similarity index 86%
rename from src/Core/Insight.Infrastructure/Entities/HostService.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostService.cs
index 2167e53..c55ab70 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostService.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostService.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostService(this IMongoDatabase database) => database.GetCollection("host_svc");
+}
+
[BsonIgnoreExtraElements]
public class HostServiceEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostSession.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostSession.cs
similarity index 81%
rename from src/Core/Insight.Infrastructure/Entities/HostSession.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostSession.cs
index 6992f95..f2b15d6 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostSession.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostSession.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostSession(this IMongoDatabase database) => database.GetCollection("host_session");
+}
+
[BsonIgnoreExtraElements]
public class HostSessionEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostStoragePool.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostStoragePool.cs
similarity index 89%
rename from src/Core/Insight.Infrastructure/Entities/HostStoragePool.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostStoragePool.cs
index 3fc138d..4d8ce19 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostStoragePool.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostStoragePool.cs
@@ -1,9 +1,17 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostStoragePool(this IMongoDatabase database) => database.GetCollection("host_sp");
+ public static IMongoCollection HostStoragePoolPhysicalDisk(this IMongoDatabase database) => database.GetCollection("host_sp.pd");
+ public static IMongoCollection HostStoragePoolVirtualDisk(this IMongoDatabase database) => database.GetCollection("host_sp.vd");
+}
+
[BsonIgnoreExtraElements]
public class HostStoragePoolEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/Host/HostSysGroup.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostSysGroup.cs
new file mode 100644
index 0000000..0cfe399
--- /dev/null
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostSysGroup.cs
@@ -0,0 +1,45 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
+using System.Text.Json.Serialization;
+
+namespace Insight.Infrastructure.Entities;
+
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostSystemGroup(this IMongoDatabase database) => database.GetCollection("host_sysgrp");
+}
+
+[BsonIgnoreExtraElements]
+public class HostSysGroupEntity
+{
+ [BsonId, BsonRepresentation(BsonType.ObjectId), JsonPropertyName("id")]
+ public string? Id { get; set; }
+
+ [BsonElement("_host"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("host")]
+ public string? Host { get; set; }
+
+ [BsonElement("_batch"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("batch")]
+ public string? Batch { get; set; }
+
+ [BsonElement("insert")]
+ public DateTime? Insert { get; set; }
+
+ [BsonElement("update")]
+ public DateTime? Update { get; set; }
+
+ [BsonElement("sid")]
+ public string? Sid { get; set; }
+
+ [BsonElement("name")]
+ public string? Name { get; set; }
+
+ [BsonElement("domain")]
+ public string? Domain { get; set; }
+
+ [BsonElement("description")]
+ public string? Description { get; set; }
+
+ [BsonElement("localaccount")]
+ public bool? LocalAccount { get; set; }
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Infrastructure/Entities/Host/HostSysUser.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostSysUser.cs
new file mode 100644
index 0000000..2814066
--- /dev/null
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostSysUser.cs
@@ -0,0 +1,66 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
+using System.Text.Json.Serialization;
+
+namespace Insight.Infrastructure.Entities;
+
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostSystemUser(this IMongoDatabase database) => database.GetCollection("host_sysusr");
+}
+
+[BsonIgnoreExtraElements]
+public class HostSysUserEntity
+{
+ [BsonId, BsonRepresentation(BsonType.ObjectId), JsonPropertyName("id")]
+ public string? Id { get; set; }
+
+ [BsonElement("_host"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("host")]
+ public string? Host { get; set; }
+
+ [BsonElement("_batch"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("batch")]
+ public string? Batch { get; set; }
+
+ [BsonElement("insert")]
+ public DateTime? Insert { get; set; }
+
+ [BsonElement("update")]
+ public DateTime? Update { get; set; }
+
+ [BsonElement("sid")]
+ public string? Sid { get; set; }
+
+ [BsonElement("name")]
+ public string? Name { get; set; }
+
+ [BsonElement("domain")]
+ public string? Domain { get; set; }
+
+ [BsonElement("fullname")]
+ public string? FullName { get; set; }
+
+ [BsonElement("description")]
+ public string? Description { get; set; }
+
+ [BsonElement("status")]
+ public string? Status { get; set; }
+
+ [BsonElement("localaccount")]
+ public bool? LocalAccount { get; set; }
+
+ [BsonElement("disabled")]
+ public bool? Disabled { get; set; }
+
+ [BsonElement("lockout")]
+ public bool? Lockout { get; set; }
+
+ [BsonElement("password_changeable")]
+ public bool? PasswordChangeable { get; set; }
+
+ [BsonElement("password_expires")]
+ public bool? PasswordExpires { get; set; }
+
+ [BsonElement("password_required")]
+ public bool? PasswordRequired { get; set; }
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Infrastructure/Entities/Host/HostSysUserSysGroup.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostSysUserSysGroup.cs
new file mode 100644
index 0000000..b5681f5
--- /dev/null
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostSysUserSysGroup.cs
@@ -0,0 +1,36 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
+using System.Text.Json.Serialization;
+
+namespace Insight.Infrastructure.Entities;
+
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostSystemUserSystemGroup(this IMongoDatabase database) => database.GetCollection("host_sysusr_sysgrp");
+}
+
+[BsonIgnoreExtraElements]
+public class HostSysUserSysGroupEntity
+{
+ [BsonId, BsonRepresentation(BsonType.ObjectId), JsonPropertyName("id")]
+ public string? Id { get; set; }
+
+ [BsonElement("_host"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("host")]
+ public string? Host { get; set; }
+
+ [BsonElement("_user"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("user")]
+ public string? User { get; set; }
+
+ [BsonElement("_group"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("group")]
+ public string? Group { get; set; }
+
+ [BsonElement("_batch"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("batch")]
+ public string? Batch { get; set; }
+
+ [BsonElement("insert")]
+ public DateTime? Insert { get; set; }
+
+ [BsonElement("update")]
+ public DateTime? Update { get; set; }
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Infrastructure/Entities/HostSystem.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostSystem.cs
similarity index 79%
rename from src/Core/Insight.Infrastructure/Entities/HostSystem.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostSystem.cs
index f6a1e0d..610544f 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostSystem.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostSystem.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostSystem(this IMongoDatabase database) => database.GetCollection("host_sys");
+}
+
[BsonIgnoreExtraElements]
public class HostSystemEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostUpdate.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostUpdate.cs
similarity index 88%
rename from src/Core/Insight.Infrastructure/Entities/HostUpdate.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostUpdate.cs
index 4b7b243..7f497ea 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostUpdate.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostUpdate.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostUpdate(this IMongoDatabase database) => database.GetCollection("host_upd");
+}
+
[BsonIgnoreExtraElements]
public class HostUpdateEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostVideocard.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostVideocard.cs
similarity index 81%
rename from src/Core/Insight.Infrastructure/Entities/HostVideocard.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostVideocard.cs
index da9fb62..1ce11d8 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostVideocard.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostVideocard.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostVideocard(this IMongoDatabase database) => database.GetCollection("host_gpu");
+}
+
[BsonIgnoreExtraElements]
public class HostVideocardEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostVolume.cs b/src/Core/Insight.Infrastructure/Entities/Host/HostVolume.cs
similarity index 89%
rename from src/Core/Insight.Infrastructure/Entities/HostVolume.cs
rename to src/Core/Insight.Infrastructure/Entities/Host/HostVolume.cs
index 21f5dfb..901c644 100644
--- a/src/Core/Insight.Infrastructure/Entities/HostVolume.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Host/HostVolume.cs
@@ -1,9 +1,15 @@
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostVolume(this IMongoDatabase database) => database.GetCollection("host_vol");
+}
+
[BsonIgnoreExtraElements]
public class HostVolumeEntity
{
diff --git a/src/Core/Insight.Infrastructure/Entities/HostGroup/HostGroup.cs b/src/Core/Insight.Infrastructure/Entities/HostGroup/HostGroup.cs
new file mode 100644
index 0000000..2cdaa8c
--- /dev/null
+++ b/src/Core/Insight.Infrastructure/Entities/HostGroup/HostGroup.cs
@@ -0,0 +1,31 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
+using System.ComponentModel.DataAnnotations;
+using System.Text.Json.Serialization;
+
+namespace Insight.Infrastructure.Entities;
+
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostGroup(this IMongoDatabase database) => database.GetCollection("hostgroup");
+}
+
+[BsonIgnoreExtraElements]
+public class HostGroupEntity
+{
+ [BsonId, BsonRepresentation(BsonType.ObjectId), JsonPropertyName("id")]
+ public string? Id { get; set; }
+
+ [BsonElement("name"), Required]
+ public string? Name { get; set; }
+
+ [BsonElement("description")]
+ public string? Description { get; set; }
+
+ [BsonElement("insert")]
+ public DateTime? Insert { get; set; }
+
+ [BsonElement("update")]
+ public DateTime? Update { get; set; }
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Infrastructure/Entities/HostGroup/HostGroupHost.cs b/src/Core/Insight.Infrastructure/Entities/HostGroup/HostGroupHost.cs
new file mode 100644
index 0000000..4428915
--- /dev/null
+++ b/src/Core/Insight.Infrastructure/Entities/HostGroup/HostGroupHost.cs
@@ -0,0 +1,30 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
+using System.Text.Json.Serialization;
+
+namespace Insight.Infrastructure.Entities;
+
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection HostGroupHost(this IMongoDatabase database) => database.GetCollection("hostgroup_host");
+}
+
+[BsonIgnoreExtraElements]
+public class HostGroupHostEntity
+{
+ [BsonId, BsonRepresentation(BsonType.ObjectId), JsonPropertyName("id")]
+ public string? Id { get; set; }
+
+ [BsonElement("_hostgroup"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("hostgroup")]
+ public string? HostGroup { get; set; }
+
+ [BsonElement("_host"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("host")]
+ public string? Host { get; set; }
+
+ [BsonElement("insert")]
+ public DateTime? Insert { get; set; }
+
+ [BsonElement("update")]
+ public DateTime? Update { get; set; }
+}
\ No newline at end of file
diff --git a/src/Core/Insight.Infrastructure/Entities/HostUser.cs b/src/Core/Insight.Infrastructure/Entities/HostUser.cs
deleted file mode 100644
index 95670f8..0000000
--- a/src/Core/Insight.Infrastructure/Entities/HostUser.cs
+++ /dev/null
@@ -1,119 +0,0 @@
-using MongoDB.Bson;
-using MongoDB.Bson.Serialization.Attributes;
-using System.Text.Json.Serialization;
-
-namespace Insight.Infrastructure.Entities;
-
-[BsonIgnoreExtraElements]
-public class HostUserEntity
-{
- [BsonId, BsonRepresentation(BsonType.ObjectId), JsonPropertyName("id")]
- public string? Id { get; set; }
-
- [BsonElement("_host"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("host")]
- public string? Host { get; set; }
-
- [BsonElement("_batch"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("batch")]
- public string? Batch { get; set; }
-
- [BsonElement("insert")]
- public DateTime? Insert { get; set; }
-
- [BsonElement("update")]
- public DateTime? Update { get; set; }
-
- [BsonElement("sid")]
- public string? Sid { get; set; }
-
- [BsonElement("name")]
- public string? Name { get; set; }
-
- [BsonElement("domain")]
- public string? Domain { get; set; }
-
- [BsonElement("fullname")]
- public string? FullName { get; set; }
-
- [BsonElement("description")]
- public string? Description { get; set; }
-
- [BsonElement("status")]
- public string? Status { get; set; }
-
- [BsonElement("localaccount")]
- public bool? LocalAccount { get; set; }
-
- [BsonElement("disabled")]
- public bool? Disabled { get; set; }
-
- [BsonElement("lockout")]
- public bool? Lockout { get; set; }
-
- [BsonElement("password_changeable")]
- public bool? PasswordChangeable { get; set; }
-
- [BsonElement("password_expires")]
- public bool? PasswordExpires { get; set; }
-
- [BsonElement("password_required")]
- public bool? PasswordRequired { get; set; }
-}
-
-[BsonIgnoreExtraElements]
-public class HostGroupEntity
-{
- [BsonId, BsonRepresentation(BsonType.ObjectId), JsonPropertyName("id")]
- public string? Id { get; set; }
-
- [BsonElement("_host"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("host")]
- public string? Host { get; set; }
-
- [BsonElement("_batch"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("batch")]
- public string? Batch { get; set; }
-
- [BsonElement("insert")]
- public DateTime? Insert { get; set; }
-
- [BsonElement("update")]
- public DateTime? Update { get; set; }
-
- [BsonElement("sid")]
- public string? Sid { get; set; }
-
- [BsonElement("name")]
- public string? Name { get; set; }
-
- [BsonElement("domain")]
- public string? Domain { get; set; }
-
- [BsonElement("description")]
- public string? Description { get; set; }
-
- [BsonElement("localaccount")]
- public bool? LocalAccount { get; set; }
-}
-
-[BsonIgnoreExtraElements]
-public class HostUserGroupEntity
-{
- [BsonId, BsonRepresentation(BsonType.ObjectId), JsonPropertyName("id")]
- public string? Id { get; set; }
-
- [BsonElement("_host"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("host")]
- public string? Host { get; set; }
-
- [BsonElement("_user"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("user")]
- public string? User { get; set; }
-
- [BsonElement("_group"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("group")]
- public string? Group { get; set; }
-
- [BsonElement("_batch"), BsonRepresentation(BsonType.ObjectId), JsonPropertyName("batch")]
- public string? Batch { get; set; }
-
- [BsonElement("insert")]
- public DateTime? Insert { get; set; }
-
- [BsonElement("update")]
- public DateTime? Update { get; set; }
-}
\ No newline at end of file
diff --git a/src/Core/Insight.Infrastructure/Entities/Identity.cs b/src/Core/Insight.Infrastructure/Entities/Identity/Identity.cs
similarity index 79%
rename from src/Core/Insight.Infrastructure/Entities/Identity.cs
rename to src/Core/Insight.Infrastructure/Entities/Identity/Identity.cs
index 732a69d..4f01e89 100644
--- a/src/Core/Insight.Infrastructure/Entities/Identity.cs
+++ b/src/Core/Insight.Infrastructure/Entities/Identity/Identity.cs
@@ -1,11 +1,20 @@
using AspNetCore.Identity.MongoDbCore.Models;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
using MongoDbGenericRepository.Attributes;
using System.Text.Json.Serialization;
namespace Insight.Infrastructure.Entities;
+public static partial class MongoDatabaseExtensions
+{
+ public static IMongoCollection User(this IMongoDatabase database) => database.GetCollection("user");
+ public static IMongoCollection UserLog(this IMongoDatabase database) => database.GetCollection("user_log");
+ public static IMongoCollection UserPreference(this IMongoDatabase database) => database.GetCollection("user_pref");
+ public static IMongoCollection Role(this IMongoDatabase database) => database.GetCollection("role");
+}
+
[CollectionName("user"), BsonIgnoreExtraElements]
public class InsightUser : MongoIdentityUser
{
diff --git a/src/Core/Insight.Infrastructure/Extensions/MongoDatabaseExtensions.cs b/src/Core/Insight.Infrastructure/Extensions/MongoDatabaseExtensions.cs
deleted file mode 100644
index 3a76e9b..0000000
--- a/src/Core/Insight.Infrastructure/Extensions/MongoDatabaseExtensions.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using Insight.Infrastructure.Entities;
-using MongoDB.Driver;
-
-namespace Insight.Infrastructure;
-
-public static class MongoDatabaseExtensions
-{
- // internal users (roles), groups...
- public static IMongoCollection User(this IMongoDatabase database) => database.GetCollection("user");
- public static IMongoCollection UserLog(this IMongoDatabase database) => database.GetCollection("user_log");
- public static IMongoCollection UserPreference(this IMongoDatabase database) => database.GetCollection("user_pref");
- public static IMongoCollection Role(this IMongoDatabase database) => database.GetCollection("role");
-
- // customers
- public static IMongoCollection Customer(this IMongoDatabase database) => database.GetCollection("customer");
-
- // agents
- public static IMongoCollection Agent(this IMongoDatabase database) => database.GetCollection("agent");
- public static IMongoCollection AgentLog(this IMongoDatabase database) => database.GetCollection("agent_log");
-
- // host groups
- public static IMongoCollection HostGroup(this IMongoDatabase database) => database.GetCollection("host");
-
- // hosts
- public static IMongoCollection Host(this IMongoDatabase database) => database.GetCollection("host");
- public static IMongoCollection HostLog(this IMongoDatabase database) => database.GetCollection("host_log");
-
- // hosts extensions
- public static IMongoCollection HostLogMonitoring(this IMongoDatabase database) => database.GetCollection("host_log_mon");
- public static IMongoCollection HostApplication(this IMongoDatabase database) => database.GetCollection("host_app");
- public static IMongoCollection HostDrive(this IMongoDatabase database) => database.GetCollection("host_drv");
- public static IMongoCollection HostVolume(this IMongoDatabase database) => database.GetCollection("host_vol");
- public static IMongoCollection HostOs(this IMongoDatabase database) => database.GetCollection("host_os");
- public static IMongoCollection HostUpdate(this IMongoDatabase database) => database.GetCollection("host_upd");
- public static IMongoCollection HostSession(this IMongoDatabase database) => database.GetCollection("host_session");
- public static IMongoCollection