* luci-0.8: backported shadow password support and luci.sys.init api
This commit is contained in:
parent
cf5fbff0a2
commit
2c8ed3f1ea
1 changed files with 72 additions and 4 deletions
|
@ -437,11 +437,29 @@ function user.checkpasswd(username, password)
|
|||
local account = user.getuser(username)
|
||||
|
||||
if account then
|
||||
if account.passwd == "!" then
|
||||
return true
|
||||
else
|
||||
return (account.passwd == posix.crypt(password, account.passwd))
|
||||
local pwd = account.passwd
|
||||
local shadowpw
|
||||
if #pwd == 1 then
|
||||
if luci.fs.stat("/etc/shadow") then
|
||||
if not pcall(function()
|
||||
for l in io.lines("/etc/shadow") do
|
||||
shadowpw = l:match("^%s:([^:]+)" % username)
|
||||
if shadowpw then
|
||||
pwd = shadowpw
|
||||
break
|
||||
end
|
||||
end
|
||||
end) then
|
||||
return nil, "Unable to access shadow-file"
|
||||
end
|
||||
end
|
||||
|
||||
if pwd == "!" then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return (pwd == posix.crypt(password, pwd))
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -512,6 +530,56 @@ function wifi.iwscan(iface)
|
|||
end
|
||||
|
||||
|
||||
--- LuCI system utilities / init related functions.
|
||||
-- @class module
|
||||
-- @name luci.sys.init
|
||||
init = {}
|
||||
init.dir = "/etc/init.d/"
|
||||
|
||||
--- Get the names of all installed init scripts
|
||||
-- @return Table containing the names of all inistalled init scripts
|
||||
function init.names()
|
||||
local names = { }
|
||||
for _, name in ipairs(luci.fs.glob(init.dir.."*")) do
|
||||
names[#names+1] = luci.fs.basename(name)
|
||||
end
|
||||
return names
|
||||
end
|
||||
|
||||
--- Test whether the given init script is enabled
|
||||
-- @return Boolean indicating whether init is enabled
|
||||
function init.enabled(name)
|
||||
if luci.fs.access(init.dir..name) then
|
||||
return ( call(init.dir..name.." enabled") == 0 )
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
--- Get the index of he given init script
|
||||
-- @return Numeric index value
|
||||
function init.index(name)
|
||||
if luci.fs.access(init.dir..name) then
|
||||
return call("source "..init.dir..name.." && exit $START")
|
||||
end
|
||||
end
|
||||
|
||||
--- Enable the given init script
|
||||
-- @return Boolean indicating success
|
||||
function init.enable(name)
|
||||
if luci.fs.access(init.dir..name) then
|
||||
return ( call(init.dir..name.." enable") == 0 )
|
||||
end
|
||||
end
|
||||
|
||||
--- Disable the given init script
|
||||
-- @return Boolean indicating success
|
||||
function init.disable(name)
|
||||
if luci.fs.access(init.dir..name) then
|
||||
return ( call(init.dir..name.." disable") == 0 )
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Internal functions
|
||||
|
||||
function _parse_delimited_table(iter, delimiter)
|
||||
|
|
Loading…
Reference in a new issue