diff options
author | Andrew Lewis <nerf@judo.za.org> | 2017-03-09 18:06:59 +0200 |
---|---|---|
committer | Andrew Lewis <nerf@judo.za.org> | 2017-03-09 18:06:59 +0200 |
commit | 6a0b76c33a36810f566d0ec8282bd77cff19c833 (patch) | |
tree | 12e8332572225d9750c45d5dbeb21865d847675d | |
parent | d1cbf812db1cd50623d2e58a8aa79bf7e660eaec (diff) | |
download | rspamd-6a0b76c33a36810f566d0ec8282bd77cff19c833.tar.gz rspamd-6a0b76c33a36810f566d0ec8282bd77cff19c833.zip |
[Feature] Support using request headers in settings
- Issue: #1502
-rw-r--r-- | src/plugins/lua/settings.lua | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/lua/settings.lua b/src/plugins/lua/settings.lua index a3a41440a..758bc9b94 100644 --- a/src/plugins/lua/settings.lua +++ b/src/plugins/lua/settings.lua @@ -225,6 +225,19 @@ local function check_settings(task) end end + if rule['request_header'] then + for k, v in pairs(rule['request_header']) do + local h = task:get_request_header(k) + res = (h and v:match(h)) + if res then + break + end + end + if not res then + return nil + end + end + if res then if rule['whitelist'] then rule['apply'] = {whitelist = true} @@ -445,6 +458,19 @@ local function process_settings_table(tbl) if elt['authenticated'] then out['authenticated'] = true end + if elt['request_header'] then + local rho = {} + for k, v in pairs(elt['request_header']) do + local re = rspamd_regexp.get_cached(v) + if not re then + re = rspamd_regexp.create_cached(v) + end + if re then + rho[k] = re + end + end + out['request_header'] = rho + end -- Now we must process actions if elt['symbols'] then out['symbols'] = elt['symbols'] end |