update isolate integrity

This commit is contained in:
prixod
2025-11-04 23:16:13 +04:00
parent b61eac05a2
commit 44cb179cf5
9 changed files with 1446 additions and 14 deletions

View File

@@ -4,11 +4,24 @@ public class OutputCheckerService : IOutputCheckerService
{
private readonly ILogger<OutputCheckerService> _logger;
private readonly CheckerService _checkerService;
private readonly CheckerServiceIsolate _checkerServiceIsolate;
private readonly bool _useIsolate;
public OutputCheckerService(ILogger<OutputCheckerService> logger, CheckerService checkerService)
public OutputCheckerService(
ILogger<OutputCheckerService> logger,
CheckerService checkerService,
CheckerServiceIsolate checkerServiceIsolate,
IConfiguration configuration)
{
_logger = logger;
_checkerService = checkerService;
_checkerServiceIsolate = checkerServiceIsolate;
_useIsolate = configuration.GetValue<bool>("Isolate:Enabled", false);
if (_useIsolate)
{
_logger.LogInformation("Using Isolate sandbox for checker execution");
}
}
public async Task<bool> CheckOutputAsync(string actualOutput, string expectedOutputPath)
@@ -69,13 +82,12 @@ public class OutputCheckerService : IOutputCheckerService
// If custom checker is available, use it
if (!string.IsNullOrEmpty(checkerPath) && File.Exists(checkerPath))
{
_logger.LogDebug("Using custom checker: {CheckerPath}", checkerPath);
_logger.LogDebug("Using custom checker: {CheckerPath} (Isolate: {UseIsolate})",
checkerPath, _useIsolate);
var checkerResult = await _checkerService.CheckAsync(
checkerPath,
inputFilePath,
actualOutput,
expectedOutputPath);
var checkerResult = _useIsolate
? await _checkerServiceIsolate.CheckAsync(checkerPath, inputFilePath, actualOutput, expectedOutputPath)
: await _checkerService.CheckAsync(checkerPath, inputFilePath, actualOutput, expectedOutputPath);
if (!checkerResult.Accepted)
{