Skip to content

Commit

Permalink
[Feature] rbl: support globbed return codes
Browse files Browse the repository at this point in the history
  • Loading branch information
fatalbanana committed Oct 25, 2023
1 parent 3d17d2d commit 5ef8dff
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
2 changes: 1 addition & 1 deletion lualib/plugins/rbl.lua
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ local rule_schema_tbl = {
ipv6 = ts.boolean:is_optional(),
is_whitelist = ts.boolean:is_optional(),
local_exclude_ip_map = ts.string:is_optional(),
matcher = ts.one_of { "equality", "luapattern", "radix", "regexp" }:is_optional(),
matcher = ts.one_of { "equality", "glob", "luapattern", "radix", "regexp" }:is_optional(),
monitored_address = ts.string:is_optional(),
no_ip = ts.boolean:is_optional(),
process_script = ts.string:is_optional(),
Expand Down
12 changes: 11 additions & 1 deletion src/plugins/lua/rbl.lua
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,10 @@ matchers.regexp = function(_, to_match, _, map)
return map and map:get_key(to_match) or false
end

matchers.glob = function(_, to_match, _, map)
return map and map:get_key(to_match) or false
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
Expand Down Expand Up @@ -1009,6 +1013,12 @@ local function gen_rbl_callback(rule)
return callback_f, string.format('checks: %s', table.concat(description, ','))
end

local map_match_types = {
glob = true,
radix = true,
regexp = true,
}

local function add_rbl(key, rbl, global_opts)
if not rbl.symbol then
rbl.symbol = key:upper()
Expand Down Expand Up @@ -1087,7 +1097,7 @@ local function add_rbl(key, rbl, global_opts)
end

local match_type = rbl.matcher
if match_type and rbl.returncodes and (match_type == 'radix' or match_type == 'regexp') then
if match_type and rbl.returncodes and map_match_types[match_type] then
if not rbl.returncodes_maps then
rbl.returncodes_maps = {}
end
Expand Down
6 changes: 5 additions & 1 deletion test/functional/configs/merged-override.conf
Original file line number Diff line number Diff line change
Expand Up @@ -310,10 +310,14 @@ rbl {
images = true;
rbl = "test9.uribl";
}
URIBL_NUMERIC_CONTENT {
UNKNOWN_URIBL_NUMERIC_CONTENT {
checks = ["numeric_urls"];
content_urls = true;
rbl = "test9.uribl";
matcher = "glob";
returncodes = {
URIBL_NUMERIC_CONTENT = "*.*.*.*";
}
}
URIBL_NUMERIC_EVERYTHING {
checks = ["numeric_urls"];
Expand Down

0 comments on commit 5ef8dff

Please sign in to comment.