aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2017-11-03 21:02:12 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2017-11-03 21:02:12 +0200
commit380590e5ce3b2047d5c39f4db440faf82872f2e5 (patch)
tree653362bd3f6be76d4ebd19247fa572d233e940d1
parent70aeb9f1c5261da53f7b1f0408760d62afd47b26 (diff)
downloadawall-380590e5ce3b2047d5c39f4db440faf82872f2e5.tar.bz2
awall-380590e5ce3b2047d5c39f4db440faf82872f2e5.tar.xz
host: resolvelist function
-rw-r--r--awall/host.lua26
-rw-r--r--awall/model.lua14
-rw-r--r--awall/modules/filter.lua2
-rw-r--r--awall/modules/log.lua10
4 files changed, 31 insertions, 21 deletions
diff --git a/awall/host.lua b/awall/host.lua
index 53b1d58..35178fb 100644
--- a/awall/host.lua
+++ b/awall/host.lua
@@ -1,13 +1,18 @@
--[[
Host address resolver for Alpine Wall
-Copyright (C) 2012-2014 Kaarle Ritvanen
+Copyright (C) 2012-2017 Kaarle Ritvanen
See LICENSE file for license details
]]--
-local familypatterns = {inet='%d[%.%d/]+',
- inet6='[:%x/]+',
- domain='[%a-][%.%w-]*'}
+local M = {}
+
+local util = require('awall.util')
+
+
+local familypatterns = {
+ inet='%d[%.%d/]+', inet6='[:%x/]+', domain='[%a-][%.%w-]*'
+}
local function getfamily(addr, context)
for k, v in pairs(familypatterns) do
@@ -18,7 +23,7 @@ end
local dnscache = {}
-return function(host, context)
+function M.resolve(host, context)
local family = getfamily(host, context)
if family == 'domain' then
@@ -52,3 +57,14 @@ return function(host, context)
return {{family, host}}
end
+
+function M.resolvelist(list, context)
+ local res = {}
+ for _, host in util.listpairs(list) do
+ util.extend(res, M.resolve(host, context))
+ end
+ return ipairs(res)
+end
+
+
+return M
diff --git a/awall/model.lua b/awall/model.lua
index 8f650ab..003789f 100644
--- a/awall/model.lua
+++ b/awall/model.lua
@@ -10,7 +10,7 @@ local M = {}
local loadclass = require('awall').loadclass
M.class = require('awall.class')
-local resolve = require('awall.host')
+local resolvelist = require('awall.host').resolvelist
local builtin = require('awall.iptables').builtin
local optfrag = require('awall.optfrag')
@@ -125,13 +125,11 @@ function M.Zone:optfrags(dir)
local aopts = nil
if self.addr then
aopts = {}
- for i, hostdef in listpairs(self.addr) do
- for i, addr in ipairs(resolve(hostdef, self)) do
- table.insert(
- aopts,
- {family=addr[1], [aprop]=addr[2], match='-'..aopt..' '..addr[2]}
- )
- end
+ for _, addr in resolvelist(self.addr) do
+ table.insert(
+ aopts,
+ {family=addr[1], [aprop]=addr[2], match='-'..aopt..' '..addr[2]}
+ )
end
end
diff --git a/awall/modules/filter.lua b/awall/modules/filter.lua
index 8633a3d..701794e 100644
--- a/awall/modules/filter.lua
+++ b/awall/modules/filter.lua
@@ -6,7 +6,7 @@ See LICENSE file for license details
local loadclass = require('awall').loadclass
-local resolve = require('awall.host')
+local resolve = require('awall.host').resolve
local model = require('awall.model')
local class = model.class
diff --git a/awall/modules/log.lua b/awall/modules/log.lua
index ad1bc54..da42d7b 100644
--- a/awall/modules/log.lua
+++ b/awall/modules/log.lua
@@ -5,7 +5,7 @@ See LICENSE file for license details
]]--
-local resolve = require('awall.host')
+local resolvelist = require('awall.host').resolvelist
local model = require('awall.model')
local class = model.class
@@ -85,12 +85,8 @@ function Log:optfrags()
)
end
- for _, hostdef in util.listpairs(self.mirror) do
- for _, addr in ipairs(resolve(hostdef, self)) do
- table.insert(
- targets, {family=addr[1], target='TEE --gateway '..addr[2]}
- )
- end
+ for _, addr in resolvelist(self.mirror) do
+ table.insert(targets, {family=addr[1], target='TEE --gateway '..addr[2]})
end
return combinations(ofrags, targets)