diff --git a/src/fgai/config.py b/src/fgai/config.py index 2f61e9d..9bc97fc 100644 --- a/src/fgai/config.py +++ b/src/fgai/config.py @@ -9,6 +9,7 @@ DEFAULT_CONFIG: dict[str, object] = { "log_source": "local_syslog", "graylog_mcp_url": "", "graylog_stream": "", + "graylog_streams": [], "graylog_query": "*", "graylog_field_mapping": "", "llm_enabled": False, @@ -46,6 +47,11 @@ class ConfigStore: current[key] = bool(value) elif key == "log_source" and value in {"local_syslog", "graylog_mcp"}: current[key] = value + elif key == "graylog_streams" and isinstance(value, list): + current[key] = [ + {"id": str(item.get("id", "")), "title": str(item.get("title", "")), "enabled": bool(item.get("enabled"))} + for item in value if isinstance(item, dict) and item.get("id") + ] elif isinstance(value, str): current[key] = value.strip() self.path.parent.mkdir(parents=True, exist_ok=True) diff --git a/src/fgai/dashboard.py b/src/fgai/dashboard.py index 2670945..0614ffb 100644 --- a/src/fgai/dashboard.py +++ b/src/fgai/dashboard.py @@ -5,6 +5,7 @@ from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from pathlib import Path from .config import ConfigStore +from .graylog_mcp import GraylogMcpClient HTML = """ @@ -62,7 +63,7 @@ HTML = """

AI Assessment

LLM assessment disabled.

Anomalies

Recommendations

Block Candidates

Threat Intelligence

Policy Findings

Diagnostics

-

Runtime Configuration

+

Runtime Configuration