Compare commits

..

1 commit
beta ... master

595 changed files with 15363 additions and 26892 deletions

8
dotnetcore.csproj Normal file
View file

@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
</PropertyGroup>
</Project>

View file

@ -31,13 +31,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Server", "src\Serve
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Updater", "src\Updater\Insight.Updater\Insight.Updater.csproj", "{4875D70F-A96B-4EBA-99BE-218886D29BEB}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Updater", "src\Updater\Insight.Updater\Insight.Updater.csproj", "{4875D70F-A96B-4EBA-99BE-218886D29BEB}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Web.Assets", "src\Web\Insight.Web.Assets\Insight.Web.Assets.csproj", "{EBB8A2A8-453B-4867-A8E2-072530391DD0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Agent", "src\Agent\Insight.Agent\Insight.Agent.csproj", "{2A391CA2-F96B-4DB7-80AA-0668A5141640}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Agent", "src\Agent\Insight.Agent\Insight.Agent.csproj", "{2A391CA2-F96B-4DB7-80AA-0668A5141640}"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Remote", "Remote", "{D4D7BF4A-B2E3-470A-A14C-FC658FF7461D}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Insight.Agent.Assets", "src\Agent\Insight.Agent.Assets\Insight.Agent.Assets.csproj", "{4C2B66EA-4EE1-47BF-BAEE-DDBAF6FCB324}"
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 EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -73,18 +71,18 @@ Global
{4875D70F-A96B-4EBA-99BE-218886D29BEB}.Debug|Any CPU.Build.0 = Debug|Any CPU {4875D70F-A96B-4EBA-99BE-218886D29BEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4875D70F-A96B-4EBA-99BE-218886D29BEB}.Release|Any CPU.ActiveCfg = Release|Any CPU {4875D70F-A96B-4EBA-99BE-218886D29BEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4875D70F-A96B-4EBA-99BE-218886D29BEB}.Release|Any CPU.Build.0 = Release|Any CPU {4875D70F-A96B-4EBA-99BE-218886D29BEB}.Release|Any CPU.Build.0 = Release|Any CPU
{EBB8A2A8-453B-4867-A8E2-072530391DD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EBB8A2A8-453B-4867-A8E2-072530391DD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EBB8A2A8-453B-4867-A8E2-072530391DD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EBB8A2A8-453B-4867-A8E2-072530391DD0}.Release|Any CPU.Build.0 = Release|Any CPU
{2A391CA2-F96B-4DB7-80AA-0668A5141640}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2A391CA2-F96B-4DB7-80AA-0668A5141640}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2A391CA2-F96B-4DB7-80AA-0668A5141640}.Debug|Any CPU.Build.0 = Debug|Any CPU {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.ActiveCfg = Release|Any CPU
{2A391CA2-F96B-4DB7-80AA-0668A5141640}.Release|Any CPU.Build.0 = 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 {4C2B66EA-4EE1-47BF-BAEE-DDBAF6FCB324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B}.Debug|Any CPU.Build.0 = Debug|Any CPU {4C2B66EA-4EE1-47BF-BAEE-DDBAF6FCB324}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B}.Release|Any CPU.ActiveCfg = Release|Any CPU {4C2B66EA-4EE1-47BF-BAEE-DDBAF6FCB324}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B}.Release|Any CPU.Build.0 = Release|Any CPU {4C2B66EA-4EE1-47BF-BAEE-DDBAF6FCB324}.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 EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -97,9 +95,9 @@ Global
{EF3188D7-338D-43DA-BF6B-D26E5BDAC3A6} = {35BA5DCB-BECC-4F51-8DD0-694C555D205A} {EF3188D7-338D-43DA-BF6B-D26E5BDAC3A6} = {35BA5DCB-BECC-4F51-8DD0-694C555D205A}
{1E75F7E9-E6AA-44E7-A2F3-DB4CA85E0118} = {038C3821-E554-496D-B585-A3BC193B7913} {1E75F7E9-E6AA-44E7-A2F3-DB4CA85E0118} = {038C3821-E554-496D-B585-A3BC193B7913}
{4875D70F-A96B-4EBA-99BE-218886D29BEB} = {F2D241DB-7692-46DB-8A6A-958B365DAAF8} {4875D70F-A96B-4EBA-99BE-218886D29BEB} = {F2D241DB-7692-46DB-8A6A-958B365DAAF8}
{EBB8A2A8-453B-4867-A8E2-072530391DD0} = {3F000016-069D-477E-ACA3-F643880B57E8}
{2A391CA2-F96B-4DB7-80AA-0668A5141640} = {140F73DD-29D3-4C44-809B-5B470880AA0D} {2A391CA2-F96B-4DB7-80AA-0668A5141640} = {140F73DD-29D3-4C44-809B-5B470880AA0D}
{5C4697BD-BC97-484F-9DB1-CA87E2BEAA4B} = {D4D7BF4A-B2E3-470A-A14C-FC658FF7461D} {4C2B66EA-4EE1-47BF-BAEE-DDBAF6FCB324} = {140F73DD-29D3-4C44-809B-5B470880AA0D}
{AF313B47-3079-407F-91D1-9989C1E1AF2A} = {D4D7BF4A-B2E3-470A-A14C-FC658FF7461D}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F376A326-7590-4E7E-AB9B-76CED8527AB0} SolutionGuid = {F376A326-7590-4E7E-AB9B-76CED8527AB0}

View file

@ -0,0 +1,14 @@
namespace Insight.Agent.Enums
{
public enum CategoryEnum
{
Network = 1,
System = 2,
Application = 3,
Security = 4,
Monitoring = 5,
Task = 6,
Printer = 7,
RDP = 8
}
}

View file

@ -0,0 +1,9 @@
namespace Insight.Agent.Enums
{
public enum DispatchEnum
{
Pending = 1,
Failure = 2,
Success = 3,
}
}

View file

@ -0,0 +1,9 @@
namespace Insight.Agent.Enums
{
public enum StatusEnum
{
Information = 1,
Warning = 2,
Error = 3
}
}

View file

@ -0,0 +1,33 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>true</ImplicitUsings>
<Nullable>enable</Nullable>
<AssemblyName>Insight.Agent.Assets</AssemblyName>
<RootNamespace>Insight.Agent</RootNamespace>
<Product>Insight</Product>
<AssemblyVersion>2025.2.24.0</AssemblyVersion>
<FileVersion>2025.2.24.0</FileVersion>
<SatelliteResourceLanguages>none</SatelliteResourceLanguages>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>none</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>none</DebugType>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Vaitr.Network.MemoryPack" Version="2025.2.24" />
<PackageReference Include="Vaitr.Snmp" Version="2024.5.15" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Core\Insight.Domain\Insight.Domain.csproj" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,9 @@
using Insight.Agent.Messages;
namespace Insight.Agent.Interfaces
{
public partial interface IAgentMessageHandler<TSender>
{
ValueTask HandleAsync<TMessage>(TSender sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage;
}
}

View file

@ -0,0 +1,41 @@
using MemoryPack;
using System.Runtime.InteropServices;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(120, typeof(Application))]
[MemoryPackUnion(121, typeof(ApplicationList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Application : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Name { get; set; }
[MemoryPackOrder(1)]
public string? Publisher { get; set; }
[MemoryPackOrder(2)]
public string? Version { get; set; }
[MemoryPackOrder(3)]
public string? Location { get; set; }
[MemoryPackOrder(4)]
public string? Source { get; set; }
[MemoryPackOrder(5)]
public string? Uninstall { get; set; }
[MemoryPackOrder(6)]
public DateTime? InstallDate { get; set; }
[MemoryPackOrder(7)]
public Architecture? Architecture { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class ApplicationList : List<Application>, IAgentMessage { }
}

View file

@ -0,0 +1,34 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(1, typeof(Authentication))]
[MemoryPackUnion(2, typeof(AuthenticationRequest))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Authentication : IAgentMessage
{
[MemoryPackOrder(0)]
public PlatformType? Platform { get; set; }
[MemoryPackOrder(1)]
public Guid Serial { get; set; }
[MemoryPackOrder(2)]
public Version? Version { get; set; }
[MemoryPackOrder(3)]
public string? Hostname { get; set; }
public enum PlatformType
{
Unknown = 0,
Windows = 1,
Unix = 2
}
}
[MemoryPackable]
public partial class AuthenticationRequest : IAgentMessage { }
}

View file

@ -0,0 +1,10 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(2000, typeof(GetInventory))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class GetInventory : IAgentMessage { }
}

View file

@ -0,0 +1,49 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(1000, typeof(ConsoleQuery))]
[MemoryPackUnion(1001, typeof(ConsoleQueryRequest))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class ConsoleQuery : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Id { get; set; }
[MemoryPackOrder(1)]
public string? HostId { get; set; }
[MemoryPackOrder(2)]
public string? Query { get; set; }
[MemoryPackOrder(3)]
public string? Data { get; set; }
[MemoryPackOrder(4)]
public string? Errors { get; set; }
[MemoryPackOrder(5)]
public bool IsString { get; set; }
[MemoryPackOrder(6)]
public bool IsArray { get; set; }
[MemoryPackOrder(7)]
public bool HadErrors { get; set; }
}
[MemoryPackable]
public partial class ConsoleQueryRequest : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Id { get; set; }
[MemoryPackOrder(1)]
public string? HostId { get; set; }
[MemoryPackOrder(2)]
public string? Query { get; set; }
}
}

View file

