aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2018-12-13 17:27:25 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2018-12-13 17:27:25 +0200
commit5d7327a3b0345489dcafc773ab5996b0199cbaef (patch)
treef7d0070bb9c04842e04edc0dfaa32c065cb25ad0
parent768953afeaf5dd0633c81ea6f8d1c81db5a63cc5 (diff)
downloadawall-5d7327a3b0345489dcafc773ab5996b0199cbaef.tar.bz2
awall-5d7327a3b0345489dcafc773ab5996b0199cbaef.tar.xz
host.resolve: use drillv1.6.8
-rw-r--r--awall/host.lua16
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