]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
eve: add common options to loggers missing it
authorPhilippe Antoine <contact@catenacyber.fr>
Fri, 4 Nov 2022 08:52:07 +0000 (09:52 +0100)
committerVictor Julien <vjulien@oisf.net>
Sat, 3 Dec 2022 07:56:20 +0000 (08:56 +0100)
So that we get community id for RFB for instance

Ticket: #5723

src/output-filestore.c
src/output-json-dcerpc.c
src/output-json-file.c
src/output-json-file.h
src/output-json-mqtt.c
src/output-json-rfb.c

index 3d1720283f4d6692f7de81a6b2dbc5907d11e8d4..0a7547c87cdb95b0ef59474f3dca3606fbcc6406 100644 (file)
@@ -170,8 +170,8 @@ static void OutputFilestoreFinalizeFiles(ThreadVars *tv,
             WARN_ONCE(SC_ERR_SPRINTF,
                 "Failed to write file info record. Output filename truncated.");
         } else {
-            JsonBuilder *js_fileinfo = JsonBuildFileInfoRecord(p, ff, true, dir,
-                    ctx->xff_cfg);
+            JsonBuilder *js_fileinfo =
+                    JsonBuildFileInfoRecord(p, ff, true, dir, ctx->xff_cfg, NULL);
             if (likely(js_fileinfo != NULL)) {
                 jb_close(js_fileinfo);
                 FILE *out = fopen(js_metadata_filename, "w");
index 0bd56a548f014bcf06872f60ba874c9f8a6c80ca..c8905599df2c1615e5b6139e788a414d775592ab 100644 (file)
@@ -50,6 +50,7 @@ static int JsonDCERPCLogger(ThreadVars *tv, void *thread_data,
     if (unlikely(jb == NULL)) {
         return TM_ECODE_FAILED;
     }
+    EveAddCommonOptions(&thread->ctx->cfg, p, f, jb);
 
     jb_open_object(jb, "dcerpc");
     if (p->proto == IPPROTO_TCP) {
index 5771b1bb6928a07e90b598b34507850d7fb2ed17..b86f1ba1181328d7cdcbfeaf26be21d1dd71b9c5 100644 (file)
@@ -74,6 +74,7 @@ typedef struct OutputFileCtx_ {
     uint32_t file_cnt;
     HttpXFFCfg *xff_cfg;
     HttpXFFCfg *parent_xff_cfg;
+    OutputJsonCommonSettings cfg;
 } OutputFileCtx;
 
 typedef struct JsonFileLogThread_ {
@@ -82,8 +83,8 @@ typedef struct JsonFileLogThread_ {
     MemBuffer *buffer;
 } JsonFileLogThread;
 
-JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff,
-        const bool stored, uint8_t dir, HttpXFFCfg *xff_cfg)
+JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, const bool stored,
+        uint8_t dir, HttpXFFCfg *xff_cfg, OutputJsonCommonSettings *cfg)
 {
     enum OutputJsonLogDirection fdir = LOG_DIR_FLOW;
 
@@ -122,6 +123,9 @@ JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff,
     JsonBuilder *js = CreateEveHeader(p, fdir, "fileinfo", &addr);
     if (unlikely(js == NULL))
         return NULL;
+    if (cfg != NULL) {
+        EveAddCommonOptions(cfg, p, p->flow, js);
+    }
 
     JsonBuilderMark mark = { 0, 0, 0 };
     switch (p->flow->alproto) {
@@ -207,8 +211,8 @@ static void FileWriteJsonRecord(JsonFileLogThread *aft, const Packet *p,
 {
     HttpXFFCfg *xff_cfg = aft->filelog_ctx->xff_cfg != NULL ?
         aft->filelog_ctx->xff_cfg : aft->filelog_ctx->parent_xff_cfg;;
-    JsonBuilder *js = JsonBuildFileInfoRecord(p, ff,
-            ff->flags & FILE_STORED ? true : false, dir, xff_cfg);
+    JsonBuilder *js = JsonBuildFileInfoRecord(
+            p, ff, ff->flags & FILE_STORED ? true : false, dir, xff_cfg, &aft->filelog_ctx->cfg);
     if (unlikely(js == NULL)) {
         return;
     }
@@ -313,6 +317,7 @@ static OutputInitResult OutputFileLogInitSub(ConfNode *conf, OutputCtx *parent_c
     }
 
     output_file_ctx->file_ctx = ojc->file_ctx;
+    output_file_ctx->cfg = ojc->cfg;
 
     if (conf) {
         const char *force_filestore = ConfNodeLookupChildValue(conf, "force-filestore");
index 0d10aaea40feedfc9a4097077d3cd56184551e65..0abfbd56dbc23e9ba3eefbcf67e3c5d235e1ec4d 100644 (file)
 #define __OUTPUT_JSON_FILE_H__
 
 #include "app-layer-htp-xff.h"
+#include "output-json.h"
 
 void JsonFileLogRegister(void);
-JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff,
-        const bool stored, uint8_t dir, HttpXFFCfg *xff_cfg);
+JsonBuilder *JsonBuildFileInfoRecord(const Packet *p, const File *ff, const bool stored,
+        uint8_t dir, HttpXFFCfg *xff_cfg, OutputJsonCommonSettings *cfg);
 
 #endif /* __OUTPUT_JSON_FILE_H__ */
index 811024960fd6308f05cfdbe181d54e29e715e8c3..6880704fb6a32f369e5f69968d1242032dcefabf 100644 (file)
@@ -52,6 +52,7 @@
 typedef struct LogMQTTFileCtx_ {
     LogFileCtx *file_ctx;
     uint32_t    flags;
+    OutputJsonCommonSettings cfg;
 } LogMQTTFileCtx;
 
 typedef struct LogMQTTLogThread_ {
@@ -90,6 +91,7 @@ static int JsonMQTTLogger(ThreadVars *tv, void *thread_data,
     if (unlikely(js == NULL)) {
         return TM_ECODE_FAILED;
     }
+    EveAddCommonOptions(&thread->mqttlog_ctx->cfg, p, f, js);
 
     if (!rs_mqtt_logger_log(state, tx, thread->mqttlog_ctx->flags, js))
         goto error;
@@ -137,6 +139,7 @@ static OutputInitResult OutputMQTTLogInitSub(ConfNode *conf,
         return result;
     }
     mqttlog_ctx->file_ctx = ajt->file_ctx;
+    mqttlog_ctx->cfg = ajt->cfg;
 
     OutputCtx *output_ctx = SCCalloc(1, sizeof(*output_ctx));
     if (unlikely(output_ctx == NULL)) {
index dc117c28f46c34673caeb500e41003a62ce9aaf1..1dadb7bfa0ba5fdf482aa1ccd20730618fe051ef 100644 (file)
@@ -49,6 +49,7 @@
 typedef struct LogRFBFileCtx_ {
     LogFileCtx *file_ctx;
     uint32_t    flags;
+    OutputJsonCommonSettings cfg;
 } LogRFBFileCtx;
 
 typedef struct LogRFBLogThread_ {
@@ -80,6 +81,8 @@ static int JsonRFBLogger(ThreadVars *tv, void *thread_data,
         return TM_ECODE_FAILED;
     }
 
+    EveAddCommonOptions(&thread->rfblog_ctx->cfg, p, f, js);
+
     if (!rs_rfb_logger_log(NULL, tx, js)) {
         goto error;
     }
@@ -113,6 +116,7 @@ static OutputInitResult OutputRFBLogInitSub(ConfNode *conf,
         return result;
     }
     rfblog_ctx->file_ctx = ajt->file_ctx;
+    rfblog_ctx->cfg = ajt->cfg;
 
     OutputCtx *output_ctx = SCCalloc(1, sizeof(*output_ctx));
     if (unlikely(output_ctx == NULL)) {