diff options
author | Ted Trask <ttrask01@yahoo.com> | 2013-01-29 16:27:08 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2013-01-29 16:27:08 +0000 |
commit | b4faf111e299690e2919125d00f610405b020f02 (patch) | |
tree | b6c000d3193aabf05c90f8f5f86ce6dc0801b11a | |
parent | d7982d620b86f9b90e26b3063086a33943d9543a (diff) | |
download | acf-dnsmasq-b4faf111e299690e2919125d00f610405b020f02.tar.bz2 acf-dnsmasq-b4faf111e299690e2919125d00f610405b020f02.tar.xz |
Better validation of config interfaces
-rw-r--r-- | dnsmasq-model.lua | 16 |
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 "" |