Implemented the next multi-source detection layer in this repository.
This commit is contained in:
@@ -58,7 +58,14 @@ def build_status(
|
||||
events = []
|
||||
for stream_config in stream_configs:
|
||||
stream_id = str(stream_config["id"])
|
||||
stream_events, stream_status = GraylogStreamSource(GraylogMcpClient(url, token), stream_id, str(runtime_values.get("graylog_query", "*")), str(runtime_values.get("graylog_field_mapping", "")), str(stream_config.get("title", stream_id))).fetch()
|
||||
profile = stream_profiles.get(stream_id)
|
||||
profile_fields = (
|
||||
str(getattr(profile, "entity_field", "")),
|
||||
str(getattr(profile, "timestamp_field", "")),
|
||||
*tuple(str(field) for field in getattr(profile, "categorical_fields", ())),
|
||||
*tuple(str(field) for field in getattr(profile, "numeric_fields", ())),
|
||||
) if profile else ()
|
||||
stream_events, stream_status = GraylogStreamSource(GraylogMcpClient(url, token), stream_id, str(runtime_values.get("graylog_query", "*")), str(runtime_values.get("graylog_field_mapping", "")), str(stream_config.get("title", stream_id)), profile_fields).fetch()
|
||||
events.extend(stream_events)
|
||||
stream_statuses.append({"stream_id": stream_id, **stream_status})
|
||||
mcp_status = {"status": "connected", "streams": stream_statuses, "events_fetched": len(events)}
|
||||
@@ -71,7 +78,13 @@ def build_status(
|
||||
feedback = FeedbackStore().entries()
|
||||
for entity, deviations in field_deviations.items():
|
||||
for deviation in deviations:
|
||||
match = next((item for item in feedback if item.get("entity") == entity and item.get("stream_id") == deviation.get("stream_id") and item.get("field") == deviation.get("field")), None)
|
||||
match = next((
|
||||
item for item in feedback
|
||||
if item.get("entity") == entity
|
||||
and item.get("stream_id") == deviation.get("stream_id")
|
||||
and item.get("field") == deviation.get("field")
|
||||
and (not item.get("value") or item.get("value") == deviation.get("value", ""))
|
||||
), None)
|
||||
if match:
|
||||
deviation["feedback"] = match["status"]
|
||||
if match["status"] in {"false_positive", "expected"}:
|
||||
|
||||
Reference in New Issue
Block a user