From 76982655fa433edd885bbb80bbe74e82fca527e2 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Wed, 6 Aug 2008 20:11:15 +0000 Subject: [PATCH] Moved luci.sys.exec, luci.sys.execl and luci.sys.bigendian to luci.util --- .../luasrc/controller/splash/splash.lua | 2 +- .../luci-splash/root/usr/sbin/luci-splash | 4 +- libs/cbi/luasrc/cbi.lua | 2 +- libs/core/luasrc/sys.lua | 67 +++++-------------- libs/core/luasrc/sys/iptparser.lua | 3 +- libs/core/luasrc/util.lua | 39 +++++++++++ libs/ipkg/luasrc/model/ipkg.lua | 3 +- .../luasrc/controller/admin/system.lua | 2 +- .../luasrc/controller/admin/uci.lua | 2 +- .../luasrc/model/cbi/admin_network/dhcp.lua | 3 +- .../luasrc/model/cbi/admin_wifi/devices.lua | 2 +- .../luasrc/controller/mini/system.lua | 2 +- .../admin-mini/luasrc/controller/mini/uci.lua | 2 +- 13 files changed, 69 insertions(+), 64 deletions(-) diff --git a/applications/luci-splash/luasrc/controller/splash/splash.lua b/applications/luci-splash/luasrc/controller/splash/splash.lua index 7dbf488a4e..dbd266f461 100644 --- a/applications/luci-splash/luasrc/controller/splash/splash.lua +++ b/applications/luci-splash/luasrc/controller/splash/splash.lua @@ -10,7 +10,7 @@ end function action_dispatch() local mac = luci.sys.net.ip4mac(luci.http.getenv("REMOTE_ADDR")) or "" - local status = luci.sys.execl("luci-splash status "..mac)[1] + local status = luci.util.execl("luci-splash status "..mac)[1] if #mac > 0 and ( status == "whitelisted" or status == "lease" ) then luci.http.redirect(luci.dispatcher.build_url()) else diff --git a/applications/luci-splash/root/usr/sbin/luci-splash b/applications/luci-splash/root/usr/sbin/luci-splash index 72456c01e6..0b645fab75 100755 --- a/applications/luci-splash/root/usr/sbin/luci-splash +++ b/applications/luci-splash/root/usr/sbin/luci-splash @@ -1,7 +1,7 @@ #!/usr/bin/lua require("luci.http") -require("luci.sys") +require("luci.util") require("luci.model.uci") -- Init state session @@ -140,7 +140,7 @@ end function listrules() local cmd = "iptables -t nat -L luci_splash_leases | grep RETURN |" cmd = cmd .. "egrep -io [0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+" - return luci.util.split(luci.sys.exec(cmd)) + return luci.util.split(luci.util.exec(cmd)) end diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua index 8c8f68b24a..d5be48edba 100644 --- a/libs/cbi/luasrc/cbi.lua +++ b/libs/cbi/luasrc/cbi.lua @@ -167,7 +167,7 @@ function Map.parse(self, ...) for i, config in ipairs(self.parsechain) do uci.commit(config) if luci.config.uci_oncommit and luci.config.uci_oncommit[config] then - luci.sys.exec(luci.config.uci_oncommit[config]) + luci.util.exec(luci.config.uci_oncommit[config]) end -- Refresh data because commit changes section names diff --git a/libs/core/luasrc/sys.lua b/libs/core/luasrc/sys.lua index 8e8aab7315..c291f67896 100644 --- a/libs/core/luasrc/sys.lua +++ b/libs/core/luasrc/sys.lua @@ -31,41 +31,6 @@ require("luci.bits") require("luci.util") require("luci.fs") ---- Test whether the current system is operating in big endian mode. --- @return Boolean value indicating whether system is big endian -function bigendian() - return string.byte(string.dump(function() end), 7) == 0 -end - ---- Execute given commandline and gather stdout. --- @param command String containing command to execute --- @return String containing the command's stdout -function exec(command) - local pp = io.popen(command) - local data = pp:read("*a") - pp:close() - - return data -end - ---- Execute given commandline and gather stdout. --- @param command String containing the command to execute --- @return Table containing the command's stdout splitted up in lines -function execl(command) - local pp = io.popen(command) - local line = "" - local data = {} - - while true do - line = pp:read() - if (line == nil) then break end - table.insert(data, line) - end - pp:close() - - return data -end - --- Invoke the luci-flash executable to write an image to the flash memory. -- @param kpattern Pattern of files to keep over flash process -- @return Return value of os.execute() @@ -97,10 +62,12 @@ function hostname() end --- Returns the contents of a documented referred by an URL. --- @param url The URL to retrieve +-- @param url The URL to retrieve +-- @param stream Return a stream instead of a buffer -- @return String containing the contents of given the URL -function httpget(url) - return exec("wget -qO- '"..url:gsub("'", "").."'") +function httpget(url, stream) + local source = stream and io.open or luci.util.exec + return source("wget -qO- '"..url:gsub("'", "").."'") end --- Returns the absolute path to LuCI base directory. @@ -146,21 +113,21 @@ function sysinfo() local c7 = "cat /proc/meminfo|grep MemFree|awk {' print $2 '} 2>/dev/null" local c8 = "cat /proc/meminfo|grep Buffers|awk {' print $2 '} 2>/dev/null" - local system = luci.util.trim(exec(c1)) + local system = luci.util.trim(luci.util.exec(c1)) local model = "" - local memtotal = luci.util.trim(exec(c5)) - local memcached = luci.util.trim(exec(c6)) - local memfree = luci.util.trim(exec(c7)) - local membuffers = luci.util.trim(exec(c8)) + local memtotal = luci.util.trim(luci.util.exec(c5)) + local memcached = luci.util.trim(luci.util.exec(c6)) + local memfree = luci.util.trim(luci.util.exec(c7)) + local membuffers = luci.util.trim(luci.util.exec(c8)) local perc_memfree = math.floor((memfree/memtotal)*100) local perc_membuffers = math.floor((membuffers/memtotal)*100) local perc_memcached = math.floor((memcached/memtotal)*100) if system == "" then - system = luci.util.trim(exec(c2)) - model = luci.util.trim(exec(c3)) + system = luci.util.trim(luci.util.exec(c2)) + model = luci.util.trim(luci.util.exec(c3)) else - model = luci.util.trim(exec(c4)) + model = luci.util.trim(luci.util.exec(c4)) end return system, model, memtotal, memcached, membuffers, memfree, perc_memfree, perc_membuffers, perc_memcached @@ -169,7 +136,7 @@ end --- Retrieves the output of the "logread" command. -- @return String containing the current log buffer function syslog() - return exec("logread") + return luci.util.exec("logread") end --- Generates a random id with specified length. @@ -305,7 +272,7 @@ function net.hexip4(hex, be) return nil end - be = be or bigendian() + be = be or luci.util.bigendian() local hexdec = luci.bits.Hex2Dec @@ -442,7 +409,7 @@ wifi = {} --- Get iwconfig output for all wireless devices. -- @return Table of tables containing the iwconfing output for each wifi device function wifi.getiwconfig() - local cnt = exec("/usr/sbin/iwconfig 2>/dev/null") + local cnt = luci.util.exec("/usr/sbin/iwconfig 2>/dev/null") local iwc = {} for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n\n")) do @@ -459,7 +426,7 @@ end --- Get iwlist scan output from all wireless devices. -- @return Table of tables contaiing all scan results function wifi.iwscan() - local cnt = exec("iwlist scan 2>/dev/null") + local cnt = luci.util.exec("iwlist scan 2>/dev/null") local iws = {} for i, l in pairs(luci.util.split(luci.util.trim(cnt), "\n\n")) do diff --git a/libs/core/luasrc/sys/iptparser.lua b/libs/core/luasrc/sys/iptparser.lua index 6450c30729..2e8085a55d 100644 --- a/libs/core/luasrc/sys/iptparser.lua +++ b/libs/core/luasrc/sys/iptparser.lua @@ -20,7 +20,6 @@ $Id$ ]]-- module("luci.sys.iptparser", package.seeall) -require("luci.sys") require("luci.util") @@ -180,7 +179,7 @@ function IptParser._parse_rules( self ) for i, tbl in ipairs({ "filter", "nat", "mangle" }) do - for i, rule in ipairs(luci.sys.execl("iptables -t " .. tbl .. " --line-numbers -nxvL")) do + for i, rule in ipairs(luci.util.execl("iptables -t " .. tbl .. " --line-numbers -nxvL")) do if rule:find( "Chain " ) == 1 then diff --git a/libs/core/luasrc/util.lua b/libs/core/luasrc/util.lua index a4ea2d29f8..2f6cfad4c2 100644 --- a/libs/core/luasrc/util.lua +++ b/libs/core/luasrc/util.lua @@ -573,6 +573,45 @@ function vspairs(t) end +-- +-- System utility functions +-- + +--- Test whether the current system is operating in big endian mode. +-- @return Boolean value indicating whether system is big endian +function bigendian() + return string.byte(string.dump(function() end), 7) == 0 +end + +--- Execute given commandline and gather stdout. +-- @param command String containing command to execute +-- @return String containing the command's stdout +function exec(command) + local pp = io.popen(command) + local data = pp:read("*a") + pp:close() + + return data +end + +--- Execute given commandline and gather stdout. +-- @param command String containing the command to execute +-- @return Table containing the command's stdout splitted up in lines +function execl(command) + local pp = io.popen(command) + local line = "" + local data = {} + + while true do + line = pp:read() + if (line == nil) then break end + table.insert(data, line) + end + pp:close() + + return data +end + -- -- Coroutine safe xpcall and pcall versions modified for Luci -- original version: diff --git a/libs/ipkg/luasrc/model/ipkg.lua b/libs/ipkg/luasrc/model/ipkg.lua index 075acc4c3a..4c2716a383 100644 --- a/libs/ipkg/luasrc/model/ipkg.lua +++ b/libs/ipkg/luasrc/model/ipkg.lua @@ -26,7 +26,6 @@ limitations under the License. ]]-- module("luci.model.ipkg", package.seeall) -require("luci.sys") require("luci.util") require("luci.fs") @@ -89,7 +88,7 @@ function _lookup(act, pkg) cmd = cmd .. " '" .. pkg:gsub("'", "") .. "'" end - return _parselist(luci.sys.exec(cmd .. " 2>/dev/null")) + return _parselist(luci.util.exec(cmd .. " 2>/dev/null")) end -- Internal parser function diff --git a/modules/admin-full/luasrc/controller/admin/system.lua b/modules/admin-full/luasrc/controller/admin/system.lua index 8e3a3d7999..9abdb2abab 100644 --- a/modules/admin-full/luasrc/controller/admin/system.lua +++ b/modules/admin-full/luasrc/controller/admin/system.lua @@ -189,7 +189,7 @@ function action_backup() luci.ltn12.pump.all(luci.ltn12.source.file(backup_fpi), luci.http.write) elseif reset then luci.template.render("admin_system/applyreboot") - luci.sys.exec("mtd -r erase rootfs_data") + luci.util.exec("mtd -r erase rootfs_data") else luci.template.render("admin_system/backup", {reset_avail = reset_avail}) end diff --git a/modules/admin-full/luasrc/controller/admin/uci.lua b/modules/admin-full/luasrc/controller/admin/uci.lua index d2acdeca13..215889f85f 100644 --- a/modules/admin-full/luasrc/controller/admin/uci.lua +++ b/modules/admin-full/luasrc/controller/admin/uci.lua @@ -77,7 +77,7 @@ function action_apply() -- Search for post-commit commands for cmd, i in pairs(run) do - output = output .. cmd .. ":" .. luci.sys.exec(cmd) .. "\n" + output = output .. cmd .. ":" .. luci.util.exec(cmd) .. "\n" end end diff --git a/modules/admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/modules/admin-full/luasrc/model/cbi/admin_network/dhcp.lua index 20adcdf100..f85eb52198 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_network/dhcp.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_network/dhcp.lua @@ -13,6 +13,7 @@ $Id$ ]]-- require("luci.model.uci") require("luci.sys") +require("luci.util") m = Map("dhcp", "DHCP") @@ -46,7 +47,7 @@ s:option(Value, "netmask", translate("netmask")).optional = true s:option(Flag, "force").optional = true -for i, line in pairs(luci.sys.execl("dnsmasq --help dhcp")) do +for i, line in pairs(luci.util.execl("dnsmasq --help dhcp")) do k, v = line:match("([^ ]+) +([^ ]+)") s:option(Value, "dhcp"..k, v).optional = true end diff --git a/modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua b/modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua index d463157d19..de22619192 100644 --- a/modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua +++ b/modules/admin-full/luasrc/model/cbi/admin_wifi/devices.lua @@ -33,7 +33,7 @@ t:value("prism2") --[[ require("luci.sys") local c = ". /etc/functions.sh;for i in /lib/wifi/*;do . $i;done;echo $DRIVERS" -for driver in luci.sys.execl(c)[1]:gmatch("[^ ]+") do +for driver in luci.util.execl(c)[1]:gmatch("[^ ]+") do t:value(driver) end ]]-- diff --git a/modules/admin-mini/luasrc/controller/mini/system.lua b/modules/admin-mini/luasrc/controller/mini/system.lua index ef1489b9b1..0df4f8cc47 100644 --- a/modules/admin-mini/luasrc/controller/mini/system.lua +++ b/modules/admin-mini/luasrc/controller/mini/system.lua @@ -62,7 +62,7 @@ function action_backup() luci.ltn12.pump.all(luci.ltn12.source.file(backup_fpi), luci.http.write) elseif reset then luci.template.render("mini/applyreboot") - luci.sys.exec("mtd -r erase rootfs_data") + luci.util.exec("mtd -r erase rootfs_data") else luci.template.render("mini/backup", {reset_avail = reset_avail}) end diff --git a/modules/admin-mini/luasrc/controller/mini/uci.lua b/modules/admin-mini/luasrc/controller/mini/uci.lua index b56a70287e..4eceae6293 100644 --- a/modules/admin-mini/luasrc/controller/mini/uci.lua +++ b/modules/admin-mini/luasrc/controller/mini/uci.lua @@ -74,7 +74,7 @@ function action_apply() -- Search for post-commit commands for cmd, i in pairs(run) do - output = output .. cmd .. ":" .. luci.sys.exec(cmd) .. "\n" + output = output .. cmd .. ":" .. luci.util.exec(cmd) .. "\n" end end -- 2.30.2