X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fsys%2Fluasrc%2Fsys.lua;h=54f7f2b1a97cf858d200c02fed0630f48bacbb0e;hp=2819c338e771125deecfad0268c3ee134089ae2d;hb=216264b6e4eff411e6051bd993726cefdfbd44b5;hpb=4b0d5f9205de41d772e5f393123ceafed1c92c6c diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 2819c338e..54f7f2b1a 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -175,7 +175,7 @@ function sysinfo() local memcached = tonumber(meminfo:match("\nCached:%s*(%d+)")) local memfree = tonumber(meminfo:match("MemFree:%s*(%d+)")) local membuffers = tonumber(meminfo:match("Buffers:%s*(%d+)")) - local bogomips = tonumber(cpuinfo:match("BogoMIPS.-:%s*([^\n]+)")) + local bogomips = tonumber(cpuinfo:match("[Bb]ogo[Mm][Ii][Pp][Ss].-: ([^\n]+)")) or 0 local system = cpuinfo:match("system type\t+: ([^\n]+)") or @@ -183,9 +183,10 @@ function sysinfo() cpuinfo:match("model name\t+: ([^\n]+)") local model = + luci.util.pcdata(fs.readfile("/tmp/sysinfo/model")) or cpuinfo:match("machine\t+: ([^\n]+)") or cpuinfo:match("Hardware\t+: ([^\n]+)") or - fs.readfile("/proc/diag/model") or + luci.util.pcdata(fs.readfile("/proc/diag/model")) or nixio.uname().machine or system @@ -240,32 +241,36 @@ function net.conntrack(callback) for line in io.lines("/proc/net/nf_conntrack") do line = line:match "^(.-( [^ =]+=).-)%2" local entry, flags = _parse_mixed_record(line, " +") - entry.layer3 = flags[1] - entry.layer4 = flags[3] - for i=1, #entry do - entry[i] = nil - end + if flags[6] ~= "TIME_WAIT" then + entry.layer3 = flags[1] + entry.layer4 = flags[3] + for i=1, #entry do + entry[i] = nil + end - if callback then - callback(entry) - else - connt[#connt+1] = entry + if callback then + callback(entry) + else + connt[#connt+1] = entry + end end end elseif fs.access("/proc/net/ip_conntrack", "r") then for line in io.lines("/proc/net/ip_conntrack") do line = line:match "^(.-( [^ =]+=).-)%2" local entry, flags = _parse_mixed_record(line, " +") - entry.layer3 = "ipv4" - entry.layer4 = flags[1] - for i=1, #entry do - entry[i] = nil - end + if flags[4] ~= "TIME_WAIT" then + entry.layer3 = "ipv4" + entry.layer4 = flags[1] + for i=1, #entry do + entry[i] = nil + end - if callback then - callback(entry) - else - connt[#connt+1] = entry + if callback then + callback(entry) + else + connt[#connt+1] = entry + end end end else @@ -302,7 +307,9 @@ function net.defaultroute6() local route net.routes6(function(rt) - if rt.dest:prefix() == 0 and (not route or route.metric > rt.metric) then + if rt.dest:prefix() == 0 and rt.device ~= "lo" and + (not route or route.metric > rt.metric) + then route = rt end end) @@ -520,6 +527,9 @@ function process.list() end k = luci.util.split(luci.util.trim(line), "%s+", nil, true) + if k[6] == "%VSZ" then + k[6] = "%MEM" + end if k[1] == "PID" then break end @@ -780,41 +790,55 @@ function init.names() return names end ---- Test whether the given init script is enabled +--- Get the index of he given init script -- @param name Name of the init script --- @return Boolean indicating whether init is enabled -function init.enabled(name) +-- @return Numeric index value +function init.index(name) if fs.access(init.dir..name) then - return ( call(init.dir..name.." enabled") == 0 ) + return call("env -i sh -c 'source %s%s enabled; exit ${START:-255}' >/dev/null" + %{ init.dir, name }) end - return false end ---- Get the index of he given init script --- @param name Name of the init script --- @return Numeric index value -function init.index(name) +local function init_action(action, name) if fs.access(init.dir..name) then - return call("source "..init.dir..name.." enabled; exit $START") + return call("env -i %s%s %s >/dev/null" %{ init.dir, name, action }) end end +--- Test whether the given init script is enabled +-- @param name Name of the init script +-- @return Boolean indicating whether init is enabled +function init.enabled(name) + return (init_action("enabled", name) == 0) +end + --- Enable the given init script -- @param name Name of the init script -- @return Boolean indicating success function init.enable(name) - if fs.access(init.dir..name) then - return ( call(init.dir..name.." enable") == 1 ) - end + return (init_action("enable", name) == 1) end --- Disable the given init script -- @param name Name of the init script -- @return Boolean indicating success function init.disable(name) - if fs.access(init.dir..name) then - return ( call(init.dir..name.." disable") == 0 ) - end + return (init_action("disable", name) == 0) +end + +--- Start the given init script +-- @param name Name of the init script +-- @return Boolean indicating success +function init.start(name) + return (init_action("start", name) == 0) +end + +--- Stop the given init script +-- @param name Name of the init script +-- @return Boolean indicating success +function init.stop(name) + return (init_action("stop", name) == 0) end