工程提交
This commit is contained in:
79
4G/tools/resource/soc_script/v2025.12.31.22/lib/httpdns.lua
Normal file
79
4G/tools/resource/soc_script/v2025.12.31.22/lib/httpdns.lua
Normal file
@@ -0,0 +1,79 @@
|
||||
--[[
|
||||
@module httpdns
|
||||
@summary 使用Http进行域名解析
|
||||
@version 1.0
|
||||
@date 2023.07.13
|
||||
@author wendal
|
||||
@usage
|
||||
-- 通过阿里DNS获取结果
|
||||
local ip = httpdns.ali("air32.cn")
|
||||
log.info("httpdns", "air32.cn", ip)
|
||||
|
||||
-- 通过腾讯DNS获取结果
|
||||
local ip = httpdns.tx("air32.cn")
|
||||
log.info("httpdns", "air32.cn", ip)
|
||||
]]
|
||||
|
||||
local httpdns = {}
|
||||
|
||||
--[[
|
||||
通过阿里DNS获取结果
|
||||
@api httpdns.ali(domain_name, opts)
|
||||
@string 域名
|
||||
@table opts 可选参数, 与http.request的opts参数一致
|
||||
@return string ip地址
|
||||
@usage
|
||||
local ip = httpdns.ali("air32.cn")
|
||||
log.info("httpdns", "air32.cn", ip)
|
||||
-- 指定网络适配器
|
||||
local ip = httpdns.ali("air32.cn", {adapter=socket.LWIP_STA, timeout=3000})
|
||||
log.info("httpdns", "air32.cn", ip)
|
||||
]]
|
||||
function httpdns.ali(n, opts)
|
||||
if n == nil then return end
|
||||
if opts == nil then
|
||||
opts = {timeout=3000}
|
||||
elseif opts.timeout == nil then
|
||||
opts.timeout = 3000
|
||||
end
|
||||
local code, _, body = http.request("GET", "http://223.5.5.5/resolve?short=1&name=" .. tostring(n), nil, nil, opts).wait()
|
||||
if code == 200 and body and #body > 2 then
|
||||
local jdata = json.decode(body)
|
||||
if jdata and #jdata > 0 then
|
||||
return jdata[1]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--[[
|
||||
通过腾讯DNS获取结果
|
||||
@api httpdns.tx(domain_name, opts)
|
||||
@string 域名
|
||||
@table opts 可选参数, 与http.request的opts参数一致
|
||||
@return string ip地址
|
||||
@usage
|
||||
local ip = httpdns.tx("air32.cn")
|
||||
log.info("httpdns", "air32.cn", ip)
|
||||
|
||||
-- 指定网络适配器
|
||||
local ip = httpdns.tx("air32.cn", {adapter=socket.LWIP_STA, timeout=3000})
|
||||
log.info("httpdns", "air32.cn", ip)
|
||||
]]
|
||||
function httpdns.tx(n, opts)
|
||||
if n == nil then return end
|
||||
if opts == nil then
|
||||
opts = {timeout=3000}
|
||||
elseif opts.timeout == nil then
|
||||
opts.timeout = 3000
|
||||
end
|
||||
local code, _, body = http.request("GET", "http://119.29.29.29/d?dn=" .. tostring(n), nil, nil, opts).wait()
|
||||
if code == 200 and body and #body > 2 then
|
||||
local tmp = body:split(",")
|
||||
if tmp then return tmp[1] end
|
||||
end
|
||||
end
|
||||
|
||||
return httpdns
|
||||
|
||||
|
||||
Reference in New Issue
Block a user