@ -0,0 +1,103 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(50, typeof(Drive))]
[MemoryPackUnion(51, typeof(DriveList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Drive : IAgentMessage
{
[MemoryPackOrder(0)]
public uint? Index { get; set; }
[MemoryPackOrder(1)]
public string? Id { get; set; }
[MemoryPackOrder(2)]
public string? Name { get; set; }
[MemoryPackOrder(3)]
public string? Manufacturer { get; set; }
[MemoryPackOrder(4)]
public string? SerialNumber { get; set; }
[MemoryPackOrder(5)]
public ulong? Size { get; set; }
[MemoryPackOrder(6)]
public string? Status { get; set; }
[MemoryPackOrder(7)]
public string? InterfaceType { get; set; }
[MemoryPackOrder(8)]
public string? FirmwareRevision { get; set; }
[MemoryPackOrder(9)]
public string? PNPDeviceID { get; set; }
[MemoryPackOrder(10)]
public List<Volume>? Volumes { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class DriveList : List<Drive>, IAgentMessage { }
[MemoryPackable]
public partial class Volume : IAgentMessage
{
[MemoryPackOrder(0)]
public uint? Index { get; set; }
[MemoryPackOrder(1)]
public string? Id { get; set; }
[MemoryPackOrder(2)]
public string? Name { get; set; }
[MemoryPackOrder(3)]
public string? SerialNumber { get; set; }
[MemoryPackOrder(4)]
public ulong? Size { get; set; }
[MemoryPackOrder(5)]
public ulong? FreeSpace { get; set; }
[MemoryPackOrder(6)]
public string? Type { get; set; }
[MemoryPackOrder(7)]
public string? FileSystem { get; set; }
[MemoryPackOrder(8)]
public bool? Compressed { get; set; }
[MemoryPackOrder(9)]
public bool? Bootable { get; set; }
[MemoryPackOrder(10)]
public bool? PrimaryPartition { get; set; }
[MemoryPackOrder(11)]
public bool? BootPartition { get; set; }
[MemoryPackOrder(12)]
public ulong? BlockSize { get; set; }
[MemoryPackOrder(13)]
public ulong? NumberOfBlocks { get; set; }
[MemoryPackOrder(14)]
public ulong? StartingOffset { get; set; }
[MemoryPackOrder(15)]
public DriveType? DriveType { get; set; }
[MemoryPackOrder(16)]
public string? ProviderName { get; set; }
}
}

View file

@ -0,0 +1,41 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(10, typeof(Event))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Event : IAgentMessage
{
[MemoryPackOrder(0)]
public DateTime? Timestamp { get; set; }
[MemoryPackOrder(1)]
public StatusType? Status { get; set; }
[MemoryPackOrder(2)]
public string? Source { get; set; }
[MemoryPackOrder(3)]
public string? Category { get; set; }
[MemoryPackOrder(4)]
public int? EventId { get; set; }
[MemoryPackOrder(5)]
public string? Task { get; set; }
[MemoryPackOrder(6)]
public string? Message { get; set; }
public enum StatusType
{
Unknown = 0,
Information = 1,
Warning = 2,
Error = 3,
Critical = 4
}
}
}

View file

@ -0,0 +1,7 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackable]
public partial interface IAgentMessage { }
}

View file

@ -0,0 +1,195 @@
using MemoryPack;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(70, typeof(Interface))]
[MemoryPackUnion(71, typeof(InterfaceList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Interface : IAgentMessage
{
[MemoryPackOrder(0)]
public uint? Index { get; set; }
[MemoryPackOrder(1)]
public Guid? Guid { get; set; }
[MemoryPackOrder(2)]
public string? Mac { get; set; }
[MemoryPackOrder(3)]
public string? Name { get; set; }
[MemoryPackOrder(4)]
public string? Description { get; set; }
[MemoryPackOrder(5)]
public string? Manufacturer { get; set; }
[MemoryPackOrder(6)]
public string? Suffix { get; set; }
[MemoryPackOrder(7)]
public bool? Physical { get; set; }
[MemoryPackOrder(8)]
public NetworkInterfaceType? Type { get; set; }
[MemoryPackOrder(9)]
public OperationalStatus? Status { get; set; }
[MemoryPackOrder(10)]
public long? Speed { get; set; }
[MemoryPackOrder(11)]
public long? Ipv4Mtu { get; set; }
[MemoryPackOrder(12)]
public bool? Ipv4Dhcp { get; set; }
[MemoryPackOrder(13)]
public bool? Ipv4Forwarding { get; set; }
[MemoryPackOrder(14)]
public long? Ipv6Mtu { get; set; }
[MemoryPackOrder(15)]
public long? Sent { get; set; }
[MemoryPackOrder(16)]
public long? Received { get; set; }
[MemoryPackOrder(17)]
public long? IncomingPacketsDiscarded { get; set; }
[MemoryPackOrder(18)]
public long? IncomingPacketsWithErrors { get; set; }
[MemoryPackOrder(19)]
public long? IncomingUnknownProtocolPackets { get; set; }
[MemoryPackOrder(20)]
public long? OutgoingPacketsDiscarded { get; set; }
[MemoryPackOrder(21)]
public long? OutgoingPacketsWithErrors { get; set; }
[MemoryPackOrder(22)]
public List<Unicast>? Addresses { get; set; }
[MemoryPackOrder(23)]
public List<IPAddress2>? Gateways { get; set; }
[MemoryPackOrder(24)]
public List<IPAddress2>? Dns { get; set; }
[MemoryPackOrder(25)]
public List<IPAddress2>? Dhcp { get; set; }
[MemoryPackOrder(26)]
public List<Route>? Routes { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class InterfaceList : List<Interface>, IAgentMessage { }
[MemoryPackable]
public partial class Unicast : IAgentMessage
{
[MemoryPackOrder(0)]
public IPAddress2? IpAddress { get; set; }
[MemoryPackOrder(1)]
public IPAddress2? Ipv4Mask { get; set; }
[MemoryPackOrder(2)]
public long? AddressPreferredLifetime { get; set; }
[MemoryPackOrder(3)]
public long? AddressValidLifetime { get; set; }
[MemoryPackOrder(4)]
public long? DhcpLeaseLifetime { get; set; }
[MemoryPackOrder(5)]
public DuplicateAddressDetectionState? DuplicateAddressDetectionState { get; set; }
[MemoryPackOrder(6)]
public int? PrefixLength { get; set; }
[MemoryPackOrder(7)]
public PrefixOrigin? PrefixOrigin { get; set; }
[MemoryPackOrder(8)]
public SuffixOrigin? SuffixOrigin { get; set; }
}
[MemoryPackable]
public partial class Route : IAgentMessage
{
[MemoryPackOrder(0)]
public uint? InterfaceIndex { get; set; }
[MemoryPackOrder(1)]
public IPAddress2? Destination { get; set; }
[MemoryPackOrder(2)]
public IPAddress2? Gateway { get; set; }
[MemoryPackOrder(3)]
public string? Mask { get; set; }
[MemoryPackOrder(4)]
public int? Metric { get; set; }
}
[MemoryPackable]
public partial class IPAddress2 : IAgentMessage
{
[MemoryPackOrder(0)]
public AddressFamily? AddressFamily { get; set; }
[MemoryPackOrder(1)]
public string? Address { get; set; }
[MemoryPackOrder(2)]
public bool? IsIPv6Teredo { get; set; }
[MemoryPackOrder(3)]
public bool? IsIPv6SiteLocal { get; set; }
[MemoryPackOrder(4)]
public bool? IsIPv6Multicast { get; set; }
[MemoryPackOrder(5)]
public bool? IsIPv6LinkLocal { get; set; }
[MemoryPackOrder(6)]
public bool? IsIPv4MappedToIPv6 { get; set; }
[MemoryPackOrder(7)]
public bool? IsIPv6UniqueLocal { get; set; }
[MemoryPackConstructor]
public IPAddress2()
{
}
public IPAddress2(IPAddress address)
{
AddressFamily = address.AddressFamily;
Address = address.ToString();
IsIPv4MappedToIPv6 = address.IsIPv4MappedToIPv6;
IsIPv6LinkLocal = address.IsIPv6LinkLocal;
IsIPv6Multicast = address.IsIPv6Multicast;
IsIPv6SiteLocal = address.IsIPv6SiteLocal;
IsIPv6Teredo = address.IsIPv6Teredo;
IsIPv6UniqueLocal = address.IsIPv6UniqueLocal;
}
}
}

View file

@ -0,0 +1,10 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(0, typeof(Keepalive))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Keepalive : IAgentMessage { }
}

View file

@ -0,0 +1,29 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(20, typeof(Mainboard))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Mainboard : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Manufacturer { get; set; }
[MemoryPackOrder(1)]
public string? Model { get; set; }
[MemoryPackOrder(2)]
public string? Serial { get; set; }
[MemoryPackOrder(3)]
public string? BiosManufacturer { get; set; }
[MemoryPackOrder(4)]
public string? BiosVersion { get; set; }
[MemoryPackOrder(5)]
public DateTime? BiosDate { get; set; }
}
}

View file

@ -0,0 +1,67 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(40, typeof(Memory))]
[MemoryPackUnion(41, typeof(MemoryList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Memory : IAgentMessage
{
[MemoryPackOrder(0)]
public uint? Index { get; set; }
[MemoryPackOrder(1)]
public string? Tag { get; set; }
[MemoryPackOrder(2)]
public string? Location { get; set; }
[MemoryPackOrder(3)]
public string? Manufacturer { get; set; }
[MemoryPackOrder(4)]
public string? Model { get; set; }
[MemoryPackOrder(5)]
public string? Serial { get; set; }
[MemoryPackOrder(6)]
public ulong? Capacity { get; set; }
[MemoryPackOrder(7)]
public uint? Speed { get; set; }
[MemoryPackOrder(8)]
public uint? Voltage { get; set; }
[MemoryPackOrder(9)]
public uint? ConfiguredSpeed { get; set; }
[MemoryPackOrder(10)]
public uint? ConfiguredVoltage { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class MemoryList : List<Memory>, IAgentMessage { }
[MemoryPackable]
public partial class MemoryMetric : IAgentMessage
{
[MemoryPackOrder(0)]
public DateTime? Timestamp { get; set; }
[MemoryPackOrder(1)]
public float? MemoryAvailable { get; set; }
[MemoryPackOrder(2)]
public float? MemoryAvailablePercentage { get; set; }
[MemoryPackOrder(3)]
public float? MemoryUsed { get; set; }
[MemoryPackOrder(4)]
public float? MemoryUsagePercentage { get; set; }
}
}

View file

@ -0,0 +1,30 @@
using MemoryPack;
using System.Runtime.InteropServices;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(90, typeof(OperationSystem))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class OperationSystem : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Name { get; set; }
[MemoryPackOrder(1)]
public string? Version { get; set; }
[MemoryPackOrder(2)]
public string? SerialNumber { get; set; }
[MemoryPackOrder(3)]
public Architecture? Architecture { get; set; }
[MemoryPackOrder(4)]
public bool? Virtual { get; set; }
[MemoryPackOrder(5)]
public DateTime? InstallDate { get; set; }
}
}

View file

@ -0,0 +1,30 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(140, typeof(Printer))]
[MemoryPackUnion(141, typeof(PrinterList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Printer : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Name { get; set; }
[MemoryPackOrder(1)]
public string? Driver { get; set; }
[MemoryPackOrder(2)]
public string? Port { get; set; }
[MemoryPackOrder(3)]
public string? Location { get; set; }
[MemoryPackOrder(4)]
public string? Comment { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class PrinterList : List<Printer>, IAgentMessage { }
}

View file

@ -0,0 +1,70 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(30, typeof(Processor))]
[MemoryPackUnion(31, typeof(ProcessorList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Processor : IAgentMessage
{
[MemoryPackOrder(0)]
public uint? Index { get; set; }
[MemoryPackOrder(1)]
public string? Name { get; set; }
[MemoryPackOrder(2)]
public string? Manufacturer { get; set; }
[MemoryPackOrder(3)]
public string? SerialNumber { get; set; }
[MemoryPackOrder(4)]
public string? Socket { get; set; }
[MemoryPackOrder(5)]
public string? Version { get; set; }
[MemoryPackOrder(6)]
public string? DeviceId { get; set; }
[MemoryPackOrder(7)]
public uint? Cores { get; set; }
[MemoryPackOrder(8)]
public uint? LogicalCores { get; set; }
[MemoryPackOrder(9)]
public uint? CurrentSpeed { get; set; }
[MemoryPackOrder(10)]
public uint? MaxSpeed { get; set; }
[MemoryPackOrder(11)]
public uint? L1Size { get; set; }
[MemoryPackOrder(12)]
public uint? L2Size { get; set; }
[MemoryPackOrder(13)]
public uint? L3Size { get; set; }
[MemoryPackOrder(14)]
public bool? Virtualization { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class ProcessorList : List<Processor>, IAgentMessage { }
[MemoryPackable]
public partial class ProcessorMetric : IAgentMessage
{
[MemoryPackOrder(0)]
public DateTime? Timestamp { get; set; }
[MemoryPackOrder(1)]
public float? ProcessorUsagePercentage { get; set; }
}
}

View file

@ -0,0 +1,64 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(130, typeof(Service))]
[MemoryPackUnion(131, typeof(ServiceList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Service : IAgentMessage
{
[MemoryPackOrder(0)]
public uint? ProcessId { get; set; }
[MemoryPackOrder(1)]
public string? Name { get; set; }
[MemoryPackOrder(2)]
public string? Display { get; set; }
[MemoryPackOrder(3)]
public string? Description { get; set; }
[MemoryPackOrder(4)]
public string? PathName { get; set; }
[MemoryPackOrder(5)]
public string? Account { get; set; }
[MemoryPackOrder(6)]
public bool? Delay { get; set; }
[MemoryPackOrder(7)]
public ServiceStatus? Status { get; set; }
[MemoryPackOrder(8)]
public ServiceMode? StartMode { get; set; }
public enum ServiceStatus
{
Unknown = -1,
Stopped = 1,
StartPending = 2,
StopPending = 3,
Running = 4,
ContinuePending = 5,
PausePending = 6,
Paused = 7
}
public enum ServiceMode
{
Unknown = -1,
Boot = 0,
System = 1,
Automatic = 2,
Manual = 3,
Disabled = 4
}
}
[MemoryPackable(GenerateType.Collection)]
public partial class ServiceList : List<Service>, IAgentMessage { }
}

View file

@ -0,0 +1,30 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(110, typeof(Session))]
[MemoryPackUnion(111, typeof(SessionList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Session : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Sid { get; set; }
[MemoryPackOrder(1)]
public string? User { get; set; }
[MemoryPackOrder(2)]
public string? Type { get; set; }
[MemoryPackOrder(3)]
public string? Status { get; set; }
[MemoryPackOrder(4)]
public string? Remote { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class SessionList : List<Session>, IAgentMessage { }
}

View file

@ -0,0 +1,17 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(3, typeof(Status))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Status : IAgentMessage
{
[MemoryPackOrder(0)]
public DateTime Timestamp { get; } = DateTime.Now;
[MemoryPackOrder(1)]
public TimeSpan Uptime { get; set; }
}
}

View file

@ -0,0 +1,302 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(160, typeof(StoragePool))]
[MemoryPackUnion(161, typeof(StoragePoolList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class StoragePool : IAgentMessage
{
[MemoryPackOrder(0)]
public string? UniqueId { get; set; }
[MemoryPackOrder(1)]
public string? Name { get; set; }
[MemoryPackOrder(2)]
public string? FriendlyName { get; set; }
[MemoryPackOrder(3)]
public List<OperationalState>? States { get; set; }
[MemoryPackOrder(4)]
public HealthState? Health { get; set; }
[MemoryPackOrder(5)]
public RetireMissingPhysicalDisksEnum? RetireMissingPhysicalDisks { get; set; }
[MemoryPackOrder(6)]
public string? Resiliency { get; set; }
[MemoryPackOrder(7)]
public bool? IsPrimordial { get; set; }
[MemoryPackOrder(8)]
public bool? IsReadOnly { get; set; }
[MemoryPackOrder(9)]
public bool? IsClustered { get; set; }
[MemoryPackOrder(10)]
public ulong? Size { get; set; }
[MemoryPackOrder(11)]
public ulong? AllocatedSize { get; set; }
[MemoryPackOrder(12)]
public ulong? SectorSize { get; set; }
[MemoryPackOrder(13)]
public List<PhysicalDisk>? PhysicalDisks { get; set; }
[MemoryPackOrder(14)]
public List<VirtualDisk>? VirtualDisks { get; set; }
public enum OperationalState
{
Unknown = 0,
Other = 1,
OK = 2,
Degraded = 3,
Stressed = 4,
Predictive_Failure = 5,
Error = 6,
Non_Recoverable_Error = 7,
Starting = 8,
Stopping = 9,
Stopped = 10,
In_Service = 11,
No_Contact = 12,
Lost_Communication = 13,
Aborted = 14,
Dormant = 15,
Supporting_Entity_In_Error = 16,
Completed = 17,
Power_Mode = 18,
Relocating = 19
}
public enum HealthState
{
Healthy = 0,
Warning = 1,
Unhealthy = 2,
Unknown = 3
}
public enum RetireMissingPhysicalDisksEnum
{
Auto = 1,
Always = 2,
Never = 3
}
}
[MemoryPackable(GenerateType.Collection)]
public partial class StoragePoolList : List<StoragePool>, IAgentMessage { }
[MemoryPackable]
public partial class PhysicalDisk : IAgentMessage
{
[MemoryPackOrder(0)]
public string? UniqueId { get; set; }
[MemoryPackOrder(1)]
public string? DeviceId { get; set; }
[MemoryPackOrder(2)]
public string? FriendlyName { get; set; }
[MemoryPackOrder(3)]
public string? Manufacturer { get; set; }
[MemoryPackOrder(4)]
public string? Model { get; set; }
[MemoryPackOrder(5)]
public ushort? MediaType { get; set; }
[MemoryPackOrder(6)]
public ushort? BusType { get; set; }
[MemoryPackOrder(7)]
public List<OperationalState>? States { get; set; }
[MemoryPackOrder(8)]
public HealthState? Health { get; set; }
[MemoryPackOrder(9)]
public List<SupportedUsagesEnum>? SupportedUsages { get; set; }
[MemoryPackOrder(10)]
public ushort? Usage { get; set; }
[MemoryPackOrder(11)]
public string? PhysicalLocation { get; set; }
[MemoryPackOrder(12)]
public string? SerialNumber { get; set; }
[MemoryPackOrder(13)]
public string? FirmwareVersion { get; set; }
[MemoryPackOrder(14)]
public ulong? Size { get; set; }
[MemoryPackOrder(15)]
public ulong? AllocatedSize { get; set; }
[MemoryPackOrder(16)]
public ulong? LogicalSectorSize { get; set; }
[MemoryPackOrder(17)]
public ulong? PhysicalSectorSize { get; set; }
[MemoryPackOrder(18)]
public ulong? VirtualDiskFootprint { get; set; }
public enum OperationalState
{
Unknown = 0,
Other = 1,
OK = 2,
Degraded = 3,
Stressed = 4,
Predictive_Failure = 5,
Error = 6,
Non_Recoverable_Error = 7,
Starting = 8,
Stopping = 9,
Stopped = 10,
In_Service = 11,
No_Contact = 12,
Lost_Communication = 13,
Aborted = 14,
Dormant = 15,
Supporting_Entity_In_Error = 16,
Completed = 17,
Power_Mode = 18,
Relocating = 19
}
public enum HealthState
{
Healthy = 0,
Warning = 1,
Unhealthy = 2,
Unknown = 3
}
public enum SupportedUsagesEnum
{
Unknown = 0,
Auto_Select = 1,
Manual_Select = 2,
Hot_Spare = 3,
Retired = 4,
Journal = 5
}
}
[MemoryPackable]
public partial class VirtualDisk : IAgentMessage
{
[MemoryPackOrder(0)]
public string? UniqueId { get; set; }
[MemoryPackOrder(1)]
public string? Name { get; set; }
[MemoryPackOrder(2)]
public string? FriendlyName { get; set; }
[MemoryPackOrder(3)]
public List<OperationalState>? States { get; set; }
[MemoryPackOrder(4)]
public HealthState? Health { get; set; }
[MemoryPackOrder(5)]
public AccessTypeEnum? AccessType { get; set; }
[MemoryPackOrder(6)]
public ProvisioningTypeEnum? ProvisioningType { get; set; }
[MemoryPackOrder(7)]
public ushort? PhysicalDiskRedundancy { get; set; }
[MemoryPackOrder(8)]
public string? ResiliencySettingName { get; set; }
[MemoryPackOrder(9)]
public bool? Deduplication { get; set; }
[MemoryPackOrder(10)]
public bool? IsSnapshot { get; set; }
[MemoryPackOrder(11)]
public ulong? Size { get; set; }
[MemoryPackOrder(12)]
public ulong? AllocatedSize { get; set; }
[MemoryPackOrder(13)]
public ulong? FootprintOnPool { get; set; }
[MemoryPackOrder(14)]
public ulong? ReadCacheSize { get; set; }
[MemoryPackOrder(15)]
public ulong? WriteCacheSize { get; set; }
public enum OperationalState
{
Unknown = 0,
Other = 1,
OK = 2,
Degraded = 3,
Stressed = 4,
Predictive_Failure = 5,
Error = 6,
Non_Recoverable_Error = 7,
Starting = 8,
Stopping = 9,
Stopped = 10,
In_Service = 11,
No_Contact = 12,
Lost_Communication = 13,
Aborted = 14,
Dormant = 15,
Supporting_Entity_In_Error = 16,
Completed = 17,
Power_Mode = 18,
Relocating = 19
}
public enum HealthState
{
Healthy = 0,
Warning = 1,
Unhealthy = 2,
Unknown = 3
}
public enum AccessTypeEnum
{
Unknown = 0,
Readable = 1,
Writeable = 2,
Read_Write = 3,
Write_Once = 4
}
public enum ProvisioningTypeEnum
{
Unknown = 0,
Thin = 1,
Fixed = 2
}
}
}

View file

@ -0,0 +1,23 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(80, typeof(SystemInfo))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class SystemInfo : IAgentMessage
{
[MemoryPackOrder(0)]
public DateTime? LastBootUpTime { get; set; }
[MemoryPackOrder(1)]
public DateTime? LocalDateTime { get; set; }
[MemoryPackOrder(2)]
public uint? Processes { get; set; }
[MemoryPackOrder(3)]
public string? License { get; set; }
}
}

View file

@ -0,0 +1,29 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(11, typeof(Trap))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Trap : IAgentMessage
{
[MemoryPackOrder(0)]
public DateTime? Timestamp { get; set; }
[MemoryPackOrder(1)]
public string? Endpoint { get; set; }
[MemoryPackOrder(2)]
public string? Hostname { get; set; }
[MemoryPackOrder(3)]
public string? Version { get; set; }
[MemoryPackOrder(4)]
public string? Community { get; set; }
[MemoryPackOrder(5)]
public List<KeyValuePair<string, string?>>? Data { get; set; }
}
}

View file

@ -0,0 +1,83 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(100, typeof(Update))]
[MemoryPackUnion(101, typeof(UpdateList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Update : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Id { get; set; }
[MemoryPackOrder(1)]
public DateTime? Date { get; set; }
[MemoryPackOrder(2)]
public string? Name { get; set; }
[MemoryPackOrder(3)]
public string? Description { get; set; }
[MemoryPackOrder(4)]
public string? SupportUrl { get; set; }
[MemoryPackOrder(5)]
public string? Hotfix { get; set; }
// if installed
[MemoryPackOrder(6)]
public OsUpdateResultCodeEnum? Result { get; set; }
// if pending
[MemoryPackOrder(7)]
public OsUpdateTypeEnum? Type { get; set; }
[MemoryPackOrder(8)]
public decimal? Size { get; set; }
[MemoryPackOrder(9)]
public bool? IsDownloaded { get; set; }
[MemoryPackOrder(10)]
public bool? CanRequestUserInput { get; set; }
[MemoryPackOrder(11)]
public OsUpdateRebootBehaviorEnum? RebootBehavior { get; set; }
public enum OsUpdateRebootBehaviorEnum
{
NeverReboots = 1,
AlwaysRequiresReboot = 2,
CanRequestReboot = 3
}
public enum OsUpdateResultCodeEnum
{
NotStarted = 1,
InProgress = 2,
Succeeded = 3,
SucceededWithErrors = 4,
Failed = 5,
Aborted = 6
}
public enum OsUpdateTypeEnum
{
Software = 1,
Driver = 2
}
}
[MemoryPackable]
public partial class UpdateList : IAgentMessage
{
[MemoryPackOrder(0)]
public List<Update>? Installed { get; set; }
[MemoryPackOrder(1)]
public List<Update>? Pending { get; set; }
}
}

View file

@ -0,0 +1,73 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(150, typeof(User))]
[MemoryPackUnion(151, typeof(UserList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class User : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Sid { get; set; }
[MemoryPackOrder(1)]
public string? Domain { get; set; }
[MemoryPackOrder(2)]
public string? Name { get; set; }
[MemoryPackOrder(3)]
public string? FullName { get; set; }
[MemoryPackOrder(4)]
public string? Description { get; set; }
[MemoryPackOrder(5)]
public string? Status { get; set; }
[MemoryPackOrder(6)]
public bool? LocalAccount { get; set; }
[MemoryPackOrder(7)]
public bool? Disabled { get; set; }
[MemoryPackOrder(8)]
public bool? Lockout { get; set; }
[MemoryPackOrder(9)]
public bool? PasswordChangeable { get; set; }
[MemoryPackOrder(10)]
public bool? PasswordExpires { get; set; }
[MemoryPackOrder(11)]
public bool? PasswordRequired { get; set; }
[MemoryPackOrder(12)]
public List<Group>? Groups { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class UserList : List<User>, IAgentMessage { }
[MemoryPackable]
public partial class Group : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Sid { get; set; }
[MemoryPackOrder(1)]
public string? Domain { get; set; }
[MemoryPackOrder(2)]
public string? Name { get; set; }
[MemoryPackOrder(3)]
public string? Description { get; set; }
[MemoryPackOrder(4)]
public bool? LocalAccount { get; set; }
}
}

View file

@ -0,0 +1,30 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(60, typeof(Videocard))]
[MemoryPackUnion(61, typeof(VideocardList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class Videocard : IAgentMessage
{
[MemoryPackOrder(0)]
public string? DeviceId { get; set; }
[MemoryPackOrder(1)]
public string? Model { get; set; }
[MemoryPackOrder(2)]
public ulong Memory { get; set; }
[MemoryPackOrder(3)]
public DateTime DriverDate { get; set; }
[MemoryPackOrder(4)]
public string? DriverVersion { get; set; }
}
[MemoryPackable(GenerateType.Collection)]
public partial class VideocardList : List<Videocard>, IAgentMessage { }
}

View file

@ -0,0 +1,265 @@
using MemoryPack;
namespace Insight.Agent.Messages
{
[MemoryPackUnion(170, typeof(VirtualMaschine))]
[MemoryPackUnion(171, typeof(VirtualMaschineList))]
public partial interface IAgentMessage { }
[MemoryPackable]
public partial class VirtualMaschine : IAgentMessage
{
[MemoryPackOrder(0)]
public Guid? Id { get; set; }
[MemoryPackOrder(1)]
public uint? ProcessId { get; set; }
[MemoryPackOrder(2)]
public string? Caption { get; set; }
[MemoryPackOrder(3)]
public string? Name { get; set; }
[MemoryPackOrder(4)]
public string? Notes { get; set; }
[MemoryPackOrder(5)]
public EnabledEnum? Enabled { get; set; }
[MemoryPackOrder(6)]
public EnabledDefaultEnum? EnabledDefault { get; set; }
[MemoryPackOrder(7)]
public HealthStatusEnum? HealthState { get; set; }
[MemoryPackOrder(8)]
public string? Status { get; set; }
[MemoryPackOrder(9)]
public ulong? OnTime { get; set; }
[MemoryPackOrder(10)]
public uint? ReplicationMode { get; set; }
[MemoryPackOrder(11)]
public ReplicationStateEnum? ReplicationState { get; set; }
[MemoryPackOrder(12)]
public ReplicationHealthEnum? ReplicationHealth { get; set; }
[MemoryPackOrder(13)]
public string? ConfigurationVersion { get; set; }
[MemoryPackOrder(14)]
public IntegrationServicesVersionStateEnum? IntegrationServicesVersionState { get; set; }
[MemoryPackOrder(15)]
public uint? NumberOfProcessors { get; set; }
[MemoryPackOrder(16)]
public uint? ProcessorLoad { get; set; }
[MemoryPackOrder(17)]
public int? MemoryAvailable { get; set; }
[MemoryPackOrder(18)]
public ulong? MemoryUsage { get; set; }
[MemoryPackOrder(19)]
public DateTime? InstallDate { get; set; }
[MemoryPackOrder(20)]
public DateTime? TimeOfLastConfigurationChange { get; set; }
[MemoryPackOrder(21)]
public DateTime? TimeOfLastStateChange { get; set; }
[MemoryPackOrder(22)]
public DateTime? LastReplicationTime { get; set; }
[MemoryPackOrder(23)]
public string? GuestOperatingSystem { get; set; }
[MemoryPackOrder(24)]
public List<VirtualMaschineConfiguration>? Configurations { get; set; }
public enum EnabledEnum
{
Unbekannt = 0,
Andere = 1,
Aktiviert = 2,
Deaktiviert = 3,
Herunterfahren = 4,
Nicht_Verfügbar = 5,
Aktiviert_Offline = 6,
In_Test = 7,
Latent = 8,
Eingeschränkt = 9,
Wird_gestartet = 10
}
public enum EnabledDefaultEnum
{
Aktiviert = 2,
Deaktiviert = 3,
Aktiviert_Offline = 6
}
public enum HealthStatusEnum
{
OK = 5,
Hauptfehler = 20,
Kritischer_Fehler = 25
}
public enum ReplicationStateEnum
{
Deaktiviert = 0,
Bereit = 1,
Warten_auf_Erstreplikation = 2,
Replikat = 3,
Synchronisierte_Replication_abgeschlossen = 4,
Wiederhergestellt = 5,
Commit = 6,
Angehalten = 7,
Kritisch = 8,
Warten_auf_die_Neusynchronisierung = 9,
Resynchronisierung = 10,
Resynchronisierung_angehalten = 11,
Failover_in_Bearbeitung = 12,
Failback_in_Fortschritt = 13,
Failback_abgeschlossen = 14,
Datenträgerupdate_in_Bearbeitung = 15,
Datenträgeraktualisierung_kritisch = 16,
Unbekannt = 17,
Repurpose_Replikation_in_Bearbeitung = 18,
Vorbereitet_für_die_Synchronisierungsreplikation = 19,
Vorbereitet_für_die_Umgekehrte_Replikation_der_Gruppe = 20,
Failover_in_Fortschritt = 21
}
public enum ReplicationHealthEnum
{
OK = 1,
Warnung = 2,
Kritisch = 3
}
public enum IntegrationServicesVersionStateEnum
{
Unknown = 0,
UpToDate = 1,
Mismatch = 2
}
}
[MemoryPackable(GenerateType.Collection)]
public partial class VirtualMaschineList : List<VirtualMaschine>, IAgentMessage { }
[MemoryPackable]
public partial class VirtualMaschineConfiguration : IAgentMessage
{
[MemoryPackOrder(0)]
public string? Id { get; set; }
[MemoryPackOrder(1)]
public string? ParentId { get; set; }
[MemoryPackOrder(2)]
public string? Type { get; set; }
[MemoryPackOrder(3)]
public string? Name { get; set; }
[MemoryPackOrder(4)]
public DateTime? CreationTime { get; set; }
[MemoryPackOrder(5)]
public string? Generation { get; set; }
[MemoryPackOrder(6)]
public string? Architecture { get; set; }
[MemoryPackOrder(7)]
public AutomaticStartupActionEnum? AutomaticStartupAction { get; set; }
//public DateTime? AutomaticStartupActionDelay { get; set; }
[MemoryPackOrder(8)]
public AutomaticShutdownActionEnum? AutomaticShutdownAction { get; set; }
[MemoryPackOrder(9)]
public AutomaticRecoveryActionEnum? AutomaticRecoveryAction { get; set; }
[MemoryPackOrder(10)]
public bool? AutomaticSnapshotsEnabled { get; set; }
[MemoryPackOrder(11)]
public string? BaseBoardSerialNumber { get; set; }
[MemoryPackOrder(12)]
public string? BIOSGUID { get; set; }
[MemoryPackOrder(13)]
public string? BIOSSerialNumber { get; set; }
[MemoryPackOrder(14)]
public ushort[]? BootOrder { get; set; }
[MemoryPackOrder(15)]
public string? ConfigurationDataRoot { get; set; }
[MemoryPackOrder(16)]
public string? ConfigurationFile { get; set; }
[MemoryPackOrder(17)]
public string? GuestStateDataRoot { get; set; }
[MemoryPackOrder(18)]
public string? GuestStateFile { get; set; }
[MemoryPackOrder(19)]
public string? SnapshotDataRoot { get; set; }
[MemoryPackOrder(20)]
public string? SuspendDataRoot { get; set; }
[MemoryPackOrder(21)]
public string? SwapFileDataRoot { get; set; }
[MemoryPackOrder(22)]
public bool? SecureBootEnabled { get; set; }
[MemoryPackOrder(23)]
public bool? IsAutomaticSnapshot { get; set; }
[MemoryPackOrder(24)]
public string[]? Notes { get; set; }
[MemoryPackOrder(25)]
public List<VirtualMaschineConfiguration>? Childs { get; set; }
//public string[]? HostResource { get; set; }
public enum AutomaticStartupActionEnum
{
Nothing = 2,
RestartIfLastStateActive = 3,
Alway = 4
}
public enum AutomaticShutdownActionEnum
{
Ausschalten = 2,
Speichern = 3,
Herunterfahren = 4
}
public enum AutomaticRecoveryActionEnum
{
Keine = 2,
Neustart = 3,
Rollback = 4
}
}
}

View file

@ -0,0 +1,7 @@
namespace Insight.Agent.Models
{
public class Config
{
public Guid? Serial { get; set; }
}
}

View file

@ -1,9 +1,10 @@
namespace Insight.Agent; namespace Insight.Agent
public static class Appsettings
{ {
public static class Appsettings
{
public const string Api = "api"; public const string Api = "api";
public const string ServerHost = "server.host"; public const string ServerHost = "server.host";
public const string ServerPort = "server.port"; public const string ServerPort = "server.port";
public const string TrapPort = "trap.port"; public const string TrapPort = "trap.port";
}
} }

View file

@ -1,7 +1,7 @@
namespace Insight.Agent.Constants; namespace Insight.Agent.Constants
public static class Deploy
{ {
public static class Deploy
{
public static class Updater public static class Updater
{ {
public const string Name = "Updater"; public const string Name = "Updater";
@ -17,4 +17,5 @@ public static class Deploy
public static Uri GetUpdateHref(Uri api, string appName) public static Uri GetUpdateHref(Uri api, string appName)
=> new($"{api.AbsoluteUri}/update/{appName.ToLower()}/windows"); => new($"{api.AbsoluteUri}/update/{appName.ToLower()}/windows");
}
} }

View file

@ -1,13 +1,14 @@
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
namespace Insight.Agent.Extensions; namespace Insight.Agent.Extensions
public static class ConfigurationExtensions
{ {
public static class ConfigurationExtensions
{
public static IConfigurationBuilder Defaults(this IConfigurationBuilder configuration) public static IConfigurationBuilder Defaults(this IConfigurationBuilder configuration)
{ {
configuration.Sources.Clear(); configuration.Sources.Clear();
configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); configuration.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
return configuration.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true); return configuration.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", optional: true, reloadOnChange: true);
} }
}
} }

View file

@ -1,10 +1,10 @@
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Extensions; namespace Insight.Agent.Extensions
public static class Linux
{ {
public static class Linux
{
[SupportedOSPlatform("linux")] [SupportedOSPlatform("linux")]
public static string Bash(this string cmd) public static string Bash(this string cmd)
{ {
@ -28,4 +28,5 @@ public static class Linux
return result; return result;
} }
}
} }

View file

@ -3,12 +3,16 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<LangVersion>latest</LangVersion>
<RootNamespace>Insight.Agent</RootNamespace> <RootNamespace>Insight.Agent</RootNamespace>
<Product>Insight</Product> <Product>Insight</Product>
<AssemblyName>agent</AssemblyName> <AssemblyName>agent</AssemblyName>
<AssemblyVersion>2023.12.14.0</AssemblyVersion> <AssemblyVersion>2025.2.24.0</AssemblyVersion>
<FileVersion>2025.2.24.0</FileVersion>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<SatelliteResourceLanguages>none</SatelliteResourceLanguages>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
@ -23,15 +27,14 @@
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="7.0.1" /> <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="7.0.1" />
<PackageReference Include="Microsoft.PowerShell.SDK" Version="7.3.10" />
<PackageReference Include="Serilog.Extensions.Logging.File" Version="3.0.0" /> <PackageReference Include="Serilog.Extensions.Logging.File" Version="3.0.0" />
<PackageReference Include="System.Management" Version="7.0.2" /> <PackageReference Include="System.Management" Version="7.0.2" />
<PackageReference Include="System.ServiceProcess.ServiceController" Version="7.0.1" /> <PackageReference Include="System.ServiceProcess.ServiceController" Version="7.0.1" />
<PackageReference Include="Vaitr.Snmp" Version="2023.3.3" /> <PackageReference Include="Microsoft.PowerShell.SDK" Version="7.3.7" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Core\Insight.Domain\Insight.Domain.csproj" /> <ProjectReference Include="..\Insight.Agent.Assets\Insight.Agent.Assets.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View file

@ -1,10 +1,10 @@
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent; namespace Insight.Agent
public static class ManagmentExtensions
{ {
public static class ManagmentExtensions
{
[SupportedOSPlatform("windows")] [SupportedOSPlatform("windows")]
public static HashSet<string> GetPropertyHashes(this ManagementBaseObject @object) public static HashSet<string> GetPropertyHashes(this ManagementBaseObject @object)
{ {
@ -65,4 +65,5 @@ public static class ManagmentExtensions
value = obj; value = obj;
return true; return true;
} }
}
} }

View file

@ -2,10 +2,10 @@
using System.ServiceProcess; using System.ServiceProcess;
using System.Text; using System.Text;
namespace Insight.Agent; namespace Insight.Agent
internal class Helpers
{ {
internal class Helpers
{
internal static string? EscapeWql(string text) internal static string? EscapeWql(string text)
{ {
if (text == null) return null; if (text == null) return null;
@ -40,4 +40,5 @@ internal class Helpers
if (winRm.Status != ServiceControllerStatus.Running) return false; if (winRm.Status != ServiceControllerStatus.Running) return false;
return true; return true;
} }
}
} }

View file

@ -1,6 +0,0 @@
namespace Insight.Agent.Models;
public class Config
{
public Guid? Serial { get; set; }
}

View file

@ -1,37 +1,17 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Net.Sockets;
using Vaitr.Network; using Vaitr.Network;
namespace Insight.Agent.Network; namespace Insight.Agent.Network;
public class AgentSession : TcpSession<IMessage> public class AgentSession(IEnumerable<IAgentMessageHandler<AgentSession>> handlers, Socket socket, Stream stream, TcpConnectionOptions options, MemPackSerializer serializer, ILogger<AgentSession> logger)
: TcpSession<MemPackSerializer, IAgentMessage>(socket, stream, options, serializer, logger)
{ {
private readonly IEnumerable<IMessageHandler<AgentSession>> _handlers; private readonly IEnumerable<IAgentMessageHandler<AgentSession>> _handlers = handlers;
public AgentSession(IEnumerable<IMessageHandler<AgentSession>> handlers, ISerializer<IMessage> serializer, ILogger<AgentSession> logger) : base(serializer, logger) protected override async ValueTask OnReceivedAsync(PacketContext<IAgentMessage> context, CancellationToken cancellationToken)
{
_handlers = handlers;
}
protected override ValueTask OnConnectedAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Agent ({ep?}) connected", RemoteEndPoint);
return default;
}
protected override ValueTask OnDisconnectedAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Agent ({ep?}) disconnected", RemoteEndPoint);
return default;
}
protected override ValueTask OnSentAsync(IPacketContext<IMessage> context, CancellationToken cancellationToken)
{
return base.OnSentAsync(context, cancellationToken);
}
protected override async ValueTask OnReceivedAsync(IPacketContext<IMessage> context, CancellationToken cancellationToken)
{ {
await base.OnReceivedAsync(context, cancellationToken); await base.OnReceivedAsync(context, cancellationToken);
@ -39,7 +19,7 @@ public class AgentSession : TcpSession<IMessage>
{ {
try try
{ {
await handler.HandleAsync(this, context.Packet, cancellationToken); await handler.HandleAsync(this, context.Data, cancellationToken);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -47,10 +27,4 @@ public class AgentSession : TcpSession<IMessage>
} }
} }
} }
protected override ValueTask OnHeartbeatAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Agent ({ep?}) Heartbeat", RemoteEndPoint);
return default;
}
} }

View file

@ -1,19 +1,16 @@
using Insight.Agent.Models; using Insight.Agent.Interfaces;
using Insight.Agent.Messages;
using Insight.Agent.Models;
using Insight.Agent.Services; using Insight.Agent.Services;
using Insight.Domain.Constants; using Insight.Domain.Constants;
using Insight.Domain.Interfaces;
using Insight.Domain.Network;
using Insight.Domain.Network.Agent.Messages;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
public class AuthenticationHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage public class AuthenticationHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case AuthenticationRequest: if (message is AuthenticationRequest)
{ {
Config? config = null; Config? config = null;
@ -29,14 +26,12 @@ public class AuthenticationHandler : IMessageHandler<AgentSession>
await Configurator.WriteAsync(config, Configuration.DefaultConfig, cancellationToken).ConfigureAwait(false); await Configurator.WriteAsync(config, Configuration.DefaultConfig, cancellationToken).ConfigureAwait(false);
} }
await sender.SendAsync(new AuthenticationResponse await sender.SendAsync(new Authentication
{ {
Serial = config.Serial ?? throw new InvalidDataException(nameof(config.Serial)), Serial = config.Serial ?? throw new InvalidDataException(nameof(config.Serial)),
Version = Configuration.Version, Version = Configuration.Version,
Hostname = Configuration.Hostname Hostname = Configuration.Hostname
}, cancellationToken); }, cancellationToken);
break;
} }
} }
} }

View file

@ -1,19 +1,36 @@
using Microsoft.Extensions.Logging; using Insight.Agent.Interfaces;
using Insight.Agent.Messages;
using System.Management.Automation; using System.Management.Automation;
using System.Management.Automation.Runspaces; using System.Management.Automation.Runspaces;
namespace Insight.Agent.Services; namespace Insight.Agent.Network.Handlers;
public class ScriptService public class ConsoleHandler : IAgentMessageHandler<AgentSession>
{ {
private readonly ILogger<ScriptService> _logger; public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
public ScriptService(ILogger<ScriptService> logger)
{ {
_logger = logger; if (message is ConsoleQueryRequest consoleQueryRequest)
{
await OnConsoleQueryRequestAsync(sender, consoleQueryRequest, cancellationToken);
}
} }
public async Task<QueryResult> QueryAsync(string query) private async ValueTask OnConsoleQueryRequestAsync(AgentSession sender, ConsoleQueryRequest consoleQueryRequest, CancellationToken cancellationToken)
{
var result = await QueryScriptAsync(consoleQueryRequest.Query);
await sender.SendAsync(new ConsoleQuery
{
Id = consoleQueryRequest.Id,
HostId = consoleQueryRequest.HostId,
Query = consoleQueryRequest.Query,
Data = result.Data,
Errors = result.Errors,
HadErrors = result.HadErrors
}, cancellationToken);
}
private static async Task<QueryResult> QueryScriptAsync(string query)
{ {
var result = new QueryResult(); var result = new QueryResult();
var errors = new List<string>(); var errors = new List<string>();
@ -27,7 +44,7 @@ public class ScriptService
using var ps = PowerShell.Create(runspace); using var ps = PowerShell.Create(runspace);
ps.AddScript("Set-ExecutionPolicy unrestricted -Scope Process"); ps.AddScript("Set-ExecutionPolicy unrestricted -Scope Process");
ps.AddScript(query); ps.AddScript(query);
//ps.AddCommand("ConvertTo-Json"); // -Depth 10 ps.AddCommand("ConvertTo-Json"); // -Depth 10
result.Query = query; result.Query = query;
@ -40,15 +57,7 @@ public class ScriptService
} }
else else
{ {
var newLine = false; result.Data = queryResult[0].ToString();
foreach (var data in queryResult)
{
if (newLine) result.Data += "\n";
else newLine = true;
result.Data += data.ToString();
}
//if (string.IsNullOrWhiteSpace(jsonString)) return result; //if (string.IsNullOrWhiteSpace(jsonString)) return result;
@ -91,12 +100,12 @@ public class ScriptService
result.Errors = string.Join("\n", errors); result.Errors = string.Join("\n", errors);
return result; return result;
} }
}
public class QueryResult public class QueryResult
{ {
public bool HadErrors { get; set; } public bool HadErrors { get; set; }
public string? Query { get; set; } public string? Query { get; set; }
public string? Data { get; set; } public string? Data { get; set; }
public string? Errors { get; set; } public string? Errors { get; set; }
}
} }

View file

@ -1,40 +0,0 @@
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<AgentSession>
{
private readonly ScriptService _scriptService;
private readonly ILogger<CustomHandler> _logger;
public CustomHandler(ScriptService scriptService, ILogger<CustomHandler> logger)
{
_scriptService = scriptService;
_logger = logger;
}
public async ValueTask HandleAsync<TMessage>(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);
}
}

