in Cli/AttackSurfaceAnalyzerClient.cs [354:442]
private static ASA_ERROR RunConfigCommand(ConfigCommandOptions opts)
{
if (opts.ResetDatabase)
{
var filename = opts.DatabaseFilename;
DatabaseManager.Destroy(opts.DatabaseFilename);
Log.Information(Strings.Get("DeletedDatabaseAt"), filename);
}
else
{
SetupDatabase(opts);
if (DatabaseManager is null)
{
Log.Error("Err_DatabaseManagerNull", "RunConfigCommand");
return ASA_ERROR.DATABASE_NULL;
}
if (opts.ListRuns)
{
if (DatabaseManager.FirstRun)
{
Log.Warning(Strings.Get("FirstRunListRunsError"), opts.DatabaseFilename);
}
else
{
Log.Information(Strings.Get("DumpingDataFromDatabase"), opts.DatabaseFilename);
List<string> CollectRuns = DatabaseManager.GetRuns(RUN_TYPE.COLLECT);
if (CollectRuns.Count > 0)
{
Log.Information(Strings.Get("Begin"), Strings.Get("EnumeratingCollectRunIds"));
foreach (string runId in CollectRuns)
{
var run = DatabaseManager.GetRun(runId);
if (run is AsaRun)
{
Log.Information("RunId:{2} Timestamp:{0} AsaVersion:{1} ",
run.Timestamp,
run.Version,
run.RunId);
var resultTypesAndCounts = DatabaseManager.GetResultTypesAndCounts(run.RunId);
foreach (var kvPair in resultTypesAndCounts)
{
Log.Information("{0} : {1}", kvPair.Key, kvPair.Value);
}
}
}
}
else
{
Log.Information(Strings.Get("NoCollectRuns"));
}
List<string> MonitorRuns = DatabaseManager.GetRuns(RUN_TYPE.MONITOR);
if (MonitorRuns.Count > 0)
{
Log.Information(Strings.Get("Begin"), Strings.Get("EnumeratingMonitorRunIds"));
foreach (string monitorRun in MonitorRuns)
{
var run = DatabaseManager.GetRun(monitorRun);
if (run != null)
{
string output = $"{run.RunId} {run.Timestamp} {run.Version} {run.Type}";
Log.Information(output);
Log.Information(string.Join(',', run.ResultTypes.Where(x => run.ResultTypes.Contains(x))));
}
}
}
else
{
Log.Information(Strings.Get("NoMonitorRuns"));
}
}
}
if (opts.DeleteRunId != null)
{
DatabaseManager.DeleteRun(opts.DeleteRunId);
}
if (opts.TrimToLatest)
{
DatabaseManager.TrimToLatest();
}
}
return ASA_ERROR.NONE;
}