mirror of
https://github.com/speed47/spectre-meltdown-checker.git
synced 2026-04-09 10:13:18 +02:00
feat: rework the --batch json output entirely
This commit is contained in:
35
src/main.sh
35
src/main.sh
@@ -1,6 +1,12 @@
|
||||
# vim: set ts=4 sw=4 sts=4 et:
|
||||
|
||||
check_kernel_info
|
||||
|
||||
# Build JSON meta and system sections early (after kernel info is resolved)
|
||||
if [ "$opt_batch" = 1 ] && [ "$opt_batch_format" = "json" ]; then
|
||||
_build_json_meta
|
||||
fi
|
||||
|
||||
pr_info
|
||||
|
||||
if [ "$opt_no_hw" = 0 ] && [ -z "$opt_arch_prefix" ]; then
|
||||
@@ -10,6 +16,15 @@ if [ "$opt_no_hw" = 0 ] && [ -z "$opt_arch_prefix" ]; then
|
||||
pr_info
|
||||
fi
|
||||
|
||||
# Build JSON system/cpu/microcode sections (after check_cpu has populated cap_* vars and VMM detection)
|
||||
if [ "$opt_batch" = 1 ] && [ "$opt_batch_format" = "json" ]; then
|
||||
_build_json_system
|
||||
if [ "$opt_no_hw" = 0 ] && [ -z "$opt_arch_prefix" ]; then
|
||||
_build_json_cpu
|
||||
_build_json_cpu_microcode
|
||||
fi
|
||||
fi
|
||||
|
||||
# now run the checks the user asked for
|
||||
for cve in $g_supported_cve_list; do
|
||||
if [ "$opt_cve_all" = 1 ] || echo "$opt_cve_list" | grep -qw "$cve"; then
|
||||
@@ -80,10 +95,28 @@ if [ "$opt_batch" = 1 ] && [ "$opt_batch_format" = "short" ]; then
|
||||
_pr_echo 0 "${g_short_output% }"
|
||||
fi
|
||||
|
||||
if [ "$opt_batch" = 1 ] && [ "$opt_batch_format" = "json" ]; then
|
||||
if [ "$opt_batch" = 1 ] && [ "$opt_batch_format" = "json-terse" ]; then
|
||||
_pr_echo 0 "${g_json_output%?}]"
|
||||
fi
|
||||
|
||||
if [ "$opt_batch" = 1 ] && [ "$opt_batch_format" = "json" ]; then
|
||||
# Assemble the comprehensive JSON output from pre-built sections
|
||||
# Inject mocked flag into meta (g_mocked can be set at any point during the run)
|
||||
g_json_meta="${g_json_meta%\}},\"mocked\":$(_json_bool "${g_mocked:-0}")}"
|
||||
_json_final='{'
|
||||
_json_final="${_json_final}\"meta\":${g_json_meta:-null}"
|
||||
_json_final="${_json_final},\"system\":${g_json_system:-null}"
|
||||
_json_final="${_json_final},\"cpu\":${g_json_cpu:-null}"
|
||||
_json_final="${_json_final},\"cpu_microcode\":${g_json_cpu_microcode:-null}"
|
||||
if [ -n "${g_json_vulns:-}" ]; then
|
||||
_json_final="${_json_final},\"vulnerabilities\":[${g_json_vulns%,}]"
|
||||
else
|
||||
_json_final="${_json_final},\"vulnerabilities\":[]"
|
||||
fi
|
||||
_json_final="${_json_final}}"
|
||||
_pr_echo 0 "$_json_final"
|
||||
fi
|
||||
|
||||
if [ "$opt_batch" = 1 ] && [ "$opt_batch_format" = "prometheus" ]; then
|
||||
echo "# TYPE specex_vuln_status untyped"
|
||||
echo "# HELP specex_vuln_status Exposure of system to speculative execution vulnerabilities"
|
||||
|
||||
Reference in New Issue
Block a user