View file

@ -1,26 +1,21 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class DriveHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class DriveHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<Drive>(); var result = new DriveList();
result.AddRange(GetDrives()); result.AddRange(GetDrives());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -179,4 +174,5 @@ public class DriveHandler : IMessageHandler<AgentSession>
return volumes; return volumes;
} }
}
} }

View file

@ -1,29 +1,25 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Net; using System.Net;
using System.Net.NetworkInformation; using System.Net.NetworkInformation;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using Route = Insight.Agent.Messages.Route;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class InterfaceHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class InterfaceHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<Interface>(); var result = new InterfaceList();
result.AddRange(GetInterfaces()); result.AddRange(GetInterfaces());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -274,4 +270,5 @@ public class InterfaceHandler : IMessageHandler<AgentSession>
_ => null, _ => null,
}; };
} }
}
} }

View file

@ -1,21 +1,18 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class MainboardHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class MainboardHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{
if (message is GetInventory)
{ {
case InventoryRequest:
await sender.SendAsync(GetMainboard(), cancellationToken); await sender.SendAsync(GetMainboard(), cancellationToken);
break;
} }
} }
@ -85,4 +82,5 @@ public class MainboardHandler : IMessageHandler<AgentSession>
return mainboard; return mainboard;
} }
}
} }

View file

