PaymentOption

ShadOS Updater

Apr 29th, 2012
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.41 KB | None | 0 0
  1. -- Main update server for ShadOS --
  2. VERSION = "Beta 1.0"
  3. -----------------------------------
  4.  
  5. rednet.open("top")
  6. rednet.open("right")
  7. rednet.open("left")
  8. rednet.open("back")
  9. rednet.open("bottom")
  10.  
  11. -- VARS --
  12. sShadOS_Version = "v. 1.2.1 Beta" -- Vesrion as of 4/29/12
  13. ericID = 0
  14. -- Directories --
  15. sGamePath = "ShadOS/Games/"
  16. sMoviePath = "ShadOS/Movies/"
  17. sProgramPath = "ShadOS/Programs/"
  18.  
  19. -- Programs --
  20. sCalculator = "ShadOS/Programs/calc"
  21. sIRC = "ShadOS/Programs/irc"
  22. sProgramMenu = "ShadOS/Programs/menu"
  23. --------------
  24.  
  25. -- Games --
  26. sLaserBlast = "ShadOS/Games/laserblast"
  27. sGameMenu = "ShadOS/Games/menu"
  28. sRPG = "ShadOS/Games/rpg"
  29. sShadomon = "ShadOS/Games/shadomon"
  30. -----------------
  31.  
  32. -- Movies --
  33. sMovieMenu = "ShadOS/Movies/menu"
  34. ----------
  35.  
  36. -- Helper Functions --
  37. function cPrint(height, string)
  38.     local w, h = term.getSize()
  39.     local xPosition = w/2 - string.len(string)/2
  40.    
  41.     term.setCursorPos(xPosition, height)
  42.     term.write(string)
  43. end
  44.  
  45. function rPrint(height, string)
  46.     local w,h = term.getSize()
  47.     local xPos = w - string.len(string)
  48.    
  49.     term.setCursorPos(xPos, height)
  50.     term.write(string)
  51. end
  52.  
  53. function clear()
  54.     term.clear()
  55.     term.setCursorPos(1,1)
  56. end
  57.  
  58. function readFile(sPath)
  59.     local file = fs.open(tostring(sPath), "r")
  60.     local fileContents = file.readAll(); file.close(); return fileContents
  61. end
  62. ----------------------
  63.  
  64. -- Menues and other screens --
  65. function printBorder()
  66.     local w,h = term.getSize()
  67.     write(" ".. string.rep('*', w-2).."\n")
  68.     for i=1, h-2 do write(" "..'*'..string.rep(" ", w-4)..'*'.."\n") end
  69.     write(" ".. string.rep('*', w-2))
  70. end
  71.  
  72. function printHeader()
  73.     cPrint(2, "ShadOS Update Server")
  74.     rPrint(17, "Version: "..VERSION.." *")
  75.     cPrint(6, "Awaiting requests...")
  76. end
  77. ------------------------------
  78.  
  79. -- Networking related functions --
  80. function updateServer()
  81.     clear()
  82.     printBorder(); cPrint(2, "ShadOS Update Server"); rPrint(17, "Version: "..VERSION.." *")
  83.     cPrint(6, "Updating...")
  84.     rednet.send(ericID, "ready")
  85.    
  86.     sender, message = rednet.receive(0.8)
  87.     if sender == ericID then
  88.         fs.delete("startup"); local file = fs.open("startup", "w"); file.write(tostring(message)); file.close()
  89.             sender, message = rednet.receive(0.8)
  90.             fs.delete("ShadOS/main"); file = fs.open("ShadOS/main", "w"); file.write(tostring(message)); file.close()
  91.                
  92.             sender, message = rednet.receive(0.8)
  93.             fs.delete("ShadOS/change"); file = fs.open("ShadOS/change", "w"); file.write(tostring(message)); file.close()
  94.                
  95.             sender, message = rednet.receive(0.8)
  96.             fs.delete("ShadOS/originalos"); file = fs.open("ShadOS/originalos", "w"); file.write(tostring(message)); file.close()
  97.                
  98.             sender, message = rednet.receive(0.8)
  99.             fs.delete("ShadOS/Programs/calc"); file = fs.open("ShadOS/Programs/calc", "w"); file.write(tostring(message)); file.close()
  100.                
  101.             sender, message = rednet.receive(0.8)
  102.             fs.delete("ShadOS/Programs/irc"); file = fs.open("ShadOS/Programs/irc", "w"); file.write(tostring(message)); file.close()
  103.                
  104.             sender, message = rednet.receive(0.8)
  105.             fs.delete("ShadOS/Programs/menu"); file = fs.open("ShadOS/Programs/menu", "w"); file.write(tostring(message)); file.close()
  106.                
  107.             sender, message = rednet.receive(0.8)
  108.             fs.delete("ShadOS/Games/laserblast"); file = fs.open("ShadOS/Games/laserblast", "w"); file.write(tostring(message)); file.close()
  109.                
  110.             sender, message = rednet.receive(0.8)
  111.             fs.delete("ShadOS/Games/rpg"); file = fs.open("ShadOS/Games/rpg", "w"); file.write(tostring(message)); file.close()
  112.                
  113.             sender, message = rednet.receive(0.8)
  114.             fs.delete("ShadOS/Games/shadomon"); file = fs.open("ShadOS/Games/shadomon", "w"); file.write(tostring(message)); file.close()
  115.                
  116.             sender, message = rednet.receive(0.8)
  117.             fs.delete("ShadOS/Games/menu"); file = fs.open("ShadOS/Games/menu", "w"); file.write(tostring(message)); file.close()
  118.                
  119.             sender, message = rednet.receive(0.8)
  120.             fs.delete("ShadOS/Movies/menu"); file = fs.open("ShadOS/Movies/menu", "w"); file.write(tostring(message)); file.close()
  121.            
  122.             repeat
  123.                 sender, sPath = rednet.receive()
  124.                 if sender == ericID and sPath ~= "false" then
  125.                     sender, message = rednet.receive(0.8)
  126.                     if sender == origSender then file = fs.open(tostring(sPath), "w"); file.write(tostring(message)); file.close()
  127.                     else cPrint(7, "Failure: Request conjestion"); sleep(1.3); clear() end
  128.                 else cPrint(7, "End of send"); sleep(1.3); clear() end
  129.             until sPath == "false"
  130.                
  131.             cPrint(6, "Successfully updated!"); sleep(1.3); clear(); shell.run("updater")
  132.         else cPrint(7, "End of send"); sleep(1.3); clear() end
  133. end
  134.    
  135.    
  136. function sendUpdate(origSender)
  137.     rednet.send(origSender, "ready")
  138.     sender, message = rednet.receive(0.8)
  139.    
  140.     local file = fs.open("ShadOS/version", "r")
  141.     local version = file.readAll()
  142.     file.close()
  143.    
  144.     if message == version then rednet.send(origSender, "false"); return
  145.     else rednet.send(origSender, "true") end
  146.  
  147.  
  148.     sender, message = rednet.receive(0.8)
  149.     if sender == origSender and message == "ready" then
  150.         file = fs.open("startup", "r")
  151.         fileContents = file.readAll()
  152.         file.close()
  153.         rednet.send(origSender, fileContents); sleep(0.1)
  154.        
  155.         fileContents = readFile("ShadOS/main")
  156.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  157.        
  158.         fileContents = readFile("ShadOS/change"); rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  159.        
  160.         fileContents = readFile("ShadOS/originalos"); rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  161.        
  162.         fileContents = readFile(sCalculator)
  163.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  164.        
  165.         fileContents = readFile(sIRC)
  166.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  167.        
  168.         fileContents = readFile(sProgramMenu)
  169.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  170.        
  171.         fileContents = readFile(sLaserBlast)
  172.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  173.        
  174.         fileContents = readFile(sRPG)
  175.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  176.        
  177.         fileContents = readFile(sShadomon)
  178.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  179.        
  180.         fileContents = readFile(sGameMenu)
  181.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  182.        
  183.         fileContents = readFile(sMovieMenu)
  184.         rednet.send(origSender, tostring(fileContents)); sleep(0.1)
  185.     else cPrint(7, "Failure: Request conjestion"); sleep(1.3); clear() end
  186. end
  187.  
  188. function checkUpdate(origSender)
  189.     rednet.send(origSender, "ready")
  190.     sender, message = rednet.receive(0.8)
  191.    
  192.     local file = fs.open("ShadOS/version", "r")
  193.     local version = file.readAll()
  194.     file.close()
  195.    
  196.     if message == version then rednet.send(origSender, "false")
  197.     else rednet.send(origSender, "true"); sendUpdate(origSender) end
  198. end
  199.    
  200. ----------------------------------
  201.  
  202. clear()
  203. print("      _____ _               _ _____ _____ ")
  204. print("     /  ___| |             | |  _  /  ___|")
  205. print("     \\  --.| |__   __ _  __| | | | \\  --. ")
  206. print("       --. \\ '_ \\ / _  |/ _  | | | | --. \\")
  207. print("     /\\__/ / | | | (_| | (_| \\ \\_/ /\\__/ /")
  208. print("     \\____/|_| |_|\\__,_|\\__,_|\\___/\\____/ ")
  209. cPrint(14, "Updater by PaymentOption")
  210. sleep(2)
  211.  
  212. while true do
  213.     clear()
  214.     printBorder()
  215.     printHeader()
  216.    
  217.     sender, message = rednet.receive()
  218.    
  219.     if sender == ericID and message == "upload" then updateServer(origSender)
  220.     elseif message == "update" then sendUpdate(tonumber(sender)) --Force update
  221.     elseif message == "checkUpdate" then sendUpdate(tonumber(sender))
  222.     end
  223. end
Advertisement
Add Comment
Please, Sign In to add comment