Advertisement
xXm0dzXx

Nexus N-Net

May 24th, 2012
1,003
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.28 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 = "N-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 = Refresh"
  106.     write("Press CTRL to travel the web! :D")
  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("Welcome to RedNet explorer (2.0)! This requires you to have a wireless modem on your computer.")
  131.         print("Host a website at:                ")
  132.         print("rdnt://newsite!            ")
  133.         print("   -ComputerCraftFan11    ")
  134.     elseif website == "newsite" then
  135.         print("Are you sure you would like to make this PC a server?")
  136.         cPrint("Y = Yes N = No")
  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 = "Rednet Servers " ..rednetV()
  148.             cPrint(title)
  149.             print("Welcome to the Rednet Servers. Please enter the website name: ")
  150.             websitename = read()
  151.             rednet.broadcast(websitename)
  152.             i, me = rednet.receive(0.001)
  153.             if me == nil then
  154.                 print("Thank you! This website will be running off of the file:\n" ..websitename.. "\n")
  155.                 write("Are you sure? (Y = Continue, V = Edit)")
  156.                 input = read()
  157.                 if input == "Y" or input == "y" then
  158.                     if fs.exists(websitename) == false then
  159.                         print("Please create " ..websitename.. " first!")
  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("I'm sorry, this domain name is taken.")
  174.             end
  175.         end
  176.     else
  177.         title = "Rednet Explorer " ..rednetV()
  178.         rednet.broadcast(website)
  179.         print("Connecting...")
  180.         id, message = rednet.receive(0.1)
  181.         if message == nil then
  182.             print("Unable to load webpage.")
  183.         elseif message == "EditorMode" then
  184.             id, password = rednet.receive(0.1)
  185.             id, EditingValue = rednet.receive(0.1)
  186.              write("Password: ")
  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
Advertisement