summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2013-01-29 16:27:08 +0000
committerTed Trask <ttrask01@yahoo.com>2013-01-29 16:27:08 +0000
commitb4faf111e299690e2919125d00f610405b020f02 (patch)
treeb6c000d3193aabf05c90f8f5f86ce6dc0801b11a
parentd7982d620b86f9b90e26b3063086a33943d9543a (diff)
downloadacf-dnsmasq-b4faf111e299690e2919125d00f610405b020f02.tar.bz2
acf-dnsmasq-b4faf111e299690e2919125d00f610405b020f02.tar.xz
Better validation of config interfaces
-rw-r--r--dnsmasq-model.lua16
1 files changed, 12 insertions, 4 deletions
diff --git a/dnsmasq-model.lua b/dnsmasq-model.lua
index ab2d8ff..0e522d8 100644
--- a/dnsmasq-model.lua
+++ b/dnsmasq-model.lua
@@ -138,7 +138,7 @@ local function parse_file (file)
return opts
end
-local function validateconfig(config)
+local function validateconfig(self, config)
local success = true
function testlist(param, test, errtxt)
@@ -159,12 +159,20 @@ local function validateconfig(config)
success = false
end
end
+
+ local interfaces = {}
+ local interfacescontroller = self:new("alpine-baselayout/interfaces")
+ local ints = interfacescontroller.model.get_interfaces()
+ interfacescontroller:destroy()
+ for i,v in ipairs(ints.value) do
+ interfaces[v] = i
+ end
testlist(config.value.domain, function(v) return string.find(v, "%s") end, "Cannot contain spaces")
- testlist(config.value.interface, function(v) return string.find(v, "%W") end, "Illegal character")
+ testlist(config.value.interface, function(v) return not interfaces[v] end, "Invalid interface")
testlist(config.value.listen_address, function(v) return not validator.is_ipv4(v) end, "Invalid IP Address")
testlist(config.value.dhcp_range, function(v) return string.find(v, "%s") end, "Cannot contain spaces")
- testlist(config.value.no_dhcp_interface, function(v) return string.find(v, "%W") end, "Illegal character")
+ testlist(config.value.no_dhcp_interface, function(v) return not interfaces[v] end, "Invalid interface")
testlist(config.value.dhcp_host, function(v) return string.find(v, "%s") end, "Cannot contain spaces")
testlist(config.value.dhcp_option, function(v) return string.find(v, "%s") end, "Cannot contain spaces")
testlist(config.value.mx_host, function(v) return string.find(v, "%s") end, "Cannot contain spaces")
@@ -296,7 +304,7 @@ function getconfig()
end
function setconfig(self, config)
- local success, config = validateconfig(config)
+ local success, config = validateconfig(self, config)
if success then
local file = fs.read_file(configfile) or ""