Skip to content

Commit

Permalink
[Feature] Add function to store upstreams for HTTP urls
Browse files Browse the repository at this point in the history
  • Loading branch information
vstakhov committed Jul 3, 2022
1 parent b6f01cf commit 36ca24f
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions lualib/lua_util.lua
Expand Up @@ -1488,4 +1488,37 @@ end
--]]]
exports.unhex = function(str) return str:gsub('(..)', hex_table) end
local http_upstream_lists = {}
local function http_upstreams_by_url(pool, url)
local rspamd_url = require "rspamd_url"
local cached = http_upstream_lists[url]
if cached then return cached end
local real_url = rspamd_url.create(pool, url)
if not real_url then return nil end
local host = real_url:get_host()
local proto = real_url:get_protocol() or 'http'
local port = real_url:get_port() or (proto == 'https' and 443 or 80)
local upstream_list = require "rspamd_upstream_list"
local upstreams = upstream_list.create(host, port)
if upstreams then
http_upstream_lists[url] = upstreams
return upstreams
end
return nil
end
---[[[
-- @function lua_util.http_upstreams_by_url(pool, url)
-- Returns a cached or new upstreams list that corresponds to the specific url
-- @param {mempool} pool memory pool to use (typically static pool from rspamd_config)
-- @param {string} url full url
-- @return {upstreams_list} object to get upstream from an url
--]]]
exports.http_upstreams_by_url = http_upstreams_by_url
return exports

0 comments on commit 36ca24f

Please sign in to comment.