eve/alert: enrich decoder event

Default decoder event alert was very sparse, not even logging packet
type and pcap_cnt. Expand support for this record type. It will be more
useful with the ethernet headers and packet field, but these are still
disabled by default.

Ticket: #7433.
pull/12235/head
Victor Julien 8 months ago committed by Victor Julien
parent b23fa51e33
commit 2fe2cf8553

@ -778,28 +778,40 @@ static int AlertJson(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p)
static int AlertJsonDecoderEvent(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p) static int AlertJsonDecoderEvent(ThreadVars *tv, JsonAlertLogThread *aft, const Packet *p)
{ {
AlertJsonOutputCtx *json_output_ctx = aft->json_output_ctx; AlertJsonOutputCtx *json_output_ctx = aft->json_output_ctx;
char timebuf[64];
if (p->alerts.cnt == 0) if (p->alerts.cnt == 0)
return TM_ECODE_OK; return TM_ECODE_OK;
CreateIsoTimeString(p->ts, timebuf, sizeof(timebuf));
for (int i = 0; i < p->alerts.cnt; i++) { for (int i = 0; i < p->alerts.cnt; i++) {
const PacketAlert *pa = &p->alerts.alerts[i]; const PacketAlert *pa = &p->alerts.alerts[i];
if (unlikely(pa->s == NULL)) { if (unlikely(pa->s == NULL)) {
continue; continue;
} }
JsonBuilder *jb = jb_new_object(); JsonBuilder *jb =
if (unlikely(jb == NULL)) { CreateEveHeader(p, LOG_DIR_PACKET, "alert", NULL, json_output_ctx->eve_ctx);
if (unlikely(jb == NULL))
return TM_ECODE_OK; return TM_ECODE_OK;
AlertJsonHeader(p, pa, jb, json_output_ctx->flags, NULL, NULL);
if (PacketIsTunnel(p)) {
AlertJsonTunnel(p, jb);
} }
/* just the timestamp, no tuple */ /* base64-encoded full packet */
jb_set_string(jb, "timestamp", timebuf); if (json_output_ctx->flags & LOG_JSON_PACKET) {
EvePacket(p, jb, 0);
}
AlertJsonHeader(p, pa, jb, json_output_ctx->flags, NULL, NULL); char *pcap_filename = PcapLogGetFilename();
if (pcap_filename != NULL) {
jb_set_string(jb, "capture_file", pcap_filename);
}
if (json_output_ctx->flags & LOG_JSON_VERDICT) {
EveAddVerdict(jb, p);
}
OutputJsonBuilderBuffer(tv, p, p->flow, jb, aft->ctx); OutputJsonBuilderBuffer(tv, p, p->flow, jb, aft->ctx);
jb_free(jb); jb_free(jb);

Loading…
Cancel
Save