]> git.ipfire.org Git - thirdparty/suricata-verify.git/commitdiff
test: test lua require with builtin lib for output scripts 2253/head
authorJason Ish <jason.ish@oisf.net>
Wed, 22 Jan 2025 22:30:28 +0000 (16:30 -0600)
committerVictor Julien <victor@inliniac.net>
Thu, 23 Jan 2025 18:10:50 +0000 (19:10 +0100)
tests/lua/lua-hashlib-output/README.md [new file with mode: 0644]
tests/lua/lua-hashlib-output/suricata.yaml [new file with mode: 0644]
tests/lua/lua-hashlib-output/test.lua [new file with mode: 0644]
tests/lua/lua-hashlib-output/test.pcap [new file with mode: 0644]
tests/lua/lua-hashlib-output/test.yaml [new file with mode: 0644]

diff --git a/tests/lua/lua-hashlib-output/README.md b/tests/lua/lua-hashlib-output/README.md
new file mode 100644 (file)
index 0000000..101025f
--- /dev/null
@@ -0,0 +1,3 @@
+A rather simple test to make sure that out built-in libraries can be
+loaded by a Lua output script.
+
diff --git a/tests/lua/lua-hashlib-output/suricata.yaml b/tests/lua/lua-hashlib-output/suricata.yaml
new file mode 100644 (file)
index 0000000..c7319fc
--- /dev/null
@@ -0,0 +1,13 @@
+%YAML 1.1
+---
+
+include: ../../../etc/suricata-3.1.2.yaml
+
+rule-files:
+
+outputs:
+  - lua:
+      enabled: yes
+      scripts-dir: .
+      scripts:
+        - test.lua
diff --git a/tests/lua/lua-hashlib-output/test.lua b/tests/lua/lua-hashlib-output/test.lua
new file mode 100644 (file)
index 0000000..d356f1c
--- /dev/null
@@ -0,0 +1,43 @@
+local hashlib = require("suricata.hashlib")
+
+-- We don't actually use, but the script will fail to run if it fails
+-- to "require".
+local dataset = require("suricata.dataset")
+
+-- www.suricata-ids.org
+local expected_md5 = "27170ec0609347c6a158bb5b694822a5"
+
+filename = "results.log"
+
+function init (args)
+   local needs = {}
+   needs["protocol"] = "dns"
+   return needs
+end
+
+function setup (args)
+   SCLogNotice("lua: setup()")
+   file = assert(io.open(SCLogPath() .. "/" .. filename, "w"))
+end
+
+function log(args)
+   queries = DnsGetQueries()
+   if queries ~= nil then
+      for n, t in pairs(queries) do
+         if hashlib.md5_hexdigest(t["rrname"]) == expected_md5 then
+            msg = "OK"
+         else
+            msg = "FAIL"
+         end
+        write(msg)
+      end
+   end
+end
+
+function deinit(args)
+   file:close(file)
+end
+
+function write(msg)
+   file:write(msg .. "\n")
+end
diff --git a/tests/lua/lua-hashlib-output/test.pcap b/tests/lua/lua-hashlib-output/test.pcap
new file mode 100644 (file)
index 0000000..d3065bd
Binary files /dev/null and b/tests/lua/lua-hashlib-output/test.pcap differ
diff --git a/tests/lua/lua-hashlib-output/test.yaml b/tests/lua/lua-hashlib-output/test.yaml
new file mode 100644 (file)
index 0000000..3041fd5
--- /dev/null
@@ -0,0 +1,10 @@
+requires:
+  min-version: 8
+
+pcap: ../../cond-log-dns-dig/input.pcap
+
+checks:
+  - shell:
+      args: grep "OK" results.log | wc -l
+      expect: 2
+