Piorjade

ComputerCraft WebBrowser (german)

Jan 11th, 2015
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.35 KB | None | 0 0
  1. local x,y = term.getSize()
  2. rednet.open("top")
  3. local EditingValue = "";
  4.  
  5. function rednetV()
  6. return "2.4"
  7. end
  8.  
  9. title = "G-Net " ..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 reDirect(url)
  23. website = url
  24. loadWebpage()
  25. end
  26.  
  27. function createSite(websitename) --OPENNEXISGATES
  28. fs.delete("startup")
  29. startup = fs.open("startup", "w")
  30. startup.writeLine("websitename = \"" ..websitename.. "\"")
  31. servercode = [[
  32.  
  33. local enableSearching = true --Change to false if you don't want bots to search your site
  34. local password = os.getComputerID() --Change if you want a custom password
  35.  
  36. function record(text)
  37. print(text)
  38. log = fs.open("rednet.log", "w")
  39. log.writeLine(text)
  40. log.close()
  41. end
  42.  
  43. local x,y = term.getSize()
  44. local cPrint = function(text)
  45. local x2,y2 = term.getCursorPos()
  46. term.setCursorPos(math.ceil((x / 2) - (text:len() / 2)), y2)
  47.  
  48. print(text)
  49. end
  50.  
  51. rednet.open("top")
  52. term.clear()
  53. cPrint("Hosting " ..websitename.. "...\n")
  54. cPrint("Go to " ..websitename.. "/editor to edit it! (PASS: " ..os.getComputerID().. ")\n")
  55. test = fs.open(websitename, "r")
  56. fileContents = test:readAll()
  57. test.close()
  58. while true do
  59. sleep(0)
  60. id, message = rednet.receive()
  61. if message == websitename then
  62. record(" [" ..os.time().."] [" ..id.. "] Pinged Website.")
  63. rednet.send(id, fileContents)
  64. record(" [" ..os.time().."] [" ..id.. "] Received Data")
  65. elseif message == websitename.. "/editor" then
  66. rednet.send(id, "EditorMode")
  67. rednet.send(id, tostring(password))
  68. rednet.send(id, fileContents)
  69. elseif message == "rednet.api.ping.searchengine" and enableSearching == true then
  70. rednet.send(id, websitename)
  71. record(" [" ..os.time().."] [" ..id.. "] Searched by &e0!") --I made it fail on purpose :P
  72. elseif message == websitename.. "/editor EDITED COMPLED!" then
  73. id, message = rednet.receive(0.001)
  74. fs.delete(websitename)
  75. webpage = fs.open(websitename, "w")
  76. webpage.write(message)
  77. webpage.close()
  78.  
  79.  
  80. test = fs.open(websitename, "r")
  81. fileContents = test:readAll()
  82. test.close()
  83. record(" [" ..os.time().."] [" ..id.. "] Updated Website!")
  84. end
  85. end
  86. ]]
  87.  
  88. startup.writeLine(servercode)
  89. startup.close()
  90. os.reboot()
  91. end
  92.  
  93. local Address = function()
  94. text = "rdnt://"
  95. term.setCursorPos(math.ceil((x / 2) - (text:len() / 2)), 2)
  96. term.clearLine()
  97.  
  98. write("rdnt://")
  99. website = read()
  100. loadWebpage()
  101. end
  102.  
  103. function done()
  104. term.setCursorPos(1, y)
  105. name = "F5 = Neu Laden"
  106. write("STRG = Adresse eingeben")
  107. term.setCursorPos(x - name:len(), y)
  108. write(name)
  109.  
  110. while true do
  111. sleep(0) -- stop crashing
  112. e, k = os.pullEvent("key")
  113. if k == 63 then
  114. loadWebpage()
  115. break
  116. elseif k == 29 then
  117. Address()
  118. break
  119. end
  120. end
  121. end
  122.  
  123.  
  124. loadWebpage = function()
  125. term.clear()
  126. term.setCursorPos(1,1)
  127. cPrint(title)
  128. cPrint("rdnt://" ..website.. "\n")
  129. if website == "home" then
  130. print("Willkommen im G-Net Explorer! Fuer dieses Programm brauchst du ein modem auf der oberen Seite.")
  131. print("Um eine WebSite zu hosten: ")
  132. print("rdnt://newsite ")
  133. print(" -ComputerCraftFan11 (editiert von Piorjade) ")
  134. elseif website == "newsite" then
  135. print("Willst du wirklich aus diesem PC einen WebServer machen?")
  136. cPrint("Y = Ja N = Nein")
  137. while true do
  138. e, k = os.pullEvent("char")
  139. if k == "y" or k == "n" then
  140. break
  141. end
  142. end
  143.  
  144. if k == "y" then
  145. term.clear()
  146. term.setCursorPos(1,1)
  147. title = "G-Net Servers " ..rednetV()
  148. cPrint(title)
  149. print("Willkommen in G-Net Servers. Bitte den Namen der WebSite eingeben: ")
  150. websitename = read()
  151. rednet.broadcast(websitename)
  152. i, me = rednet.receive(0.001)
  153. if me == nil then
  154. print("Danke! Diese WebSite wird auf dieser Datei laufen:\n" ..websitename.. "\n")
  155. write("Bist du dir sicher? (Y = Weiter, V = Editieren)")
  156. input = read()
  157. if input == "Y" or input == "y" then
  158. if fs.exists(websitename) == false then
  159. print("Bitte erstelle " ..websitename.. " zuerst!")
  160. sleep(0.5)
  161. shell.run("edit", websitename)
  162. end
  163. term.clear()
  164. term.setCursorPos(1,1)
  165. createSite(websitename)
  166. elseif input == "V" or input == "v" then
  167. shell.run("edit", websitename)
  168. term.clear()
  169. term.setCursorPos(1,1)
  170. createSite(websitename)
  171. end
  172. else
  173. print("Entschuldigung, diese WebSite ist bereits vergeben.")
  174. end
  175. end
  176. else
  177. title = "G-Net Explorer " ..rednetV()
  178. rednet.broadcast(website)
  179. print("Verbinde...")
  180. id, message = rednet.receive(0.1)
  181. if message == nil then
  182. print("404 Error: WebSite konnte nicht geladen werden.")
  183. elseif message == "EditorMode" then
  184. id, password = rednet.receive(0.1)
  185. id, EditingValue = rednet.receive(0.1)
  186. write("Passwort: ")
  187. input = read("*")
  188. if tostring(password) == input then
  189. fs.delete(".cache/" ..website)
  190. editor = fs.open(".websiteedited", "w")
  191. if editor then
  192. editor.writeLine(EditingValue)
  193. end
  194. editor.close()
  195.  
  196. shell.run("edit", ".websiteedited")
  197.  
  198. edited = fs.open(".websiteedited", "r")
  199. editwebpage = edited.readAll()
  200. edited.close()
  201.  
  202. rednet.broadcast(website.. " EDITED COMPLED!")
  203. rednet.broadcast(editwebpage)
  204. website = "home"
  205. loadWebpage()
  206.  
  207. else
  208.  
  209. website = "home"
  210. loadWebpage()
  211.  
  212. end
  213. else
  214. if fs.exists(".cache/" ..website) then fs.delete(".cache/" ..website) end
  215. webpage = fs.open(".cache/" ..website, "w")
  216. webpage.write(message)
  217. webpage.close()
  218. term.clear()
  219. term.setCursorPos(1,1)
  220. cPrint(title)
  221. cPrint("rdnt://" ..website.. "\n")
  222. shell.run(".cache/" ..website)
  223. end
  224. end
  225.  
  226. done()
  227. end
  228.  
  229. loadWebpage()
Advertisement
Add Comment
Please, Sign In to add comment