save audit remarks applications progress
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Text.RegularExpressions;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using StellaOps.AirGap.Importer.Telemetry;
|
||||
using StellaOps.Determinism;
|
||||
|
||||
namespace StellaOps.AirGap.Importer.Quarantine;
|
||||
|
||||
@@ -17,15 +18,18 @@ public sealed class FileSystemQuarantineService : IQuarantineService
|
||||
private readonly QuarantineOptions _options;
|
||||
private readonly ILogger<FileSystemQuarantineService> _logger;
|
||||
private readonly TimeProvider _timeProvider;
|
||||
private readonly IGuidProvider _guidProvider;
|
||||
|
||||
public FileSystemQuarantineService(
|
||||
IOptions<QuarantineOptions> options,
|
||||
ILogger<FileSystemQuarantineService> logger,
|
||||
TimeProvider timeProvider)
|
||||
TimeProvider timeProvider,
|
||||
IGuidProvider? guidProvider = null)
|
||||
{
|
||||
_options = options?.Value ?? throw new ArgumentNullException(nameof(options));
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
_timeProvider = timeProvider ?? throw new ArgumentNullException(nameof(timeProvider));
|
||||
_guidProvider = guidProvider ?? SystemGuidProvider.Instance;
|
||||
}
|
||||
|
||||
public async Task<QuarantineResult> QuarantineAsync(
|
||||
@@ -74,7 +78,7 @@ public sealed class FileSystemQuarantineService : IQuarantineService
|
||||
var now = _timeProvider.GetUtcNow();
|
||||
var timestamp = now.ToString("yyyyMMdd-HHmmss", CultureInfo.InvariantCulture);
|
||||
var sanitizedReason = SanitizeForPathSegment(request.ReasonCode);
|
||||
var quarantineId = $"{timestamp}-{sanitizedReason}-{Guid.NewGuid():N}";
|
||||
var quarantineId = $"{timestamp}-{sanitizedReason}-{_guidProvider.NewGuid():N}";
|
||||
|
||||
var quarantinePath = Path.Combine(tenantRoot, quarantineId);
|
||||
|
||||
@@ -250,7 +254,7 @@ public sealed class FileSystemQuarantineService : IQuarantineService
|
||||
var removedPath = Path.Combine(removedRoot, quarantineId);
|
||||
if (Directory.Exists(removedPath))
|
||||
{
|
||||
removedPath = Path.Combine(removedRoot, $"{quarantineId}-{Guid.NewGuid():N}");
|
||||
removedPath = Path.Combine(removedRoot, $"{quarantineId}-{_guidProvider.NewGuid():N}");
|
||||
}
|
||||
|
||||
Directory.Move(entryPath, removedPath);
|
||||
|
||||
@@ -18,5 +18,6 @@
|
||||
<ProjectReference Include="..\\..\\Attestor\\StellaOps.Attestor.Envelope\\StellaOps.Attestor.Envelope.csproj" />
|
||||
<ProjectReference Include="..\\..\\__Libraries\\StellaOps.Cryptography\\StellaOps.Cryptography.csproj" />
|
||||
<ProjectReference Include="..\\..\\__Libraries\\StellaOps.Cryptography.Plugin.OfflineVerification\\StellaOps.Cryptography.Plugin.OfflineVerification.csproj" />
|
||||
<ProjectReference Include="..\\..\\__Libraries\\StellaOps.Determinism.Abstractions\\StellaOps.Determinism.Abstractions.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -23,15 +23,18 @@ public sealed class RuleBundleValidator
|
||||
private readonly DsseVerifier _dsseVerifier;
|
||||
private readonly IVersionMonotonicityChecker _monotonicityChecker;
|
||||
private readonly ILogger<RuleBundleValidator> _logger;
|
||||
private readonly TimeProvider _timeProvider;
|
||||
|
||||
public RuleBundleValidator(
|
||||
DsseVerifier dsseVerifier,
|
||||
IVersionMonotonicityChecker monotonicityChecker,
|
||||
ILogger<RuleBundleValidator> logger)
|
||||
ILogger<RuleBundleValidator> logger,
|
||||
TimeProvider? timeProvider = null)
|
||||
{
|
||||
_dsseVerifier = dsseVerifier ?? throw new ArgumentNullException(nameof(dsseVerifier));
|
||||
_monotonicityChecker = monotonicityChecker ?? throw new ArgumentNullException(nameof(monotonicityChecker));
|
||||
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
|
||||
_timeProvider = timeProvider ?? TimeProvider.System;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -157,7 +160,7 @@ public sealed class RuleBundleValidator
|
||||
BundleVersion incomingVersion;
|
||||
try
|
||||
{
|
||||
incomingVersion = BundleVersion.Parse(request.Version, request.CreatedAt ?? DateTimeOffset.UtcNow);
|
||||
incomingVersion = BundleVersion.Parse(request.Version, request.CreatedAt ?? _timeProvider.GetUtcNow());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user