summaryrefslogtreecommitdiffstats
path: root/interfaces-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2012-12-04 20:42:54 +0000
committerTed Trask <ttrask01@yahoo.com>2012-12-04 20:42:54 +0000
commitfacef4352ce3551badf98271788342c453360a21 (patch)
treee9d01718aead111b285c458558081c3a683e5846 /interfaces-model.lua
parent3690ce481b93b839087034588485eebb0ae38fe6 (diff)
downloadacf-alpine-baselayout-facef4352ce3551badf98271788342c453360a21.tar.bz2
acf-alpine-baselayout-facef4352ce3551badf98271788342c453360a21.tar.xz
Change ifup/ifdown interface to select and validate
Diffstat (limited to 'interfaces-model.lua')
-rw-r--r--interfaces-model.lua56
1 files changed, 38 insertions, 18 deletions
diff --git a/interfaces-model.lua b/interfaces-model.lua
index c524adb..dbb3365 100644
--- a/interfaces-model.lua
+++ b/interfaces-model.lua
@@ -361,6 +361,16 @@ iface.validate = function (def)
return success, newdef
end
+iface.list_interfaces = function()
+ local output = {}
+ iface.unpack_interfaces()
+ for i,int in ipairs(iface.array) do
+ output[#output+1] = int.value.name.value
+ end
+ table.sort(output)
+ return output
+end
+
-------------------------------------------------------------------------------
-- Public Methods
-------------------------------------------------------------------------------
@@ -479,20 +489,25 @@ end
get_ifup_by_name = function(self, clientdata)
local result = {}
- result.iface = cfe({ value=clientdata.name or "", label="Interface Name" })
+ result.iface = cfe({ type="select", value=clientdata.name or "", label="Interface Name", option=iface.list_interfaces() })
return cfe({ type="group", value=result, label="Interface Name" })
end
ifup_by_name = function (self, ifuprequest)
- name = ifuprequest.value.iface.value or ""
- local cmd = path.."ifup "..format.escapespecialcharacters(name).." 2>&1"
- local f = io.popen(cmd)
- ifuprequest.descr = f:read("*a")
- f:close()
-
- if ifuprequest.descr == "" then
- ifuprequest.descr = "Interface up"
+ local success = modelfunctions.validateselect(ifuprequest.value.iface)
+ if success then
+ name = ifuprequest.value.iface.value or ""
+ local cmd = path.."ifup "..format.escapespecialcharacters(name).." 2>&1"
+ local f = io.popen(cmd)
+ ifuprequest.descr = f:read("*a")
+ f:close()
+
+ if ifuprequest.descr == "" then
+ ifuprequest.descr = "Interface up"
+ end
+ else
+ ifuprequest.errtxt = "Failed ifup"
end
return ifuprequest
@@ -500,20 +515,25 @@ end
get_ifdown_by_name = function(self, clientdata)
local result = {}
- result.iface = cfe({ value=clientdata.name or "", label="Interface Name" })
+ result.iface = cfe({ type="select", value=clientdata.name or "", label="Interface Name", option=iface.list_interfaces() })
return cfe({ type="group", value=result, label="Interface Name" })
end
ifdown_by_name = function (self, ifdownrequest)
- name = ifdownrequest.value.iface.value or ""
- local cmd = path.."ifdown "..format.escapespecialcharacters(name).." 2>&1"
- local f = io.popen(cmd)
- ifdownrequest.descr = f:read("*a")
- f:close()
-
- if ifdownrequest.descr == "" then
- ifdownrequest.descr = "Interface down"
+ local success = modelfunctions.validateselect(ifdownrequest.value.iface)
+ if success then
+ name = ifdownrequest.value.iface.value or ""
+ local cmd = path.."ifdown "..format.escapespecialcharacters(name).." 2>&1"
+ local f = io.popen(cmd)
+ ifdownrequest.descr = f:read("*a")
+ f:close()
+
+ if ifdownrequest.descr == "" then
+ ifdownrequest.descr = "Interface down"
+ end
+ else
+ ifdownrequest.errtxt = "Failed ifup"
end
return ifdownrequest