return os.execute(cmd)
end
+-- Returns the enivornment
+getenv = posix.getenv
+
-- Returns the hostname
function hostname()
return io.lines("/proc/sys/kernel/hostname")()
end
+-- Generates a random key of length BYTES
+function uniqueid(bytes)
+ local fp = io.open("/dev/urandom")
+ local chunk = { fp:read(bytes):byte(1, bytes) }
+ fp:close()
+
+ local hex = ""
+
+ local pattern = "%02X"
+ for i, byte in ipairs(chunk) do
+ hex = hex .. pattern:format(byte)
+ end
+
+ return hex
+end
+
+
group = {}
group.getgroup = posix.getgroup
user.getuser = posix.getpasswd
-- checks whether a string matches the password of a certain system user
-function user.checkpasswd(user, password)
- local account = user.getuser(user)
- if posix.crypt and account then
- return (account.passwd == posix.crypt(account.passwd, password))
+function user.checkpasswd(username, password)
+ local account = user.getuser(username)
+
+ -- FIXME: detect testing environment
+ if luci.fs.stat("/etc/shadow") and not luci.fs.access("/etc/shadow", "r") then
+ return true
+ elseif account then
+ if account.passwd == "!" then
+ return true
+ else
+ return (account.passwd == posix.crypt(password, account.passwd))
+ end
end
end