commit 3f14f4a: [Minor] Add authentication results parser function

Vsevolod Stakhov vsevolod at highsecure.ru
Sat Jan 8 20:21:05 UTC 2022


Author: Vsevolod Stakhov
Date: 2022-01-08 14:34:58 +0000
URL: https://github.com/rspamd/rspamd/commit/3f14f4a3e583593cb55bdd5604db3d9af8e65da5

[Minor] Add authentication results parser function

---
 lualib/lua_auth_results.lua | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/lualib/lua_auth_results.lua b/lualib/lua_auth_results.lua
index f7a319f48..7b41e6ff5 100644
--- a/lualib/lua_auth_results.lua
+++ b/lualib/lua_auth_results.lua
@@ -275,4 +275,28 @@ end
 
 exports.gen_auth_results = gen_auth_results
 
+local aar_elt_grammar
+-- This function parses an ar element to a table of kv pairs that represents different
+-- elements
+local function parse_ar_element(elt)
+
+  if not aar_elt_grammar then
+    -- Generate grammar
+    local lpeg = require "lpeg"
+    local P = lpeg.P
+    local S = lpeg.S
+    local V = lpeg.V
+    local C = lpeg.C
+    local space = S(" ")^0
+    local doublequoted = space * P'"' * ((1 - S'"\r\n\f\\') + (P'\\' * 1))^0 * '"' * space
+    local comment = space * P{ "(" * ((1 - S"()") + V(1))^0 * ")" } * space
+    local name = C((1 - S('=(" '))^1) * space
+    local pair = lpeg.Cg(name * "=" * space * name) * space
+    aar_elt_grammar = lpeg.Cf(lpeg.Ct("") * (pair + comment + doublequoted)^1, rawset)
+  end
+
+  return aar_elt_grammar:match(elt)
+end
+exports.parse_ar_element = parse_ar_element
+
 return exports


More information about the Commits mailing list