diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2018-12-13 17:27:25 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2018-12-13 17:27:25 +0200 |
commit | 5d7327a3b0345489dcafc773ab5996b0199cbaef (patch) | |
tree | f7d0070bb9c04842e04edc0dfaa32c065cb25ad0 | |
parent | 768953afeaf5dd0633c81ea6f8d1c81db5a63cc5 (diff) | |
download | awall-5d7327a3b0345489dcafc773ab5996b0199cbaef.tar.bz2 awall-5d7327a3b0345489dcafc773ab5996b0199cbaef.tar.xz |
host.resolve: use drillv1.6.8
-rw-r--r-- | awall/host.lua | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/awall/host.lua b/awall/host.lua index 84c67e3..bd44bd8 100644 --- a/awall/host.lua +++ b/awall/host.lua @@ -29,18 +29,14 @@ function M.resolve(host, context) if not dnscache[host] then dnscache[host] = {} - for rec in io.popen('dig '..host..' A '..host..' AAAA'):lines() do - local name, rtype, addr = - rec:match( - '^('..familypatterns.domain..')%s+%d+%s+IN%s+(A+)%s+(.+)' + for family, rtype in pairs{inet='A', inet6='AAAA'} do + for rec in io.popen('drill '..host..' '..rtype):lines() do + local name, addr = rec:match( + '^('..familypatterns.domain..')%s+%d+%s+IN%s+'..rtype.. + '%s+(.+)' ) - if name and name:sub(1, host:len() + 1) == host..'.' then - if rtype == 'A' then family = 'inet' - elseif rtype == 'AAAA' then family = 'inet6' - else family = nil end - - if family then + if name and name:sub(1, host:len() + 1) == host..'.' then assert(getfamily(addr, context) == family) table.insert(dnscache[host], {family, addr}) end |