@ -1,26 +1,21 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class MemoryHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class MemoryHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<Memory>(); var result = new MemoryList();
result.AddRange(GetMemory()); result.AddRange(GetMemory());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -124,4 +119,5 @@ public class MemoryHandler : IMessageHandler<AgentSession>
// metric.MemoryAvailablePercentage = 100 - metric.MemoryUsagePercentage; // metric.MemoryAvailablePercentage = 100 - metric.MemoryUsagePercentage;
// return metric; // return metric;
//} //}
}
} }

View file

@ -1,24 +1,21 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using Microsoft.Win32; using Microsoft.Win32;
using System.Management; using System.Management;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using System.Security.AccessControl; using System.Security.AccessControl;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class OperationSystemHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class OperationSystemHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{
if (message is GetInventory)
{ {
case InventoryRequest:
await sender.SendAsync(GetOperatingSystem(), cancellationToken); await sender.SendAsync(GetOperatingSystem(), cancellationToken);
break;
} }
} }
@ -90,4 +87,5 @@ public class OperationSystemHandler : IMessageHandler<AgentSession>
return os; return os;
} }
}
} }

View file

@ -1,26 +1,21 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class PrinterHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class PrinterHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<Printer>(); var result = new PrinterList();
result.AddRange(GetPrinters()); result.AddRange(GetPrinters());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -61,4 +56,5 @@ public class PrinterHandler : IMessageHandler<AgentSession>
return printers; return printers;
} }
}
} }

