diff options
Diffstat (limited to 'src/plugins/lua/rbl.lua')
-rw-r--r-- | src/plugins/lua/rbl.lua | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/plugins/lua/rbl.lua b/src/plugins/lua/rbl.lua index b6467c103..a36131b1b 100644 --- a/src/plugins/lua/rbl.lua +++ b/src/plugins/lua/rbl.lua @@ -21,6 +21,7 @@ end local hash = require 'rspamd_cryptobox_hash' local rspamd_logger = require 'rspamd_logger' +local rspamd_regexp = require 'rspamd_regexp' local rspamd_util = require 'rspamd_util' local rspamd_ip = require "rspamd_ip" local fun = require 'fun' @@ -225,6 +226,18 @@ matchers.luapattern = function(to_match, pattern) return string.find(to_match, '^' .. pattern .. '$') and true or false end +matchers.regexp = function(to_match, pattern) + local re = rspamd_regexp.get_cached(pattern) + if not re then + re = rspamd_regexp.create_cached(pattern) + if not re then + rspamd_logger.errx('regexp did not compile: %s', pattern) + return false + end + end + return re:match(to_match) +end + local function rbl_dns_process(task, rbl, to_resolve, results, err, resolve_table_elt, match) local function make_option(ip, label) if ip then |