mirror of
https://github.com/aljazceru/Auditor.git
synced 2025-12-17 03:24:18 +01:00
43 lines
1.8 KiB
Python
43 lines
1.8 KiB
Python
"""Run Factual Correlation Engine to aggregate and correlate findings."""
|
|
|
|
import click
|
|
from theauditor.utils.error_handler import handle_exceptions
|
|
|
|
|
|
@click.command(name="fce")
|
|
@handle_exceptions
|
|
@click.option("--root", default=".", help="Root directory")
|
|
@click.option("--capsules", default="./.pf/capsules", help="Capsules directory")
|
|
@click.option("--manifest", default="manifest.json", help="Manifest file path")
|
|
@click.option("--workset", default="./.pf/workset.json", help="Workset file path")
|
|
@click.option("--timeout", default=600, type=int, help="Timeout in seconds")
|
|
@click.option("--print-plan", is_flag=True, help="Print detected tools without running")
|
|
def fce(root, capsules, manifest, workset, timeout, print_plan):
|
|
"""Run Factual Correlation Engine to aggregate and correlate findings."""
|
|
from theauditor.fce import run_fce
|
|
|
|
result = run_fce(
|
|
root_path=root,
|
|
capsules_dir=capsules,
|
|
manifest_path=manifest,
|
|
workset_path=workset,
|
|
timeout=timeout,
|
|
print_plan=print_plan,
|
|
)
|
|
|
|
if result.get("printed_plan"):
|
|
return
|
|
|
|
if result["success"]:
|
|
if result["failures_found"] == 0:
|
|
click.echo("[OK] All tools passed - no failures detected")
|
|
else:
|
|
click.echo(f"Found {result['failures_found']} failures")
|
|
# Check if output_files exists and has at least 2 elements
|
|
if result.get('output_files') and len(result.get('output_files', [])) > 1:
|
|
click.echo(f"FCE report written to: {result['output_files'][1]}")
|
|
elif result.get('output_files') and len(result.get('output_files', [])) > 0:
|
|
click.echo(f"FCE report written to: {result['output_files'][0]}")
|
|
else:
|
|
click.echo(f"Error: {result.get('error', 'Unknown error')}", err=True)
|
|
raise click.ClickException(result.get("error", "FCE failed")) |