View file

@ -1,26 +1,21 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class ProcessorHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class ProcessorHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<Processor>(); var result = new ProcessorList();
result.AddRange(GetProcessors()); result.AddRange(GetProcessors());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -144,4 +139,5 @@ public class ProcessorHandler : IMessageHandler<AgentSession>
// metric.ProcessorUsagePercentage = ProcessorTimeCounter?.NextValue(); // metric.ProcessorUsagePercentage = ProcessorTimeCounter?.NextValue();
// return metric; // return metric;
//} //}
}
} }

View file

@ -1,44 +0,0 @@
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<AgentSession>
{
private readonly ScriptService _scriptService;
private readonly ILogger<ProxyHandler> _logger;
public ProxyHandler(ScriptService scriptService, ILogger<ProxyHandler> logger)
{
_scriptService = scriptService;
_logger = logger;
}
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage
{
switch (message)
{
case Proxy<Request> proxyRequest:
await OnProxyRequestAsync(sender, proxyRequest, cancellationToken);
break;
}
}
private async ValueTask OnProxyRequestAsync(AgentSession sender, Proxy<Request> proxyRequest, CancellationToken cancellationToken)
{
var result = await _scriptService.QueryAsync(proxyRequest.Message.RequestData);
await sender.SendAsync(new Proxy<Response>()
{
ProxyId = proxyRequest.ProxyId,
Message = new Response(proxyRequest.Message)
{
ResponseData = result.HadErrors ? result.Errors : result.Data,
ResponseError = result.HadErrors
}
}, cancellationToken);
}
}

View file

@ -1,27 +1,22 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using System.ServiceProcess; using System.ServiceProcess;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class ServiceHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class ServiceHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<Service>(); var result = new ServiceList();
result.AddRange(GetServices()); result.AddRange(GetServices());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -119,4 +114,5 @@ public class ServiceHandler : IMessageHandler<AgentSession>
return services.OrderBy(x => x.Name).ToList(); return services.OrderBy(x => x.Name).ToList();
} }
}
} }

View file

@ -1,31 +1,28 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class SessionHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class SessionHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<Session>(); var result = new SessionList();
result.AddRange(GetSessions()); result.AddRange(GetSessions());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
private static List<Session> GetSessions() private static List<Session> GetSessions()
{ {
var query = NativeMethods.GetSessions();
var sessions = new List<Session>(); var sessions = new List<Session>();
foreach (var s in NativeMethods.GetSessions()) foreach (var s in NativeMethods.GetSessions())
@ -251,4 +248,5 @@ public class SessionHandler : IMessageHandler<AgentSession>
return sessions; return sessions;
} }
} }
}
} }

View file

@ -1,35 +1,30 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using Microsoft.Win32; using Microsoft.Win32;
using System.Globalization; using System.Globalization;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using System.Security.AccessControl; using System.Security.AccessControl;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
internal class SoftwareHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
internal class SoftwareHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var x64 = Task.Run(() => ApplicationRegistryQuery(RegistryView.Registry64), cancellationToken); var x64 = Task.Run(() => ApplicationRegistryQuery(RegistryView.Registry64), cancellationToken);
var x86 = Task.Run(() => ApplicationRegistryQuery(RegistryView.Registry32), 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 Collection<Application>(); var result = new ApplicationList();
result.AddRange(x64.Result); result.AddRange(x64.Result);
result.AddRange(x86.Result.Where(p => result.All(app => p.Name != app.Name && p.Version != app.Version))); 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;
}
} }
} }
@ -120,4 +115,5 @@ internal class SoftwareHandler : IMessageHandler<AgentSession>
return apps; return apps;
} }
}
} }

View file

@ -1,29 +1,24 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using static Insight.Domain.Network.Agent.Messages.PhysicalDisk; using static Insight.Agent.Messages.PhysicalDisk;
using static Insight.Domain.Network.Agent.Messages.StoragePool; using static Insight.Agent.Messages.StoragePool;
using static Insight.Domain.Network.Agent.Messages.VirtualDisk; using static Insight.Agent.Messages.VirtualDisk;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class StoragePoolHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class StoragePoolHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<StoragePool>(); var result = new StoragePoolList();
result.AddRange(GetStoragePool()); result.AddRange(GetStoragePool());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -309,4 +304,5 @@ public class StoragePoolHandler : IMessageHandler<AgentSession>
return disks; return disks;
} }
}
} }

View file

@ -1,23 +1,20 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using Microsoft.Win32; using Microsoft.Win32;
using System.Collections; using System.Collections;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class SystemInfoHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class SystemInfoHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{
if (message is GetInventory)
{ {
case InventoryRequest:
await sender.SendAsync(GetSystem(), cancellationToken); await sender.SendAsync(GetSystem(), cancellationToken);
break;
} }
} }
@ -174,4 +171,5 @@ public class SystemInfoHandler : IMessageHandler<AgentSession>
UpToWindows7, UpToWindows7,
Windows8AndUp Windows8AndUp
} }
}
} }

View file

@ -1,29 +1,30 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using WUApiLib; using WUApiLib;
using static Insight.Domain.Network.Agent.Messages.Update; using static Insight.Agent.Messages.Update;
using UpdateCollection = Insight.Domain.Network.Agent.Messages.UpdateCollection;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class UpdateHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class UpdateHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
await sender.SendAsync(new UpdateCollection {
await sender.SendAsync(GetUpdates(), cancellationToken);
}
}
private static UpdateList GetUpdates()
{
return new UpdateList
{ {
Installed = QueryInstalledUpdates(), Installed = QueryInstalledUpdates(),
Pending = QueryPendingUpdates() Pending = QueryPendingUpdates()
}, cancellationToken); };
break;
}
} }
private static List<Update> QueryInstalledUpdates() private static List<Update> QueryInstalledUpdates()
@ -125,4 +126,5 @@ public class UpdateHandler : IMessageHandler<AgentSession>
return updates; return updates;
} }
}
} }

View file

@ -1,26 +1,21 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class UserHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class UserHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<User>(); var result = new UserList();
result.AddRange(GetUsers()); result.AddRange(GetUsers());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -189,4 +184,5 @@ public class UserHandler : IMessageHandler<AgentSession>
public string? UserDomain { get; set; } public string? UserDomain { get; set; }
public string? UserName { get; set; } public string? UserName { get; set; }
} }
}
} }

View file

@ -1,26 +1,21 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class VideocardHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class VideocardHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<Videocard>(); var result = new VideocardList();
result.AddRange(GetVideocards()); result.AddRange(GetVideocards());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -65,4 +60,5 @@ public class VideocardHandler : IMessageHandler<AgentSession>
return videocards; return videocards;
} }
}
} }

View file

@ -1,28 +1,23 @@
using Insight.Domain.Interfaces; using Insight.Agent.Interfaces;
using Insight.Domain.Network; using Insight.Agent.Messages;
using Insight.Domain.Network.Agent.Messages;
using System.Management; using System.Management;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using static Insight.Domain.Network.Agent.Messages.VirtualMaschine; using static Insight.Agent.Messages.VirtualMaschine;
using static Insight.Domain.Network.Agent.Messages.VirtualMaschineConfiguration; using static Insight.Agent.Messages.VirtualMaschineConfiguration;
namespace Insight.Agent.Network.Handlers; namespace Insight.Agent.Network.Handlers
[SupportedOSPlatform("windows")]
public class VirtualMaschineHandler : IMessageHandler<AgentSession>
{ {
public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage [SupportedOSPlatform("windows")]
public class VirtualMaschineHandler : IAgentMessageHandler<AgentSession>
{ {
switch (message) public async ValueTask HandleAsync<TMessage>(AgentSession sender, TMessage message, CancellationToken cancellationToken) where TMessage : IAgentMessage
{ {
case InventoryRequest: if (message is GetInventory)
{ {
var result = new Collection<VirtualMaschine>(); var result = new VirtualMaschineList();
result.AddRange(GetVirtualMaschines()); result.AddRange(GetVirtualMaschines());
await sender.SendAsync(result, cancellationToken); await sender.SendAsync(result, cancellationToken);
break;
}
} }
} }
@ -360,4 +355,5 @@ public class VirtualMaschineHandler : IMessageHandler<AgentSession>
return vms; return vms;
} }
}
} }

View file

@ -1,21 +1,20 @@
using Insight.Agent.Extensions; using Insight.Agent.Extensions;
using Insight.Agent.Interfaces;
using Insight.Agent.Messages;
using Insight.Agent.Network; using Insight.Agent.Network;
using Insight.Agent.Network.Handlers; using Insight.Agent.Network.Handlers;
using Insight.Agent.Services; using Insight.Agent.Services;
using Insight.Domain.Constants; using Insight.Domain.Constants;
using Insight.Domain.Interfaces;
using Insight.Domain.Network;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Vaitr.Network; using Vaitr.Network;
using Vaitr.Network.Hosting;
namespace Insight.Agent.Windows; namespace Insight.Agent.Windows
internal class Program
{ {
internal class Program
{
public static async Task Main(string[] args) public static async Task Main(string[] args)
{ {
var builder = Host.CreateDefaultBuilder(args); var builder = Host.CreateDefaultBuilder(args);
@ -44,51 +43,50 @@ internal class Program
builder.ConfigureServices((host, services) => builder.ConfigureServices((host, services) =>
{ {
// HOST-SERVICES // SERVICES
services.AddHostedService<UpdateService>(); services.AddHostedService<UpdateService>();
services.AddHostedService<TrapService>(); services.AddHostedService<TrapService>();
// SERVICES (WINDOWS) // SERVICES (WINDOWS)
if (OperatingSystem.IsWindows()) services.AddHostedService<EventService>(); if (OperatingSystem.IsWindows()) services.AddHostedService<EventService>();
if (OperatingSystem.IsWindows()) services.AddSingleton<ScriptService>();
// AGENT NETWORKING // AGENT NETWORKING
services.UseHostedClient<AgentSession, IMessage>(options => services.UseHostedTcpClient<AgentSession, MemPackSerializer, IAgentMessage>(options =>
{ {
options.Host = host.Configuration.GetValue<string?>(Appsettings.ServerHost) ?? throw new Exception($"{Appsettings.ServerHost} value not set (appsettings)"); options.Host = host.Configuration.GetValue<string?>(Appsettings.ServerHost) ?? throw new Exception($"{Appsettings.ServerHost} value not set (appsettings)");
options.Port = host.Configuration.GetValue<int?>(Appsettings.ServerPort) ?? throw new Exception($"{Appsettings.ServerPort} value not set (appsettings)"); options.Port = host.Configuration.GetValue<int?>(Appsettings.ServerPort) ?? throw new Exception($"{Appsettings.ServerPort} value not set (appsettings)");
options.Keepalive = 10000; options.Buffer = 1024 * 1024;
options.KeepAlive = 10000;
options.Timeout = 30000; options.Timeout = 30000;
options.Parallelism = 0;
options.Compression = true; options.Compression = Compression.None;
options.Encryption = Encryption.Tls12; options.Encryption = Encryption.Tls12;
options.SslPolicy = SslPolicy.None;
options.UseSerializer<AgentSession, IMessage, MemPackSerializer<IMessage>>(); //options.InputRateLimit = 1024 * 1024 * 100;
//options.OutputRateLimit = 1024 * 1024 * 100;
}); });
services.AddSingleton<IMessageHandler<AgentSession>, CustomHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, AuthenticationHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, ProxyHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, DriveHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, AuthenticationHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, InterfaceHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, DriveHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, MainboardHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, InterfaceHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, MemoryHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, MainboardHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, OperationSystemHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, MemoryHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, PrinterHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, OperationSystemHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, ProcessorHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, PrinterHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, ServiceHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, ProcessorHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, SessionHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, ServiceHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, SoftwareHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, SessionHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, StoragePoolHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, SoftwareHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, SystemInfoHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, StoragePoolHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, UpdateHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, SystemInfoHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, UserHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, UpdateHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, VideocardHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, UserHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, VirtualMaschineHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, VideocardHandler>(); services.AddSingleton<IAgentMessageHandler<AgentSession>, ConsoleHandler>();
services.AddSingleton<IMessageHandler<AgentSession>, VirtualMaschineHandler>();
// GLOBAL DEPENDENCIES // GLOBAL DEPENDENCIES
//services.AddSingleton<Bus>();
services.AddTransient(provider => new HttpClient(new HttpClientHandler services.AddTransient(provider => new HttpClient(new HttpClientHandler
{ {
ClientCertificateOptions = ClientCertificateOption.Manual, ClientCertificateOptions = ClientCertificateOption.Manual,
@ -99,4 +97,5 @@ internal class Program
var host = builder.Build(); var host = builder.Build();
await host.RunAsync().ConfigureAwait(false); await host.RunAsync().ConfigureAwait(false);
} }
}
} }

View file

@ -2,15 +2,16 @@
using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Logging.Abstractions;
using System.Runtime.Versioning; using System.Runtime.Versioning;
namespace Insight.Agent.Services; namespace Insight.Agent.Services
[SupportedOSPlatform("linux")]
public partial class CollectorService
{ {
[SupportedOSPlatform("linux")]
public partial class CollectorService
{
public ILogger<CollectorService> Logger { get; } public ILogger<CollectorService> Logger { get; }
public CollectorService(ILogger<CollectorService>? logger = null) public CollectorService(ILogger<CollectorService>? logger = null)
{ {
Logger = logger ?? NullLogger<CollectorService>.Instance; Logger = logger ?? NullLogger<CollectorService>.Instance;
} }
}
} }

View file

@ -1,9 +1,9 @@
using System.Text.Json; using System.Text.Json;
namespace Insight.Agent.Services; namespace Insight.Agent.Services
public static class Configurator
{ {
public static class Configurator
{
public static async ValueTask<TConfig> ReadAsync<TConfig>(string file, CancellationToken cancellationToken = default) public static async ValueTask<TConfig> ReadAsync<TConfig>(string file, CancellationToken cancellationToken = default)
where TConfig : class where TConfig : class
{ {
@ -93,4 +93,5 @@ public static class Configurator
await File.WriteAllTextAsync(file, json, cancellationToken); await File.WriteAllTextAsync(file, json, cancellationToken);
} }
}
} }

View file

@ -1,25 +1,24 @@
using Insight.Agent.Network; using Insight.Agent.Messages;
using Insight.Domain.Network; using Insight.Agent.Network;
using Insight.Domain.Network.Agent.Messages;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Diagnostics.Eventing.Reader; using System.Diagnostics.Eventing.Reader;
using System.Runtime.Versioning; using System.Runtime.Versioning;
using System.Threading.Channels; using System.Threading.Channels;
using Vaitr.Network; using Vaitr.Network;
using static Insight.Domain.Network.Agent.Messages.Event; using static Insight.Agent.Messages.Event;
using EventLevel = System.Diagnostics.Tracing.EventLevel; using EventLevel = System.Diagnostics.Tracing.EventLevel;
namespace Insight.Agent.Services; namespace Insight.Agent.Services
[SupportedOSPlatform("windows")]
internal class EventService : BackgroundService
{ {
[SupportedOSPlatform("windows")]
internal class EventService : BackgroundService
{
private readonly Channel<Event> _queue; private readonly Channel<Event> _queue;
private readonly ISessionPool<AgentSession, IMessage> _pool; private readonly TcpSessionPool<AgentSession, MemPackSerializer, IAgentMessage> _pool;
private readonly ILogger<EventService> _logger; private readonly ILogger<EventService> _logger;
public EventService(ISessionPool<AgentSession, IMessage> pool, ILogger<EventService> logger) public EventService(TcpSessionPool<AgentSession, MemPackSerializer, IAgentMessage> pool, ILogger<EventService> logger)
{ {
_pool = pool; _pool = pool;
_logger = logger; _logger = logger;
@ -167,4 +166,5 @@ internal class EventService : BackgroundService
} }
catch (Exception) { } // app crash catch (Exception) { } // app crash
} }
}
} }

View file

@ -1,6 +1,5 @@
using Insight.Agent.Network; using Insight.Agent.Messages;
using Insight.Domain.Network; using Insight.Agent.Network;
using Insight.Domain.Network.Agent.Messages;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -10,18 +9,19 @@ using System.Net.Sockets;
using System.Threading.Channels; using System.Threading.Channels;
using Vaitr.Network; using Vaitr.Network;
namespace Insight.Agent.Services; namespace Insight.Agent.Services
public class TrapService : BackgroundService
{ {
public class TrapService : BackgroundService
{
private static IPEndPoint EndpointCache { get; } = new(IPAddress.Any, 0); private static IPEndPoint EndpointCache { get; } = new(IPAddress.Any, 0);
private readonly Channel<Trap> _queue; private readonly Channel<Trap> _queue;
private readonly int _port; private readonly int _port;
private readonly ISessionPool<AgentSession, IMessage> _pool; private readonly TcpSessionPool<AgentSession, MemPackSerializer, IAgentMessage> _pool;
private readonly ILogger<TrapService> _logger; private readonly ILogger<TrapService> _logger;
public TrapService(ISessionPool<AgentSession, IMessage> pool, IConfiguration configuration, ILogger<TrapService> logger) public TrapService(TcpSessionPool<AgentSession, MemPackSerializer, IAgentMessage> pool, IConfiguration configuration, ILogger<TrapService> logger)
{ {
_port = configuration.GetValue<int?>(Appsettings.TrapPort) ?? throw new Exception($"{Appsettings.TrapPort} value not set (appsettings)"); _port = configuration.GetValue<int?>(Appsettings.TrapPort) ?? throw new Exception($"{Appsettings.TrapPort} value not set (appsettings)");
_pool = pool; _pool = pool;
@ -196,4 +196,5 @@ public class TrapService : BackgroundService
return data; return data;
} }
}
} }

View file

@ -10,10 +10,10 @@ using System.Runtime.Versioning;
using System.ServiceProcess; using System.ServiceProcess;
using System.Text.Json; using System.Text.Json;
namespace Insight.Agent.Services; namespace Insight.Agent.Services
internal class UpdateService : BackgroundService
{ {
internal class UpdateService : BackgroundService
{
private readonly Uri _uri; private readonly Uri _uri;
private readonly HttpClient _httpClient; private readonly HttpClient _httpClient;
@ -356,4 +356,5 @@ internal class UpdateService : BackgroundService
public List<string> ApiErrors { get; } = new(); public List<string> ApiErrors { get; } = new();
public List<string> UpdateErrors { get; } = new(); public List<string> UpdateErrors { get; } = new();
} }
}
} }

View file

@ -1,12 +1,12 @@
using Insight.Agent.Extensions; using Insight.Agent.Extensions;
using Insight.Domain.Network.Agent.Messages; using Insight.Agent.Messages;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
namespace Insight.Agent.Services; namespace Insight.Agent.Services
public partial class CollectorService
{ {
public partial class CollectorService
{
public OperationSystem? GetOperatingSystem() public OperationSystem? GetOperatingSystem()
{ {
Logger.LogTrace("GetOperatingSystem"); Logger.LogTrace("GetOperatingSystem");
@ -102,4 +102,5 @@ public partial class CollectorService
return os; return os;
} }
}
} }

View file

@ -1,12 +1,12 @@
using Insight.Agent.Extensions; using Insight.Agent.Extensions;
using Insight.Domain.Network.Agent.Messages; using Insight.Agent.Messages;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
namespace Insight.Agent.Services; namespace Insight.Agent.Services
public partial class CollectorService
{ {
public partial class CollectorService
{
public List<Session>? GetSessions() public List<Session>? GetSessions()
{ {
Logger.LogTrace("GetSessions"); Logger.LogTrace("GetSessions");
@ -46,4 +46,5 @@ public partial class CollectorService
return sessions; return sessions;
} }
}
} }

View file

@ -1,8 +1,9 @@
using Insight.Domain.Constants; using Insight.Domain.Constants;
namespace Insight.Api; namespace Insight.Api
public static class Locations
{ {
public static class Locations
{
public static DirectoryInfo UpdatesPath { get; } = new DirectoryInfo($"{Configuration.AppDirectory?.FullName}/files/updates"); public static DirectoryInfo UpdatesPath { get; } = new DirectoryInfo($"{Configuration.AppDirectory?.FullName}/files/updates");
}
} }

View file

@ -4,11 +4,11 @@ using Insight.Infrastructure.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Insight.Api.Controllers; namespace Insight.Api.Controllers
[ApiController, Route("api/accounts")]
public class AccountController : ControllerBase
{ {
[ApiController, Route("api/accounts")]
public class AccountController : ControllerBase
{
private readonly IdentityService _identityService; private readonly IdentityService _identityService;
private readonly AccountService _accountService; private readonly AccountService _accountService;
private readonly ILogger<AccountController> _logger; private readonly ILogger<AccountController> _logger;
@ -72,4 +72,5 @@ public class AccountController : ControllerBase
return Ok(model.Email); return Ok(model.Email);
} }
}
} }

View file

@ -3,11 +3,11 @@ using Insight.Infrastructure.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Insight.Api.Controllers; namespace Insight.Api.Controllers
[ApiController, Route("api/agents")]
public class AgentController : ControllerBase
{ {
[ApiController, Route("api/agents")]
public class AgentController : ControllerBase
{
private readonly AgentService _agentService; private readonly AgentService _agentService;
private readonly ILogger<AgentController> _logger; private readonly ILogger<AgentController> _logger;
@ -40,4 +40,5 @@ public class AgentController : ControllerBase
return BadRequest(ex.Message); return BadRequest(ex.Message);
} }
} }
}
} }

