Advertisement
Imgoodisher

Rednet Explorer server hosting with upload

Aug 9th, 2012
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.39 KB | None | 0 0
  1. local function makeSite(websitename) --OPENNEXISGATES
  2.                     fs.delete("/startup")
  3.                     startup = fs.open("/startup", "w")
  4.                     startup.writeLine("websitename = \"" ..websitename.. "\"")
  5.                     servercode = [[
  6. local autoUpdate = true
  7.  
  8. if fs.exists("/serverstartup") then
  9.     shell.run("/serverstartup")
  10. end
  11.  
  12. local function getPastebin(pCode, pLocation)
  13. local sCode = pCode
  14.     local sFile = pLocation
  15. local sPath = pLocation
  16.    
  17.     -- GET the contents from pastebin
  18.     local response = http.get(
  19.         "http://dl.dropbox.com/u/97263369/"..sCode
  20.         )
  21.        
  22.     if response then
  23.        
  24.         local sResponse = response.readAll()
  25.         response.close()
  26.        
  27.         local file = fs.open( sPath, "w" )
  28.         file.write( sResponse )
  29.         file.close()
  30.        
  31.     else
  32.     end
  33. end
  34.  
  35. local function getPastebin2(pCode, pLocation)
  36. local sCode = pCode
  37.     local sFile = pLocation
  38. local sPath = pLocation
  39.    
  40.     -- GET the contents from pastebin
  41.     local response = http.get(
  42.         "http://dl-web.dropbox.com/get/"..sCode
  43.         )
  44.        
  45.     if response then
  46.        
  47.         local sResponse = response.readAll()
  48.         response.close()
  49.        
  50.         local file = fs.open( sPath, "w" )
  51.         file.write( sResponse )
  52.         file.close()
  53.        
  54.     else
  55.     end
  56. end
  57.  
  58. if not fs.exists("/.FirefoxData") then
  59. fs.makeDir("/.FirefoxData")
  60. end
  61.  
  62. f = io.open("/.FirefoxData/fireServerPref", "w")
  63. f:write(websitename)
  64. f:close()
  65.  
  66.  
  67. if autoUpdate then
  68. print("Starting up...")
  69. getPastebin2("server.txt?w=a5a569d5", "/.FirefoxData/firefoxServerCompare")
  70. f = io.open("/.FirefoxData/firefoxServerCompare", "r")
  71. local serverCompare = f:read("*a")
  72. f:close()
  73. f = io.open("/.FirefoxData/firefoxServerUpdater", "r")
  74. local currentServerCompare = f:read("*a")
  75. f:close()
  76. if serverCompare ~= currentServerCompare then
  77. fs.delete("/.FirefoxData/firefoxServerUpdater")
  78. fs.move("/.FirefoxData/firefoxServerCompare", "/.FirefoxData/firefoxServerUpdater")
  79. shell.run("/.FirefoxData/firefoxServerUpdater")
  80. end
  81. end
  82.  
  83.     local system = fs.list("/" .. websitename)
  84.     for i = 1, #system do
  85.         if string.lower(system[i]) ~= system[i] then
  86.             fs.move("/" .. websitename .. "/" .. system[i], "/.FirefoxData/tempWebsiteFile")
  87. fs.move("/.FirefoxData/tempWebsiteFile", "/" .. websitename .. "/" .. string.lower(system[i]))
  88. end
  89. end
  90.  
  91. if not fs.exists("/" .. websitename .. "/home") then error("Server files missing!") end
  92.  
  93. local enableSearching = true --Change to false if you don't want bots to search your site
  94.  
  95. function record(text)
  96.     print(text)
  97. end
  98.        
  99. local x,y = term.getSize()
  100. local cPrint = function(text)
  101. local x2,y2 = term.getCursorPos()
  102. term.setCursorPos(math.ceil((x / 2) - (text:len() / 2)), y2)
  103. print(text)
  104. end
  105.  
  106. local oldx = nil
  107.     local oldy = nil
  108.     local id = nil
  109.     local event = nil
  110.     local message = nil
  111.     local checkA = nil
  112.     local subDir = nil
  113.    
  114. rednet.open("top")
  115. rednet.open("left")
  116. rednet.open("right")
  117. rednet.open("back")
  118. rednet.open("front")
  119. rednet.open("bottom")
  120. term.clear()
  121. term.setCursorPos(1, 4)
  122.     while true do
  123.         oldx, oldy = term.getCursorPos()
  124.         term.setCursorPos(1,1)
  125.         term.clearLine()
  126.         write("Hosting " ..websitename.. "...")
  127.         term.setCursorPos(1,2)
  128.         term.clearLine()
  129.         write("Press \"E\" to exit server hosting")
  130.         term.setCursorPos(1,3)
  131.         term.clearLine()
  132.         write("Auto-updating is set to: " .. tostring(autoUpdate))
  133.         term.setCursorPos(oldx, oldy)
  134.         event, id, message = os.pullEvent()
  135.         if event == "key" and id == 18 then
  136.             sleep(0.3)
  137.             term.clear()
  138.             term.setCursorPos(1,1)
  139.             break
  140.         elseif event == "rednet_message" then
  141.             if message == string.lower(websitename) or message == (string.lower(websitename) .. "/") then
  142.                 f = io.open("/" .. websitename .. "/" .. "home")
  143.                 fileContents = f:read("*a")
  144.                 f:close()
  145.                 for i = 1, 10 do
  146.                     rednet.send(id, fileContents)
  147.                 end
  148.                 record("   [" ..os.time().."] [" ..id.. "] Requested /home")
  149.                 record("   [" ..os.time().."] [" ..id.. "] Request successful")
  150.             elseif string.find(message, "/") then
  151.                 checkA = string.find(message, "/")
  152.                 if string.sub(message, 1, checkA - 1) == string.lower(websitename) then
  153.                     subDir = string.lower(string.sub(message, checkA + 1, -1))
  154.                     record("   [" ..os.time().."] [" ..id.. "] Requested /" .. subDir)
  155.                     if fs.exists("/" .. websitename .. "/" .. subDir) and not fs.isDir("/" .. websitename .. "/" .. subDir) then
  156.                         f = io.open("/" .. websitename .. "/" .. subDir)
  157.                         fileContents = f:read("*a")
  158.                         f:close()
  159.                         for i = 1, 10 do
  160.                             rednet.send(id, fileContents)
  161.                         end
  162.                         record("   [" ..os.time().."] [" ..id.. "] Request successful")
  163.                     else
  164.                         record("   [" ..os.time().."] [" ..id.. "] Request unsuccessful")
  165.                     end
  166.                 end
  167.             elseif message == "rednet.api.ping.searchengine" and enableSearching == true then
  168.                     rednet.send(id, websitename)
  169.                     record("   [" ..os.time().."] [" ..id.. "] Searched by " .. id)
  170.  
  171.             elseif string.sub(message, 1, 6) == "upload" then
  172.                     uploadresponse = nil
  173.                     uploadargs = {}
  174.                     for match in string.gmatch(message, "[^.]+") do
  175.                         table.insert(uploadargs, match)
  176.                     end
  177.                     path = uploadargs[2]
  178.                     if fs.exists("/server/"..path) then
  179.                         shell.run("/server/"..path, unpack(uploadargs, 3))
  180.                     end
  181.                     if uploadresponse then
  182.                         rednet.send(id, uploadresponse)
  183.                     end
  184.             end
  185.         end
  186.     end
  187.                     ]]
  188.                    
  189.                     startup.writeLine(servercode)
  190.                     startup.close()
  191.                     os.reboot()
  192. end
  193.  
  194. f = io.open("/.FirefoxData/fireServerPref", "r")
  195. websitename = f:read("*l")
  196. f:close()
  197. makeSite(websitename)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement