summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2012-12-11 02:42:26 +0000
committerTed Trask <ttrask01@yahoo.com>2012-12-11 02:42:26 +0000
commit52865b9bf0fa41ffb4e2e22c505ea23d4feb23a8 (patch)
treee8889dd536947da4eb56423739010d26fa496a36
parent0c21d302a407d3a74e3b41f491bdf3960112482f (diff)
downloadacf-alpine-baselayout-52865b9bf0fa41ffb4e2e22c505ea23d4feb23a8.tar.bz2
acf-alpine-baselayout-52865b9bf0fa41ffb4e2e22c505ea23d4feb23a8.tar.xz
Interfaces: Replace io.popen with subprocess.call_capture
-rw-r--r--interfaces-model.lua39
1 files changed, 11 insertions, 28 deletions
diff --git a/interfaces-model.lua b/interfaces-model.lua
index 40b9542..6b3db5b 100644
--- a/interfaces-model.lua
+++ b/interfaces-model.lua
@@ -5,6 +5,7 @@ module (..., package.seeall)
require("modelfunctions")
fs = require("acf.fs")
format = require("acf.format")
+require("subprocess")
local servicename = "networking"
local filename = "/etc/network/interfaces"
@@ -332,19 +333,12 @@ get_status = function ()
if not fs.is_file(filename) then
status.filename.errtxt = "File not found"
end
- local cmd = path.."ip route"
- local f = io.popen(cmd)
- status.iproute.value = f:read("*a")
- f:close()
- cmd = path.."ip addr"
- f = io.popen(cmd)
- status.ipaddr.value = f:read("*a")
- f:close()
- cmd = path.."ip tunnel"
- f = io.popen(cmd)
- status.iptunnel.value = f:read("*a")
- f:close()
+ local code
+ code,status.iproute.value = subprocess.call_capture({"ip", "route"})
+ code,status.ipaddr.value = subprocess.call_capture({"ip", "addr"})
+ code,status.iptunnel.value = subprocess.call_capture({"ip", "tunnel"})
+
return cfe({ type="group", value=status, label="Status" })
end
@@ -358,10 +352,7 @@ write_file = function (self, newfile)
end
get_interfaces = function()
- local cmd = path.."ip addr"
- local f = io.popen(cmd)
- local ipaddr = f:read("*a")
- f:close()
+ local code,ipaddr = subprocess.call_capture({"ip", "addr"})
-- now parse the result to find the interfaces
local retval = {}
for line in string.gmatch(ipaddr, "[^\n]*\n?") do
@@ -374,10 +365,7 @@ get_interfaces = function()
end
get_addresses = function()
- local cmd = path.."ip addr"
- local f = io.popen(cmd)
- local ipaddr = f:read("*a")
- f:close()
+ local code,ipaddr = subprocess.call_capture({"ip", "addr"})
-- now parse the result to find the interfaces and IP addresses
local retval = {}
local interface
@@ -402,10 +390,8 @@ ifup_by_name = function (self, ifuprequest)
local success = modelfunctions.validateselect(ifuprequest.value.name)
if success then
name = ifuprequest.value.name.value or ""
- local cmd = path.."ifup "..format.escapespecialcharacters(name).." 2>&1"
- local f = io.popen(cmd)
- ifuprequest.descr = f:read("*a")
- f:close()
+ local code
+ code,ifuprequest.descr = subprocess.call_capture({"ifup", name, stderr=subprocess.STDOUT})
if ifuprequest.descr == "" then
ifuprequest.descr = "Interface up"
@@ -428,10 +414,7 @@ ifdown_by_name = function (self, ifdownrequest)
local success = modelfunctions.validateselect(ifdownrequest.value.name)
if success then
name = ifdownrequest.value.name.value or ""
- local cmd = path.."ifdown "..format.escapespecialcharacters(name).." 2>&1"
- local f = io.popen(cmd)
- ifdownrequest.descr = f:read("*a")
- f:close()
+ code,ifdownrequest.descr = subprocess.call_capture({"ifdown", name, stderr=subprocess.STDOUT})
if ifdownrequest.descr == "" then
ifdownrequest.descr = "Interface down"