View file

@ -3,11 +3,11 @@ using Insight.Infrastructure.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Insight.Api.Controllers; namespace Insight.Api.Controllers
[ApiController, Route("api/customers")]
public class CustomerController : ControllerBase
{ {
[ApiController, Route("api/customers")]
public class CustomerController : ControllerBase
{
private readonly CustomerService _customerService; private readonly CustomerService _customerService;
private readonly ILogger<CustomerController> _logger; private readonly ILogger<CustomerController> _logger;
@ -40,4 +40,5 @@ public class CustomerController : ControllerBase
return BadRequest(ex.Message); return BadRequest(ex.Message);
} }
} }
}
} }

View file

@ -3,11 +3,11 @@ using Insight.Infrastructure.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Insight.Api.Controllers; namespace Insight.Api.Controllers
[ApiController, Route("api/hosts")]
public class HostController : ControllerBase
{ {
[ApiController, Route("api/hosts")]
public class HostController : ControllerBase
{
private readonly HostService _hostService; private readonly HostService _hostService;
private readonly ILogger<HostController> _logger; private readonly ILogger<HostController> _logger;
@ -40,4 +40,5 @@ public class HostController : ControllerBase
return BadRequest(ex.Message); return BadRequest(ex.Message);
} }
} }
}
} }

View file

@ -8,11 +8,11 @@ using MongoDB.Driver;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
namespace Insight.Api.Controllers; namespace Insight.Api.Controllers
[ApiController, Route("api/inventory")]
public class InventoryController : ControllerBase
{ {
[ApiController, Route("api/inventory")]
public class InventoryController : ControllerBase
{
private readonly InventoryService _inventoryService; private readonly InventoryService _inventoryService;
private readonly ILogger<InventoryController> _logger; private readonly ILogger<InventoryController> _logger;
@ -69,4 +69,5 @@ public class InventoryController : ControllerBase
[JsonPropertyName("name")] [JsonPropertyName("name")]
public string? Name { get; set; } public string? Name { get; set; }
} }
}
} }

View file

@ -1,10 +1,10 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Insight.Server.Controllers; namespace Insight.Server.Controllers
[ApiController, Route("api/setup")]
public class SetupController : ControllerBase
{ {
[ApiController, Route("api/setup")]
public class SetupController : ControllerBase
{
private readonly ILogger<SetupController> _logger; private readonly ILogger<SetupController> _logger;
public SetupController(ILogger<SetupController> logger) public SetupController(ILogger<SetupController> logger)
@ -26,4 +26,5 @@ public class SetupController : ControllerBase
return File(await System.IO.File.ReadAllBytesAsync(files.OrderBy(p => p.LastWriteTime).First().FullName, cancellationToken), "application/zip", "setup-win64.zip"); return File(await System.IO.File.ReadAllBytesAsync(files.OrderBy(p => p.LastWriteTime).First().FullName, cancellationToken), "application/zip", "setup-win64.zip");
} }
}
} }

View file

@ -3,11 +3,11 @@ using Insight.Infrastructure.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Insight.Api.Controllers; namespace Insight.Api.Controllers
[ApiController, Route("api/token", Order = 0)]
public class TokenController : ControllerBase
{ {
[ApiController, Route("api/token", Order = 0)]
public class TokenController : ControllerBase
{
private readonly TokenService _tokenService; private readonly TokenService _tokenService;
public TokenController(TokenService tokenService) public TokenController(TokenService tokenService)
@ -81,4 +81,5 @@ public class TokenController : ControllerBase
return BadRequest(ex.Message); return BadRequest(ex.Message);
} }
} }
}
} }

View file

@ -2,11 +2,11 @@
using Insight.Domain.Models; using Insight.Domain.Models;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
namespace Insight.Server.Controllers; namespace Insight.Server.Controllers
[ApiController, Route("api/update")]
public class UpdateController : ControllerBase
{ {
[ApiController, Route("api/update")]
public class UpdateController : ControllerBase
{
private readonly ILogger<UpdateController> _logger; private readonly ILogger<UpdateController> _logger;
public UpdateController(ILogger<UpdateController> logger) public UpdateController(ILogger<UpdateController> logger)
@ -89,4 +89,5 @@ public class UpdateController : ControllerBase
Uri = new Uri($"{Request.Scheme}://{Request.Host}/api/{relPath}") Uri = new Uri($"{Request.Scheme}://{Request.Host}/api/{relPath}")
}); });
} }
}
} }

View file

@ -2,10 +2,10 @@
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using System.Reflection; using System.Reflection;
namespace Insight.Api.Hosting; namespace Insight.Api.Hosting
public static class ServiceExtensions
{ {
public static class ServiceExtensions
{
internal static IServiceCollection AddSwaggerServices(this IServiceCollection services, IConfiguration configuration) internal static IServiceCollection AddSwaggerServices(this IServiceCollection services, IConfiguration configuration)
{ {
services.AddEndpointsApiExplorer(); services.AddEndpointsApiExplorer();
@ -55,4 +55,5 @@ public static class ServiceExtensions
return services; return services;
} }
}
} }

View file

@ -4,10 +4,13 @@
<TargetFramework>net7.0</TargetFramework> <TargetFramework>net7.0</TargetFramework>
<Product>Insight</Product> <Product>Insight</Product>
<AssemblyName>api</AssemblyName> <AssemblyName>api</AssemblyName>
<AssemblyVersion>2023.12.14.0</AssemblyVersion> <AssemblyVersion>2025.2.24.0</AssemblyVersion>
<FileVersion>2025.2.24.0</FileVersion>
<RootNamespace>Insight.Api</RootNamespace> <RootNamespace>Insight.Api</RootNamespace>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<SatelliteResourceLanguages>none</SatelliteResourceLanguages>
<InvariantGlobalization>true</InvariantGlobalization>
<UserSecretsId>4ae1d3bf-869e-4963-8a19-35634507d3b3</UserSecretsId> <UserSecretsId>4ae1d3bf-869e-4963-8a19-35634507d3b3</UserSecretsId>
<PublishAot>false</PublishAot> <PublishAot>false</PublishAot>
@ -30,10 +33,17 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="7.0.1" /> <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="7.0.1" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.13" /> <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.11" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageReference Include="Serilog.Extensions.Logging.File" Version="3.0.0" /> <PackageReference Include="Serilog.Extensions.Logging.File" Version="3.0.0" />
<!--Unix Serilog stuff--> <!--Unix Serilog stuff-->
<PackageReference Include="System.IO.FileSystem.Primitives" Version="4.3.0" />
<PackageReference Include="System.Text.Encoding.Extensions" Version="4.3.0" />
<PackageReference Include="System.Runtime.Handles" Version="4.3.0" />
<PackageReference Include="System.IO" Version="4.3.0" />
<PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" />
<PackageReference Include="System.Threading" Version="4.3.0" />
<PackageReference Include="System.Threading.Tasks" Version="4.3.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View file

@ -1,9 +1,9 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
namespace Insight.Api.Models; namespace Insight.Api.Models
public class RegistrationModel
{ {
public class RegistrationModel
{
public string? FirstName { get; set; } public string? FirstName { get; set; }
public string? LastName { get; set; } public string? LastName { get; set; }
@ -19,4 +19,5 @@ public class RegistrationModel
[DataType(DataType.Password)] [DataType(DataType.Password)]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string? ConfirmPassword { get; set; } public string? ConfirmPassword { get; set; }
}
} }

View file

@ -3,10 +3,10 @@ using Insight.Domain.Constants;
using Insight.Infrastructure; using Insight.Infrastructure;
using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.FileProviders;
namespace Insight.Api; namespace Insight.Api
internal class Program
{ {
public class Program
{
public static async Task Main(string[] args) public static async Task Main(string[] args)
{ {
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
@ -95,4 +95,5 @@ internal class Program
await app.RunAsync(); await app.RunAsync();
} }
}
} }

