]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add `in` and `not_in` transformations
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 21 Aug 2018 11:39:33 +0000 (12:39 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 21 Aug 2018 11:39:33 +0000 (12:39 +0100)
lualib/lua_selectors.lua

index 69a20b9c49ac82829599013f8a16c0c5c4a49642..5f2f3564ad1a4ec2c6ab7434248bb320f4c35ec2 100644 (file)
@@ -382,6 +382,27 @@ local transform_function = {
       return inp[args[1]](inp)
     end
   },
+  -- Boolean function in, returns either nil or its input if input is in args list
+  ['in'] = {
+    ['types'] = {
+      ['string'] = true,
+    },
+    ['map_type'] = 'string',
+    ['process'] = function(inp, _, args)
+      for _,a in ipairs(args) do if a == inp then return inp end end
+      return nil
+    end
+  },
+  ['not_in'] = {
+    ['types'] = {
+      ['string'] = true,
+    },
+    ['map_type'] = 'string',
+    ['process'] = function(inp, _, args)
+      for _,a in ipairs(args) do if a == inp then return nil end end
+      return inp
+    end
+  },
 }
 
 local function process_selector(task, sel)