local havegot = {}
local notgot = {}
- local function check_user()
- if notgot['user'] then
- return false
- end
- if not havegot['user'] then
- havegot['user'] = task:get_user()
- if havegot['user'] == nil then
- notgot['user'] = true
- end
- end
- if havegot['user'] ~= nil then
- return true
- end
- return false
- end
for k,rbl in pairs(rbls) do
- if rbl['helo'] then
- (function()
- if notgot['helo'] then
- return
- end
- if not havegot['helo'] then
- havegot['helo'] = task:get_helo()
- if havegot['helo'] == nil or string.sub(havegot['helo'],1,1) == '[' then
- notgot['helo'] = true
- return
- end
- end
- if rbl['user'] == false and check_user() == true then
- return
- end
- task:get_resolver():resolve_a(task:get_session(), task:get_mempool(),
- havegot['helo'] .. '.' .. rbl['rbl'], rbl_dns_cb, k)
- end)()
- end
+ (function()
+ if not notgot['user'] and not havegot['user'] then
+ havegot['user'] = task:get_user()
+ if havegot['user'] == nil then
+ notgot['user'] = true
+ end
+ end
+ if havegot['user'] ~= nil and rbl['user'] == false then
+ return
+ end
- if rbl['rdns'] then
- (function()
- if notgot['rdns'] then
- return
- end
- if not havegot['rdns'] then
- havegot['rdns'] = task:get_hostname()
- if havegot['rdns'] == nil or havegot['rdns'] == 'unknown' then
- notgot['rdns'] = true
- return
- end
- end
- if rbl['user'] == false and check_user() == true then
- return
- end
- task:get_resolver():resolve_a(task:get_session(), task:get_mempool(),
- havegot['rdns'] .. '.' .. rbl['rbl'], rbl_dns_cb, k)
- end)()
- end
+ if rbl['helo'] then
+ (function()
+ if notgot['helo'] then
+ return
+ end
+ if not havegot['helo'] then
+ havegot['helo'] = task:get_helo()
+ if havegot['helo'] == nil or string.sub(havegot['helo'],1,1) == '[' then
+ notgot['helo'] = true
+ return
+ end
+ end
+ task:get_resolver():resolve_a(task:get_session(), task:get_mempool(),
+ havegot['helo'] .. '.' .. rbl['rbl'], rbl_dns_cb, k)
+ end)()
+ end
- if rbl['from'] then
- (function()
- if notgot['from'] then
- return
- end
- if not havegot['from'] then
- havegot['from'] = task:get_from_ip()
- if not havegot['from']:is_valid() then
- notgot['from'] = true
- return
- end
- end
- if (havegot['from']:get_version() == 6 and rbl['ipv6']) or
- (havegot['from']:get_version() == 4 and rbl['ipv4']) then
- if rbl['user'] == false and check_user() == true then
- return
- end
- task:get_resolver():resolve_a(task:get_session(), task:get_mempool(),
- ip_to_rbl(havegot['from'], rbl['rbl']), rbl_dns_cb, k)
- end
- end)()
- end
+ if rbl['rdns'] then
+ (function()
+ if notgot['rdns'] then
+ return
+ end
+ if not havegot['rdns'] then
+ havegot['rdns'] = task:get_hostname()
+ if havegot['rdns'] == nil or havegot['rdns'] == 'unknown' then
+ notgot['rdns'] = true
+ return
+ end
+ end
+ task:get_resolver():resolve_a(task:get_session(), task:get_mempool(),
+ havegot['rdns'] .. '.' .. rbl['rbl'], rbl_dns_cb, k)
+ end)()
+ end
- if rbl['received'] then
- (function()
- if notgot['received'] then
- return
- end
- if not havegot['received'] then
- havegot['received'] = task:get_received_headers()
- if next(havegot['received']) == nil then
- notgot['received'] = true
- return
- end
- end
- if rbl['user'] == false and check_user() == true then
- return
- end
- for _,rh in ipairs(havegot['received']) do
- if rh['real_ip'] and rh['real_ip']:is_valid() then
+ if rbl['from'] then
+ (function()
+ if notgot['from'] then
+ return
+ end
+ if not havegot['from'] then
+ havegot['from'] = task:get_from_ip()
+ if not havegot['from']:is_valid() then
+ notgot['from'] = true
+ return
+ end
+ end
+ if (havegot['from']:get_version() == 6 and rbl['ipv6']) or
+ (havegot['from']:get_version() == 4 and rbl['ipv4']) then
+ task:get_resolver():resolve_a(task:get_session(), task:get_mempool(),
+ ip_to_rbl(havegot['from'], rbl['rbl']), rbl_dns_cb, k)
+ end
+ end)()
+ end
+
+ if rbl['received'] then
+ (function()
+ if notgot['received'] then
+ return
+ end
+ if not havegot['received'] then
+ havegot['received'] = task:get_received_headers()
+ if next(havegot['received']) == nil then
+ notgot['received'] = true
+ return
+ end
+ end
+ for _,rh in ipairs(havegot['received']) do
+ if rh['real_ip'] and rh['real_ip']:is_valid() then
if (rh['real_ip']:get_version() == 6 and rbl['ipv6']) or
(rh['real_ip']:get_version() == 4 and rbl['ipv4']) then
task:get_resolver():resolve_a(task:get_session(), task:get_mempool(),
ip_to_rbl(rh['real_ip'], rbl['rbl']), rbl_dns_cb, k)
end
- end
- end
- end)()
- end
+ end
+ end
+ end)()
+ end
+ end)()
end
end