From d320a28bc226cd80b2e28a5309f5c03cef0fab77 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20K=C3=A1cha?= <ph@cesnet.cz>
Date: Thu, 26 Feb 2015 16:26:00 +0100
Subject: [PATCH] warden_filer now supports adding Node for receiver

---
 warden3/contrib/warden_filer/README           |  7 ++++++-
 warden3/contrib/warden_filer/warden_filer.cfg | 12 ++++++++++--
 warden3/contrib/warden_filer/warden_filer.py  |  4 ++++
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/warden3/contrib/warden_filer/README b/warden3/contrib/warden_filer/README
index a33de1f..0964005 100644
--- a/warden3/contrib/warden_filer/README
+++ b/warden3/contrib/warden_filer/README
@@ -75,11 +75,16 @@ JSON object, containing configuration. See also warden_filer.cfg as example.
                doc, possible keys: cat, nocat, group, nogroup, tag, notag),
                unmatched events get discarded and deleted
       node - o information about detector to be prepended into event Node
-             array (see Idea doc)
+             array (see Idea doc). Note that Warden server may require it
+             to correspond with client registration
    receiver - configuration section for receiver mode
       dir - directory, whose "incoming" subdir will serve as target for events
       filter - filter fields for Warden query (see Warden and Idea doc,
                possible keys: cat, nocat, group, nogroup, tag, notag)
+      node - o information about detector to be prepended into event Node
+             array (see Idea doc). Be careful here, you may ruin Idea
+             messages by wrongly formatted data and they are not checked
+             here in any way
 
 ------------------------------------------------------------------------------
 E. Directories and locking issues
diff --git a/warden3/contrib/warden_filer/warden_filer.cfg b/warden3/contrib/warden_filer/warden_filer.cfg
index 402f518..f522778 100644
--- a/warden3/contrib/warden_filer/warden_filer.cfg
+++ b/warden3/contrib/warden_filer/warden_filer.cfg
@@ -26,9 +26,9 @@
         },
         // Optional information about detector to be prepended into Idea Node array
         "node": {
-            "Name": "cz.example.warden.test",
+            "Name": "cz.example.warden.test_sender",
             "Type": ["Relay"],
-            "SW": ["warden_filer"],
+            "SW": ["warden_filer-sender"],
             "AggrWin": "00:05:00",
             "Note": "Test warden_filer sender"
         }
@@ -45,5 +45,13 @@
             "tag": null,
             "notag": ["Honeypot"]
         }
+        // Optional information about detector to be prepended into Idea Node array
+        "node": {
+            "Name": "cz.example.warden.test_receiver",
+            "Type": ["Relay"],
+            "SW": ["warden_filer-receiver"],
+            "AggrWin": "00:05:00",
+            "Note": "Test warden_filer receiver"
+        }
     }
 }
diff --git a/warden3/contrib/warden_filer/warden_filer.py b/warden3/contrib/warden_filer/warden_filer.py
index b4c19c8..cabd2b8 100644
--- a/warden3/contrib/warden_filer/warden_filer.py
+++ b/warden3/contrib/warden_filer/warden_filer.py
@@ -141,6 +141,7 @@ class SafeDir(object):
 
 def receiver(config, wclient, sdir, oneshot):
     poll_time = config.get("poll_time", 5)
+    node = config.get("node", None)
     conf_filt = config.get("filter", {})
     filt = {}
     # Extract filter explicitly to be sure we have right param names for getEvents
@@ -152,6 +153,9 @@ def receiver(config, wclient, sdir, oneshot):
         count_ok = count_err = 0
         while events:
             for event in events:
+                if node:
+                    nodelist = event.setdefault("Node", [])
+                    nodelist.insert(0, node)
                 try:
                     nf = None
                     nf = sdir.newfile()
-- 
GitLab