diff --git a/src/OCSentinelCli/AttackScanner.cs b/src/OCSentinelCli/AttackScanner.cs index 89ad08c..5613c87 100644 --- a/src/OCSentinelCli/AttackScanner.cs +++ b/src/OCSentinelCli/AttackScanner.cs @@ -66,6 +66,7 @@ internal sealed class AttackScanner { SchemaVersion = "2.0", MachineName = Environment.MachineName, + NinjaOne = GetNinjaOneContext(), GeneratedAtLocal = generatedAtLocal, GeneratedAtUtc = generatedAtUtc, ClientVersion = BuildMetadata.Version, @@ -89,6 +90,24 @@ internal sealed class AttackScanner }; } + private static NinjaOneContext GetNinjaOneContext() + { + return new NinjaOneContext + { + OrganizationId = ReadEnvironmentVariable("NINJA_ORGANIZATION_ID"), + OrganizationName = ReadEnvironmentVariable("NINJA_ORGANIZATION_NAME"), + MachineId = ReadEnvironmentVariable("NINJA_AGENT_MACHINE_ID"), + NodeId = ReadEnvironmentVariable("NINJA_AGENT_NODE_ID"), + LocationId = ReadEnvironmentVariable("NINJA_LOCATION_ID"), + LocationName = ReadEnvironmentVariable("NINJA_LOCATION_NAME") + }; + } + + private static string ReadEnvironmentVariable(string name) + { + return Environment.GetEnvironmentVariable(name)?.Trim() ?? string.Empty; + } + private static ScannerConfiguration LoadConfiguration(ScanOptions options) { if (string.IsNullOrWhiteSpace(options.ConfigPath)) diff --git a/src/OCSentinelCli/Models.cs b/src/OCSentinelCli/Models.cs index 2195ff0..9521d99 100644 --- a/src/OCSentinelCli/Models.cs +++ b/src/OCSentinelCli/Models.cs @@ -80,6 +80,9 @@ internal sealed record ScanResult public string MachineName { get; init; } = string.Empty; + // Populated only for runs launched by NinjaOne automation. + public NinjaOneContext NinjaOne { get; init; } = new(); + public DateTimeOffset GeneratedAtLocal { get; init; } public DateTimeOffset GeneratedAtUtc { get; init; } @@ -111,6 +114,21 @@ internal sealed record ScanResult public List Errors { get; init; } = []; } +internal sealed record NinjaOneContext +{ + public string OrganizationId { get; init; } = string.Empty; + + public string OrganizationName { get; init; } = string.Empty; + + public string MachineId { get; init; } = string.Empty; + + public string NodeId { get; init; } = string.Empty; + + public string LocationId { get; init; } = string.Empty; + + public string LocationName { get; init; } = string.Empty; +} + internal sealed record ScanRuntimeMetadata { public DateTimeOffset StartedAtUtc { get; init; } diff --git a/src/OCSentinelCli/OCSentinelCli.csproj b/src/OCSentinelCli/OCSentinelCli.csproj index 177f88f..3464c58 100644 --- a/src/OCSentinelCli/OCSentinelCli.csproj +++ b/src/OCSentinelCli/OCSentinelCli.csproj @@ -9,7 +9,7 @@ OCSentinelCli OfficeCom Sentinel OfficeCom - 1.2.4 + 1.2.5 1.2.3.0 1.2.3.0 1.2.3