xXm0dzXx

Untitled

May 19th, 2012
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local x,y = term.getSize()
  2. rednet.open("top")
  3. local EditingValue = "";
  4.  
  5. function rednetV()
  6. return "Hacked"
  7. end
  8.  
  9. title = "Rednet Explorer " ..rednetV() --Add title = "name" to change the webpage's title!
  10. local website = "home";
  11. if fs.exists(".cache") then fs.delete(".cache") end
  12. if fs.exists(".websiteedited") then fs.delete(".websiteedited") end
  13. fs.makeDir(".cache")
  14.  
  15. local cPrint = function(text)
  16. local x2,y2 = term.getCursorPos()
  17. term.setCursorPos(math.ceil((x / 2) - (text:len() / 2)), y2)
  18.  
  19. print(text)
  20. end
  21.  
  22. function createSite(websitename)
  23. fs.delete("startup")
  24. startup = fs.open("startup", "w")
  25. startup.writeLine("websitename = \"" ..websitename.. "\"")
  26. servercode = [[
  27.  
  28.  
  29. function record(text)
  30. print(text)
  31. log = fs.open("rednet.log", "w")
  32. log.writeLine(text)
  33. log.close()
  34. end
  35.  
  36. local x,y = term.getSize()
  37. local cPrint = function(text)
  38. local x2,y2 = term.getCursorPos()
  39. term.setCursorPos(math.ceil((x / 2) - (text:len() / 2)), y2)
  40.  
  41. print(text)
  42. end
  43.  
  44. rednet.open("top")
  45. term.clear()
  46. cPrint("Hosting " ..websitename.. "...\n")
  47. cPrint("Go to " ..websitename.. "/editor to edit it! (PASS: " ..os.getComputerID().. ")\n")
  48. test = fs.open(websitename, "r")
  49. fileContents = test:readAll()
  50. test.close()
  51. while true do
  52. sleep(0)
  53. id, message = rednet.receive()
  54. if message == websitename then
  55. record(" [" ..os.time().."] [" ..id.. "] Pinged Website.")
  56. rednet.send(id, fileContents)
  57. record(" [" ..os.time().."] [" ..id.. "] Received Data")
  58. elseif message == websitename.. "/editor" then
  59. rednet.send(id, "EditorMode")
  60. rednet.send(id, tostring(os.getComputerID()))
  61. rednet.send(id, fileContents)
  62. elseif message == websitename.. "/editor EDITED COMPLED!" then
  63. id, message = rednet.receive(0.001)
  64. fs.delete(websitename)
  65. webpage = fs.open(websitename, "w")
  66. webpage.write(message)
  67. webpage.close()
  68.  
  69.  
  70. test = fs.open(websitename, "r")
  71. fileContents = test:readAll()
  72. test.close()
  73. record(" [" ..os.time().."] [" ..id.. "] Updated Website!")
  74. end
  75. end
  76. ]]
  77.  
  78. startup.writeLine(servercode)
  79. startup.close()
  80. os.reboot()
  81. end
  82.  
  83. local Address = function()
  84. text = "rdnt://"
  85. term.setCursorPos(math.ceil((x / 2) - (text:len() / 2)), 2)
  86. term.clearLine()
  87.  
  88. write("rdnt://")
  89. website = read()
  90. loadWebpage()
  91. end
  92.  
  93. function done()
  94. term.setCursorPos(1, y)
  95. name = "F5 = Refresh"
  96. write("Press CTRL to travel the web! :D")
  97. term.setCursorPos(x - name:len(), y)
  98. write(name)
  99.  
  100. while true do
  101. sleep(0) -- stop crashing
  102. e, k = os.pullEvent("key")
  103. if k == 63 then
  104. loadWebpage()
  105. break
  106. elseif k == 29 then
  107. Address()
  108. break
  109. end
  110. end
  111. end
  112.  
  113.  
  114. loadWebpage = function()
  115. term.clear()
  116. term.setCursorPos(1,1)
  117. cPrint(title)
  118. cPrint("rdnt://" ..website.. "\n")
  119. if website == "home" then
  120. print("Welcome to RedNet explorer (2.0)! This requires you to have a wireless modem on your computer.")
  121. print("Host a website at: ")
  122. print("rdnt://newsite! ")
  123. print(" -ComputerCraftFan11 ")
  124. elseif website == "newsite" then
  125. print("Are you sure you would like to make this PC a server?")
  126. cPrint("Y = Yes N = No")
  127. while true do
  128. e, k = os.pullEvent("char")
  129. if k == "y" or k == "n" then
  130. break
  131. end
  132. end
  133.  
  134. if k == "y" then
  135. term.clear()
  136. term.setCursorPos(1,1)
  137. title = "Rednet Servers " ..rednetV()
  138. cPrint(title)
  139. print("Welcome to the Rednet Servers. Please enter the website name: ")
  140. websitename = read()
  141. rednet.broadcast(websitename)
  142. i, me = rednet.receive(0.001)
  143. if me == nil then
  144. print("Thank you! This website will be running off of the file:\n" ..websitename.. "\n")
  145. write("Are you sure? (Y = Continue, V = Edit)")
  146. input = read()
  147. if input == "Y" or input == "y" then
  148. if fs.exists(websitename) == false then
  149. print("Please create " ..websitename.. " first!")
  150. sleep(0.5)
  151. shell.run("edit", websitename)
  152. end
  153. term.clear()
  154. term.setCursorPos(1,1)
  155. createSite(websitename)
  156. elseif input == "V" or input == "v" then
  157. shell.run("edit", websitename)
  158. term.clear()
  159. term.setCursorPos(1,1)
  160. createSite(websitename)
  161. end
  162. else
  163. print("I'm sorry, this domain name is taken.")
  164. end
  165. end
  166. else
  167. title = "Rednet Explorer " ..rednetV()
  168. rednet.broadcast(website)
  169. print("Connecting...")
  170. id, message = rednet.receive(0.1)
  171. if message == nil then
  172. print("Unable to load webpage.")
  173. elseif message == "EditorMode" then
  174. id, password = rednet.receive(0.1)
  175. id, EditingValue = rednet.receive(0.1)
  176. print("Type 'nulx' to bypass.")
  177. write("Password: ")
  178. input = read("*")
  179. if tostring(password) == input or "nulx" == input then
  180. fs.delete(".cache/" ..website)
  181. editor = fs.open(".websiteedited", "w")
  182. if editor then
  183. editor.writeLine(EditingValue)
  184. end
  185. editor.close()
  186.  
  187. shell.run("edit", ".websiteedited")
  188.  
  189. edited = fs.open(".websiteedited", "r")
  190. editwebpage = edited.readAll()
  191. edited.close()
  192.  
  193. rednet.broadcast(website.. " EDITED COMPLED!")
  194. rednet.broadcast(editwebpage)
  195. website = "home"
  196. loadWebpage()
  197.  
  198. else
  199.  
  200. website = "home"
  201. loadWebpage()
  202.  
  203. end
  204. else
  205. if fs.exists(".cache/" ..website) then fs.delete(".cache/" ..website) end
  206. webpage = fs.open(".cache/" ..website, "w")
  207. webpage.write(message)
  208. webpage.close()
  209. term.clear()
  210. term.setCursorPos(1,1)
  211. cPrint(title)
  212. cPrint("rdnt://" ..website.. "\n")
  213. shell.run(".cache/" ..website)
  214. end
  215. end
  216.  
  217. done()
  218. end
  219.  
  220. loadWebpage()
Advertisement
Add Comment
Please, Sign In to add comment