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
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
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
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)
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
--- Retrieve the current user password hash.
-- @param username String containing the username to retrieve the password for
-- @return String containing the hash or nil if no password is set.
+-- @return Password database entry
function user.getpasswd(username)
local pwe = nixio.getsp and nixio.getsp(username) or nixio.getpw(username)
local pwh = pwe and (pwe.pwdp or pwe.passwd)
if not pwh or #pwh < 1 or pwh == "!" or pwh == "x" then
- return nil
+ return nil, pwe
else
- return pwh
+ return pwh, pwe
end
end
-- @param pass String containing the password to compare
-- @return Boolean indicating wheather the passwords are equal
function user.checkpasswd(username, pass)
- local pwh = user.getpasswd(username)
- if pwh and nixio.crypt(pass, pwh) ~= pwh then
- return false
- else
- return true
+ local pwh, pwe = user.getpasswd(username)
+ if pwe then
+ return (pwh == nil or nixio.crypt(pass, pwh) == pwh)
end
+ return false
end
--- Change the password of given user.
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