aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2012-07-20 10:44:58 +0000
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2012-07-20 10:45:10 +0000
commitb4fb57b3ad657d8089f0d12138fad8e810d309fc (patch)
tree2838d2a9a4f865d754393774764b80ea630ba086
parent7481a54f89d9fe13bc450bb8035082448b8b2acf (diff)
downloadawall-b4fb57b3ad657d8089f0d12138fad8e810d309fc.tar.bz2
awall-b4fb57b3ad657d8089f0d12138fad8e810d309fc.tar.xz
dynamically discover classes in ConfigObject.create
-rw-r--r--awall/model.lua7
-rw-r--r--awall/modules/filter.lua4
2 files changed, 8 insertions, 3 deletions
diff --git a/awall/model.lua b/awall/model.lua
index bdf5d35..6b9a7db 100644
--- a/awall/model.lua
+++ b/awall/model.lua
@@ -30,6 +30,13 @@ function ConfigObject:init(context, location)
end
function ConfigObject:create(cls, params)
+ if type(cls) == 'string' then
+ local name = cls
+ cls = awall.classmap[cls]
+ if not cls then
+ self:error('Support for '..name..' objects not installed')
+ end
+ end
return cls.morph(params, self.context, self.location)
end
diff --git a/awall/modules/filter.lua b/awall/modules/filter.lua
index 07d5df9..bd6b35e 100644
--- a/awall/modules/filter.lua
+++ b/awall/modules/filter.lua
@@ -69,9 +69,7 @@ function Filter:trules()
dnat[attr] = self[attr]
end
- if not awall.classmap.dnat then self:error('NAT module not installed') end
-
- awall.util.extend(res, self:create(awall.classmap.dnat, dnat):trules())
+ awall.util.extend(res, self:create('dnat', dnat):trules())
end
awall.util.extend(res, model.Rule.trules(self))