View file

@ -1,7 +1,7 @@
{ {
"AllowedHosts": "*", "AllowedHosts": "*",
"Urls": "http://127.0.0.1:5000", "Urls": "http://127.0.0.1:5000",
"database": "mongodb://db.insight.local:27017", "database": "mongodb://10.22.70.40:32768",
"jwt.key": "x5dcaE8fiBmHfgsNrwIEtSWzZkz6gpouzKOIgEiVjxJnW28V1aUnYXF19IcnF5x", "jwt.key": "x5dcaE8fiBmHfgsNrwIEtSWzZkz6gpouzKOIgEiVjxJnW28V1aUnYXF19IcnF5x",
"jwt.exp": 3600, "jwt.exp": 3600,
"jwt.audience": "http://127.0.0.1:5000", "jwt.audience": "http://127.0.0.1:5000",

View file

@ -1,12 +1,13 @@
using System.Net; using System.Net;
using System.Reflection; using System.Reflection;
namespace Insight.Domain.Constants; namespace Insight.Domain.Constants
public static class Configuration
{ {
public static class Configuration
{
public static string Hostname => Dns.GetHostEntry("localhost").HostName; public static string Hostname => Dns.GetHostEntry("localhost").HostName;
public static Version Version => Assembly.GetEntryAssembly()?.GetName().Version ?? throw new ArgumentNullException("Version"); public static Version Version => Assembly.GetEntryAssembly()?.GetName().Version ?? throw new ArgumentNullException("Version");
public static DirectoryInfo? AppDirectory => string.IsNullOrWhiteSpace(Environment.ProcessPath) ? null : new DirectoryInfo(Environment.ProcessPath).Parent; public static DirectoryInfo? AppDirectory => string.IsNullOrWhiteSpace(Environment.ProcessPath) ? null : new DirectoryInfo(Environment.ProcessPath).Parent;
public static string DefaultConfig => Path.Combine(AppDirectory?.FullName ?? string.Empty, "config.json"); public static string DefaultConfig => Path.Combine(AppDirectory?.FullName ?? string.Empty, "config.json");
}
} }

View file

@ -1,13 +0,0 @@
namespace Insight.Domain.Enums;
public enum CategoryEnum
{
Network = 1,
System = 2,
Application = 3,
Security = 4,
Monitoring = 5,
Task = 6,
Printer = 7,
RDP = 8
}

View file

@ -1,8 +0,0 @@
namespace Insight.Domain.Enums;
public enum DispatchEnum
{
Pending = 1,
Failure = 2,
Success = 3,
}

View file

@ -1,8 +0,0 @@
namespace Insight.Domain.Enums;
public enum RemoteControlMode
{
Unknown,
Unattended,
Attended
}

View file

@ -1,7 +0,0 @@
namespace Insight.Domain.Enums;
public enum SessionEndReasons
{
Logoff = 1,
SystemShutdown = 2
}

View file

@ -1,14 +0,0 @@
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
}

View file

@ -1,8 +0,0 @@
namespace Insight.Domain.Enums;
public enum StatusEnum
{
Information = 1,
Warning = 2,
Error = 3
}

View file

@ -6,14 +6,12 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<RootNamespace>Insight.Domain</RootNamespace> <RootNamespace>Insight.Domain</RootNamespace>
<Product>Insight</Product> <Product>Insight</Product>
<AssemblyVersion>2023.12.14.0</AssemblyVersion> <AssemblyVersion>2025.2.24.0</AssemblyVersion>
<FileVersion>2025.2.24.0</FileVersion>
<SatelliteResourceLanguages>none</SatelliteResourceLanguages>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<PackageReference Include="Vaitr.Bus" Version="2023.12.13" />
<PackageReference Include="Vaitr.Network" Version="2023.12.14" />
</ItemGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>none</DebugType> <DebugType>none</DebugType>
</PropertyGroup> </PropertyGroup>

View file

@ -1,8 +0,0 @@
using Insight.Domain.Network;
namespace Insight.Domain.Interfaces;
public partial interface IMessageHandler<TSender>
{
ValueTask HandleAsync<TMessage>(TSender sender, TMessage message, CancellationToken cancellationToken) where TMessage : IMessage;
}

View file

@ -1,148 +0,0 @@
using MessagePack;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.Serialization;
using System.Text.Json.Serialization;
namespace RemoteControl.Shared;
/// <summary>
/// Describes the success or failure of any kind of operation.
/// </summary>
[DataContract]
public class Result
{
/// <summary>
/// For serialization only.
/// </summary>
[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<T> Fail<T>(string reason)
{
return new Result<T>(reason);
}
public static Result<T> Fail<T>(Exception ex)
{
return new Result<T>(ex);
}
public static Result Ok()
{
return new Result(true);
}
public static Result<T> Ok<T>(T value)
{
return new Result<T>(value);
}
}
/// <summary>
/// Describes the success or failure of any kind of operation.
/// </summary>
[DataContract]
public class Result<T>
{
/// <summary>
/// Returns a successful result with the given value.
/// </summary>
/// <param name="value"></param>
public Result(T value)
{
IsSuccess = true;
Value = value;
}
/// <summary>
/// Returns an unsuccessful result with the given exception.
/// </summary>
/// <param name="exception"></param>
public Result(Exception exception)
{
IsSuccess = false;
Exception = exception;
Reason = exception.Message;
}
/// <summary>
/// Returns an unsuccessful result with the given reason.
/// </summary>
/// <param name="errorMessage"></param>
/// <exception cref="ArgumentException"></exception>
public Result(string reason)
{
IsSuccess = false;
Reason = reason;
}
/// <summary>
/// For serialization only.
/// </summary>
[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; }
}

View file

@ -1,36 +1,36 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Text.Json.Serialization; using System.Text.Json.Serialization;
namespace Insight.Domain.Models; namespace Insight.Domain.Models
public class TokenRequest
{ {
public class TokenRequest
{
[JsonPropertyName("username"), EmailAddress, Required] [JsonPropertyName("username"), EmailAddress, Required]
public string? Username { get; set; } public string Username { get; set; }
[JsonPropertyName("password"), DataType(DataType.Password), Required] [JsonPropertyName("password"), DataType(DataType.Password), Required]
public string? Password { get; set; } public string Password { get; set; }
[JsonPropertyName("code"), DataType(DataType.Text)] [JsonPropertyName("code"), DataType(DataType.Text)]
public string? Code { get; set; } public string? Code { get; set; }
} }
public class TokenResponse public class TokenResponse
{ {
[JsonPropertyName("access_token")] [JsonPropertyName("access_token")]
public string? AccessToken { get; set; } public string AccessToken { get; set; }
[JsonPropertyName("expires_in")] [JsonPropertyName("expires_in")]
public int ExpireInSeconds { get; set; } public int ExpireInSeconds { get; set; }
[JsonPropertyName("refresh_token")] [JsonPropertyName("refresh_token")]
public string? RefreshToken { get; set; } public string RefreshToken { get; set; }
} }
public class TokenRevokeRequest public class TokenRevokeRequest
{ {
[JsonPropertyName("token"), Required] [JsonPropertyName("token"), Required]
public string? Token { get; set; } public string Token { get; set; }
[JsonPropertyName("reason")] [JsonPropertyName("reason")]
public string? Reason { get; set; } public string? Reason { get; set; }
@ -40,15 +40,16 @@ public class TokenRevokeRequest
Token = token; Token = token;
Reason = reason; Reason = reason;
} }
} }
public class TokenRefreshRequest public class TokenRefreshRequest
{ {
[JsonPropertyName("token"), Required] [JsonPropertyName("token"), Required]
public string? Token { get; set; } public string Token { get; set; }
public TokenRefreshRequest(string token) public TokenRefreshRequest(string token)
{ {
Token = token; Token = token;
} }
}
} }

View file

@ -1,7 +1,8 @@
namespace Insight.Domain.Models; namespace Insight.Domain.Models
public class UpdateResponse
{ {
public class UpdateResponse
{
public Version? Version { get; set; } public Version? Version { get; set; }
public Uri? Uri { get; set; } public Uri? Uri { get; set; }
}
} }

View file

@ -1,32 +0,0 @@
using MemoryPack;
using System.Runtime.InteropServices;
namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Application : IMessage
{
[MemoryPackOrder(0)]
public string? Name { get; set; }
[MemoryPackOrder(1)]
public string? Publisher { get; set; }
[MemoryPackOrder(2)]
public string? Version { get; set; }
[MemoryPackOrder(3)]
public string? Location { get; set; }
[MemoryPackOrder(4)]
public string? Source { get; set; }
[MemoryPackOrder(5)]
public string? Uninstall { get; set; }
[MemoryPackOrder(6)]
public DateTime? InstallDate { get; set; }
[MemoryPackOrder(7)]
public Architecture? Architecture { get; set; }
}

View file

@ -1,29 +0,0 @@
using MemoryPack;
namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class AuthenticationRequest : IMessage { }
[MemoryPackable]
public partial class AuthenticationResponse : IMessage
{
[MemoryPackOrder(0)]
public PlatformType? Platform { get; set; }
[MemoryPackOrder(1)]
public Guid Serial { get; set; }
[MemoryPackOrder(2)]
public Version? Version { get; set; }
[MemoryPackOrder(3)]
public string? Hostname { get; set; }
public enum PlatformType
{
Unknown = 0,
Windows = 1,
Unix = 2
}
}

View file

@ -1,6 +0,0 @@
using MemoryPack;
namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class InventoryRequest : IMessage { }

View file

@ -1,95 +0,0 @@
using MemoryPack;
namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Drive : IMessage
{
[MemoryPackOrder(0)]
public uint? Index { get; set; }
[MemoryPackOrder(1)]
public string? Id { get; set; }
[MemoryPackOrder(2)]
public string? Name { get; set; }
[MemoryPackOrder(3)]
public string? Manufacturer { get; set; }
[MemoryPackOrder(4)]
public string? SerialNumber { get; set; }
[MemoryPackOrder(5)]
public ulong? Size { get; set; }
[MemoryPackOrder(6)]
public string? Status { get; set; }
[MemoryPackOrder(7)]
public string? InterfaceType { get; set; }
[MemoryPackOrder(8)]
public string? FirmwareRevision { get; set; }
[MemoryPackOrder(9)]
public string? PNPDeviceID { get; set; }
[MemoryPackOrder(10)]
public List<Volume>? Volumes { get; set; }
}
[MemoryPackable]
public partial class Volume : IMessage
{
[MemoryPackOrder(0)]
public uint? Index { get; set; }
[MemoryPackOrder(1)]
public string? Id { get; set; }
[MemoryPackOrder(2)]
public string? Name { get; set; }
[MemoryPackOrder(3)]
public string? SerialNumber { get; set; }
[MemoryPackOrder(4)]
public ulong? Size { get; set; }
[MemoryPackOrder(5)]
public ulong? FreeSpace { get; set; }
[MemoryPackOrder(6)]
public string? Type { get; set; }
[MemoryPackOrder(7)]
public string? FileSystem { get; set; }
[MemoryPackOrder(8)]
public bool? Compressed { get; set; }
[MemoryPackOrder(9)]
public bool? Bootable { get; set; }
[MemoryPackOrder(10)]
public bool? PrimaryPartition { get; set; }
[MemoryPackOrder(11)]
public bool? BootPartition { get; set; }
[MemoryPackOrder(12)]
public ulong? BlockSize { get; set; }
[MemoryPackOrder(13)]
public ulong? NumberOfBlocks { get; set; }
[MemoryPackOrder(14)]
public ulong? StartingOffset { get; set; }
[MemoryPackOrder(15)]
public DriveType? DriveType { get; set; }
[MemoryPackOrder(16)]
public string? ProviderName { get; set; }
}

View file

@ -1,37 +0,0 @@
using MemoryPack;
namespace Insight.Domain.Network.Agent.Messages;
[MemoryPackable]
public partial class Event : IMessage
{
[MemoryPackOrder(0)]
public DateTime? Timestamp { get; set; }
[MemoryPackOrder(1)]
public StatusType? Status { get; set; }
[MemoryPackOrder(2)]
public string? Source { get; set; }
[MemoryPackOrder(3)]
public string? Category { get; set; }
[MemoryPackOrder(4)]
public int? EventId { get; set; }
[MemoryPackOrder(5)]
public string? Task { get; set; }
[MemoryPackOrder(6)]
public string? Message { get; set; }
public enum StatusType
{
Unknown = 0,
Information = 1,
Warning = 2,
Error = 3,
Critical = 4
}
}

Some files were not shown because too many files have changed in this diff Show more