Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local listeners = {}
- local oTerm = {}
- local derp={}
- for k,v in pairs(term) do
- oTerm[k] = v
- end
- local function waitForTerminate()
- while true do
- e=os.pullEventRaw()
- if e=="terminate" then
- sT("done")
- for k,v in pairs(oTerm) do
- term[k] = v
- end
- print("Done!")
- error()
- end
- end
- end
- local function imitateShell()
- dofile("rom/programs/shell")
- end
- local function sT(stuff)
- for k,v in pairs(listeners) do
- pcall(rednet.send(k,stuff))
- end
- end
- local function open()
- for k,v in pairs(rs.getSides()) do
- if peripheral.getType(v) == "modem" then rednet.open(v) return true end
- end
- return false
- end
- oTerm.sR=shell.run
- oTerm.write2 = write
- oTerm.print = print
- local function waitForListeners()
- while true do
- event, id,msg=os.pullEvent()
- if event == "rednet_message" then
- if msg == derp.pass then
- rednet.send(id, "Granted")
- if not listeners[id] then listeners[id] = true end
- elseif msg == "exit" and listeners[id] == true then
- listeners[id] = nil
- else
- rednet.send(id, "Denied")
- end
- end
- end
- end
- if not open() then error("Needs modem") end
- term.clear()
- term.setCursorPos(1,5)
- print("What would you like your password to be?")
- local password=read("*")
- derp.pass=password
- print("Set password to:"..string.rep("*", string.len(password)-1)..string.sub(password, #password, #password)..".")
- sleep(1)
- term.clear()
- term.setCursorPos(3,7)
- write("Press F2 to end the screenshare!")
- term.setCursorPos(5,8)
- write("Hosting in 3..")
- sleep(1)
- write("2..")
- sleep(1)
- write("1...")
- sleep(1)
- term.clear()
- term.setCursorPos(1,1)
- term.write = function(text)
- sT("term.write(".. text ..")")
- return oTerm.write(text)
- end
- print = function(text)
- sT("print("..text..")")
- return oTerm.print(text)
- end
- write = function(text)
- sT("write("..text..")")
- return oTerm.write2(text)
- end
- term.clear = function()
- sT("term.clear()")
- return oTerm.clear()
- end
- term.clearLine = function()
- sT("term.clearLine()")
- return oTerm.clearLine()
- end
- term.setCursorPos = function(x,y)
- sT("term.setCursorPos("..x..", "..y..")")
- return oTerm.setCursorPos(x,y)
- end
- term.setCursorBlink = function(bool)
- if bool then
- sT("term.setCursorBlink(true)")
- else
- sT("term.setCursorBlink(false")
- end
- return oTerm.setCursorBlink(bool)
- end
- term.scroll = function(n)
- sT("term.scroll("..n..")")
- return oTerm.scroll(n)
- end
- term.setTextColor = function(color)
- sT("term.setTextColor("..color..")")
- return oTerm.setTextColor(color)
- end
- term.setBackgroundColor = function(color)
- sT("term.setBackgroundColor("..color..")")
- return oTerm.setBackgroundColor(color)
- end
- shell.run=function(...)
- return runLine(table.concat({ ... }, " "))
- end
- parallel.waitForAny(waitForListeners, imitateShell, waitForTerminate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement