Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI("/boot/kernel.lua")
- settings.load("/etc/settings")
- function listen()
- while true do
- local event = {os.pullEvent("bash.cmd")}
- runCmd(event[2])
- end
- end
- local args = {...}
- local oldPull = os.pullEventRaw
- local coListen = coroutine.create(listen)
- function os.pullEventRaw(sFilter)
- while true do
- local event = {oldPull()}
- if coroutine.status(coListen) == "suspended" then
- coroutine.resume(coListen, unpack(event))
- end
- if sFilter == event[1] or not sFilter then
- return unpack(event)
- end
- end
- end
- function loginShell()
- term.clear()
- term.setCursorPos(1,1)
- term.write(kernel.hostname .. " login: ")
- user = io.read()
- if settings.get(user) then
- term.clear()
- term.setCursorPos(1,1)
- term.write(user .. "'s password: ")
- pwd = textutils.serialize(hash.digest(read(" ")))
- password = textutils.serialise(settings.get(user))
- if pwd == password then
- initSession(user)
- else
- term.setCursorPos(1,2)
- term.write("Password incorrect.")
- os.sleep(3)
- loginShell()
- end
- end
- end
- if not kernel.bash.user() == nil then
- initSession(kernel.bash.user())
- else
- loginShell()
- end
- function initSession(user)
- while true do
- term.write(user .. "@" ..kernel.hostname .. "[" .. getCurrentDir(user) .. "]: ")
- local cmd = io.read()
- local cursorX,cursorY = term.getCursorPos()
- term.setCursorPos(1,cursorY)
- if cmd == "exit" then
- break
- elseif cmd == "cd ~" then
- kernel.bash.nav("/home/".. user)
- else
- shell.run(cmd)
- end
- end
- end
- function getCurrentDir(user)
- local dir = kernel.bash.dir()
- if dir =="/home/".. user then
- return "~/"
- else
- return "/"..dir
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement