Advertisement
MudkipTheEpic

Screen Share Server [WIP]

Feb 7th, 2013
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.67 KB | None | 0 0
  1. local listeners = {}
  2. local oTerm = {}
  3. local derp={}
  4. for k,v in pairs(term) do
  5. oTerm[k] = v
  6. end
  7. local function waitForTerminate()
  8. while true do
  9. e=os.pullEventRaw()
  10. if e=="terminate" then
  11. sT("done")
  12. for k,v in pairs(oTerm) do
  13. term[k] = v
  14. end
  15. print("Done!")
  16. error()
  17. end
  18. end
  19. end
  20. local function imitateShell()
  21. dofile("rom/programs/shell")
  22. end
  23. local function sT(stuff)
  24. for k,v in pairs(listeners) do
  25. pcall(rednet.send(k,stuff))
  26. end
  27. end
  28. local function open()
  29. for k,v in pairs(rs.getSides()) do
  30. if peripheral.getType(v) == "modem" then rednet.open(v) return true end
  31. end
  32. return false
  33. end
  34. oTerm.sR=shell.run
  35. oTerm.write2 = write
  36. oTerm.print = print
  37. local function waitForListeners()
  38. while true do
  39. event, id,msg=os.pullEvent()
  40. if event == "rednet_message" then
  41. if msg == derp.pass then
  42. rednet.send(id, "Granted")
  43. if not listeners[id] then listeners[id] = true end
  44. elseif msg == "exit" and listeners[id] == true then
  45. listeners[id] = nil
  46. else
  47. rednet.send(id, "Denied")
  48. end
  49. end
  50. end
  51. end
  52. if not open() then error("Needs modem") end
  53. term.clear()
  54. term.setCursorPos(1,5)
  55. print("What would you like your password to be?")
  56. local password=read("*")
  57. derp.pass=password
  58. print("Set password to:"..string.rep("*", string.len(password)-1)..string.sub(password, #password, #password)..".")
  59. sleep(1)
  60. term.clear()
  61. term.setCursorPos(3,7)
  62. write("Press F2 to end the screenshare!")
  63. term.setCursorPos(5,8)
  64. write("Hosting in 3..")
  65. sleep(1)
  66. write("2..")
  67. sleep(1)
  68. write("1...")
  69. sleep(1)
  70. term.clear()
  71. term.setCursorPos(1,1)
  72. term.write = function(text)
  73. sT("term.write(".. text ..")")
  74. return oTerm.write(text)
  75. end
  76. print = function(text)
  77. sT("print("..text..")")
  78. return oTerm.print(text)
  79. end
  80. write = function(text)
  81. sT("write("..text..")")
  82. return oTerm.write2(text)
  83. end
  84. term.clear = function()
  85. sT("term.clear()")
  86. return oTerm.clear()
  87. end
  88. term.clearLine = function()
  89. sT("term.clearLine()")
  90. return oTerm.clearLine()
  91. end
  92. term.setCursorPos = function(x,y)
  93. sT("term.setCursorPos("..x..", "..y..")")
  94. return oTerm.setCursorPos(x,y)
  95. end
  96. term.setCursorBlink = function(bool)
  97. if bool then
  98. sT("term.setCursorBlink(true)")
  99. else
  100. sT("term.setCursorBlink(false")
  101. end
  102. return oTerm.setCursorBlink(bool)
  103. end
  104. term.scroll = function(n)
  105. sT("term.scroll("..n..")")
  106. return oTerm.scroll(n)
  107. end
  108. term.setTextColor = function(color)
  109. sT("term.setTextColor("..color..")")
  110. return oTerm.setTextColor(color)
  111. end
  112. term.setBackgroundColor = function(color)
  113. sT("term.setBackgroundColor("..color..")")
  114. return oTerm.setBackgroundColor(color)
  115. end
  116. shell.run=function(...)
  117.         return runLine(table.concat({ ... }, " "))
  118. end
  119. parallel.waitForAny(waitForListeners, imitateShell, waitForTerminate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement