diff options
author | Ted Trask <ttrask01@yahoo.com> | 2012-12-04 20:42:54 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2012-12-04 20:42:54 +0000 |
commit | facef4352ce3551badf98271788342c453360a21 (patch) | |
tree | e9d01718aead111b285c458558081c3a683e5846 /interfaces-model.lua | |
parent | 3690ce481b93b839087034588485eebb0ae38fe6 (diff) | |
download | acf-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.lua | 56 |
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 |