44 lines
956 B
Lua
44 lines
956 B
Lua
local M = {}
|
|
local resolver = require "resty.dns.resolver"
|
|
|
|
function M.get_reverse(resolvers)
|
|
local r, err = resolver:new{nameservers=resolvers, retrans=2, timeout=2000}
|
|
if not r then
|
|
return ""
|
|
end
|
|
local rdns = ""
|
|
local answers, err = r:reverse_query(ngx.var.remote_addr)
|
|
if answers ~= nil and not answers.errcode then
|
|
for ak, av in ipairs(answers) do
|
|
if av.ptrdname then
|
|
rdns = av.ptrdname
|
|
break
|
|
end
|
|
end
|
|
end
|
|
return rdns
|
|
end
|
|
|
|
function M.get_ips(fqdn, resolvers)
|
|
local r, err = resolver:new{nameservers=resolvers, retrans=2, timeout=2000}
|
|
if not r then
|
|
return ""
|
|
end
|
|
local ips = {}
|
|
local answers, err, tries = r:query(fqdn, nil, {})
|
|
if answers ~= nil then
|
|
for ak, av in ipairs(answers) do
|
|
if av.address then
|
|
table.insert(ips, av.address)
|
|
end
|
|
end
|
|
end
|
|
return ips
|
|
end
|
|
|
|
function M.ip_to_arpa()
|
|
return resolver.arpa_str(ngx.var.remote_addr):gsub("%.in%-addr%.arpa", ""):gsub("%.ip6%.arpa", "")
|
|
end
|
|
|
|
return M
|