70 lines
1.9 KiB
C#
70 lines
1.9 KiB
C#
namespace OCSentinelCli.Commands;
|
|
|
|
internal static class ScanAndUploadCommand
|
|
{
|
|
public static int Execute(string[] args)
|
|
{
|
|
string outputPath = @"C:\ProgramData\OCSentinel\reports\latest.json";
|
|
string? clientConfigPath = null;
|
|
string? secretPath = null;
|
|
bool hasOutput = false;
|
|
var scanArgs = new List<string>();
|
|
|
|
for (int i = 0; i < args.Length; i++)
|
|
{
|
|
if (string.Equals(args[i], "--output", StringComparison.OrdinalIgnoreCase) && i + 1 < args.Length)
|
|
{
|
|
outputPath = args[i + 1];
|
|
hasOutput = true;
|
|
scanArgs.Add(args[i]);
|
|
scanArgs.Add(args[++i]);
|
|
continue;
|
|
}
|
|
|
|
if (string.Equals(args[i], "--client-config", StringComparison.OrdinalIgnoreCase) && i + 1 < args.Length)
|
|
{
|
|
clientConfigPath = args[++i];
|
|
continue;
|
|
}
|
|
|
|
if (string.Equals(args[i], "--secret-path", StringComparison.OrdinalIgnoreCase) && i + 1 < args.Length)
|
|
{
|
|
secretPath = args[++i];
|
|
continue;
|
|
}
|
|
|
|
scanArgs.Add(args[i]);
|
|
}
|
|
|
|
if (!hasOutput)
|
|
{
|
|
scanArgs.Add("--output");
|
|
scanArgs.Add(outputPath);
|
|
}
|
|
|
|
int scanExitCode = ScanCommand.Execute([.. scanArgs]);
|
|
if (scanExitCode != 0)
|
|
{
|
|
return scanExitCode;
|
|
}
|
|
|
|
var uploadArgs = new List<string>
|
|
{
|
|
"--report",
|
|
outputPath
|
|
};
|
|
|
|
if (!string.IsNullOrWhiteSpace(clientConfigPath))
|
|
{
|
|
uploadArgs.AddRange(["--client-config", clientConfigPath]);
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(secretPath))
|
|
{
|
|
uploadArgs.AddRange(["--secret-path", secretPath]);
|
|
}
|
|
|
|
return UploadCommand.Execute([.. uploadArgs]);
|
|
}
|
|
}
|