]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Rbl: Add ability to check urls
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 25 Aug 2019 08:46:40 +0000 (09:46 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 25 Aug 2019 08:46:40 +0000 (09:46 +0100)
src/plugins/lua/rbl.lua

index 83f57f495e2cd0aac8fc9d121c3523fcae49e825..4cafb0c878b94d9f21bbb2e1f2b1ef2c0b4ede46 100644 (file)
@@ -425,6 +425,29 @@ local function gen_rbl_callback(rule)
     return true
   end
 
+  local function check_urls(task, requests_table)
+    local ex_params = {
+      task = task,
+      limit = rule.requests_limit,
+      ignore_redirected = true,
+      ignore_ip = rule.no_ip,
+      need_emails = false,
+      esld_limit = 1,
+      prefix = 'rbl_url'
+    }
+
+    local urls = lua_util.extract_specific_urls(ex_params)
+    if not urls or #urls == 0 then
+      return false
+    end
+
+    for _,u in ipairs(urls) do
+      add_dns_request(task, u:get_tld(), false, false, requests_table)
+    end
+
+    return true
+  end
+
   local function check_from(task, requests_table)
     local ip = task:get_from_ip()
 
@@ -502,6 +525,10 @@ local function gen_rbl_callback(rule)
     pipeline[#pipeline + 1] = check_emails
   end
 
+  if rule.urls then
+    pipeline[#pipeline + 1] = check_urls
+  end
+
   if rule.from then
     pipeline[#pipeline + 1] = check_from
   end
@@ -766,6 +793,7 @@ local default_options = {
   ['default_is_whitelist'] = false,
   ['default_ignore_whitelist'] = false,
   ['default_resolve_ip'] = false,
+  ['default_no_ip'] = false,
 }
 
 opts = lua_util.override_defaults(default_options, opts)