Advertisement
Guest User

bash.lua

a guest
Jun 26th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.94 KB | None | 0 0
  1. os.loadAPI("/boot/kernel.lua")
  2. settings.load("/etc/settings")
  3. function listen()
  4.     while true do
  5.         local event = {os.pullEvent("bash.cmd")}
  6.         runCmd(event[2])
  7.     end
  8. end
  9.  
  10. local args = {...}
  11.  
  12.  
  13. local oldPull = os.pullEventRaw
  14. local coListen = coroutine.create(listen)
  15. function os.pullEventRaw(sFilter)
  16.     while true do
  17.         local event = {oldPull()}
  18.         if coroutine.status(coListen) == "suspended" then
  19.             coroutine.resume(coListen, unpack(event))
  20.         end
  21.         if sFilter == event[1] or not sFilter then
  22.             return unpack(event)
  23.         end
  24.     end
  25. end
  26. function loginShell()
  27.     term.clear()
  28.     term.setCursorPos(1,1)
  29.     term.write(kernel.hostname .. " login: ")
  30.     user = io.read()
  31.     if settings.get(user) then
  32.         term.clear()
  33.         term.setCursorPos(1,1)
  34.         term.write(user .. "'s password: ")
  35.         pwd = textutils.serialize(hash.digest(read(" ")))
  36.         password = textutils.serialise(settings.get(user))
  37.         if pwd == password then
  38.             initSession(user)
  39.         else
  40.             term.setCursorPos(1,2)
  41.             term.write("Password incorrect.")
  42.             os.sleep(3)
  43.             loginShell()
  44.         end
  45.     end
  46. end
  47.  
  48. if not kernel.bash.user() == nil then
  49.     initSession(kernel.bash.user())
  50. else
  51.     loginShell()
  52. end
  53.  
  54. function initSession(user)
  55.     while true do
  56.         term.write(user .. "@" ..kernel.hostname .. "[" .. getCurrentDir(user) .. "]: ")
  57.         local cmd = io.read()
  58.         local cursorX,cursorY = term.getCursorPos()
  59.         term.setCursorPos(1,cursorY)
  60.         if cmd == "exit" then
  61.              break
  62.         elseif cmd == "cd ~" then
  63.              kernel.bash.nav("/home/".. user)
  64.         else
  65.              shell.run(cmd)
  66.         end
  67.     end
  68. end
  69.  
  70. function getCurrentDir(user)
  71.     local dir = kernel.bash.dir()
  72.     if dir =="/home/".. user then
  73.         return "~/"
  74.     else
  75.         return "/"..dir
  76.     end
  77. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement