Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Main update server for ShadOS --
- VERSION = "Beta 1.0"
- -----------------------------------
- rednet.open("top")
- rednet.open("right")
- rednet.open("left")
- rednet.open("back")
- rednet.open("bottom")
- -- VARS --
- sShadOS_Version = "v. 1.2.1 Beta" -- Vesrion as of 4/29/12
- ericID = 0
- -- Directories --
- sGamePath = "ShadOS/Games/"
- sMoviePath = "ShadOS/Movies/"
- sProgramPath = "ShadOS/Programs/"
- -- Programs --
- sCalculator = "ShadOS/Programs/calc"
- sIRC = "ShadOS/Programs/irc"
- sProgramMenu = "ShadOS/Programs/menu"
- --------------
- -- Games --
- sLaserBlast = "ShadOS/Games/laserblast"
- sGameMenu = "ShadOS/Games/menu"
- sRPG = "ShadOS/Games/rpg"
- sShadomon = "ShadOS/Games/shadomon"
- -----------------
- -- Movies --
- sMovieMenu = "ShadOS/Movies/menu"
- ----------
- -- Helper Functions --
- function cPrint(height, string)
- local w, h = term.getSize()
- local xPosition = w/2 - string.len(string)/2
- term.setCursorPos(xPosition, height)
- term.write(string)
- end
- function rPrint(height, string)
- local w,h = term.getSize()
- local xPos = w - string.len(string)
- term.setCursorPos(xPos, height)
- term.write(string)
- end
- function clear()
- term.clear()
- term.setCursorPos(1,1)
- end
- function readFile(sPath)
- local file = fs.open(tostring(sPath), "r")
- local fileContents = file.readAll(); file.close(); return fileContents
- end
- ----------------------
- -- Menues and other screens --
- function printBorder()
- local w,h = term.getSize()
- write(" ".. string.rep('*', w-2).."\n")
- for i=1, h-2 do write(" "..'*'..string.rep(" ", w-4)..'*'.."\n") end
- write(" ".. string.rep('*', w-2))
- end
- function printHeader()
- cPrint(2, "ShadOS Update Server")
- rPrint(17, "Version: "..VERSION.." *")
- cPrint(6, "Awaiting requests...")
- end
- ------------------------------
- -- Networking related functions --
- function updateServer()
- clear()
- printBorder(); cPrint(2, "ShadOS Update Server"); rPrint(17, "Version: "..VERSION.." *")
- cPrint(6, "Updating...")
- rednet.send(ericID, "ready")
- sender, message = rednet.receive(0.8)
- if sender == ericID then
- fs.delete("startup"); local file = fs.open("startup", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/main"); file = fs.open("ShadOS/main", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/change"); file = fs.open("ShadOS/change", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/originalos"); file = fs.open("ShadOS/originalos", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/Programs/calc"); file = fs.open("ShadOS/Programs/calc", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/Programs/irc"); file = fs.open("ShadOS/Programs/irc", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/Programs/menu"); file = fs.open("ShadOS/Programs/menu", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/Games/laserblast"); file = fs.open("ShadOS/Games/laserblast", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/Games/rpg"); file = fs.open("ShadOS/Games/rpg", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/Games/shadomon"); file = fs.open("ShadOS/Games/shadomon", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/Games/menu"); file = fs.open("ShadOS/Games/menu", "w"); file.write(tostring(message)); file.close()
- sender, message = rednet.receive(0.8)
- fs.delete("ShadOS/Movies/menu"); file = fs.open("ShadOS/Movies/menu", "w"); file.write(tostring(message)); file.close()
- repeat
- sender, sPath = rednet.receive()
- if sender == ericID and sPath ~= "false" then
- sender, message = rednet.receive(0.8)
- if sender == origSender then file = fs.open(tostring(sPath), "w"); file.write(tostring(message)); file.close()
- else cPrint(7, "Failure: Request conjestion"); sleep(1.3); clear() end
- else cPrint(7, "End of send"); sleep(1.3); clear() end
- until sPath == "false"
- cPrint(6, "Successfully updated!"); sleep(1.3); clear(); shell.run("updater")
- else cPrint(7, "End of send"); sleep(1.3); clear() end
- end
- function sendUpdate(origSender)
- rednet.send(origSender, "ready")
- sender, message = rednet.receive(0.8)
- local file = fs.open("ShadOS/version", "r")
- local version = file.readAll()
- file.close()
- if message == version then rednet.send(origSender, "false"); return
- else rednet.send(origSender, "true") end
- sender, message = rednet.receive(0.8)
- if sender == origSender and message == "ready" then
- file = fs.open("startup", "r")
- fileContents = file.readAll()
- file.close()
- rednet.send(origSender, fileContents); sleep(0.1)
- fileContents = readFile("ShadOS/main")
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile("ShadOS/change"); rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile("ShadOS/originalos"); rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile(sCalculator)
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile(sIRC)
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile(sProgramMenu)
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile(sLaserBlast)
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile(sRPG)
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile(sShadomon)
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile(sGameMenu)
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- fileContents = readFile(sMovieMenu)
- rednet.send(origSender, tostring(fileContents)); sleep(0.1)
- else cPrint(7, "Failure: Request conjestion"); sleep(1.3); clear() end
- end
- function checkUpdate(origSender)
- rednet.send(origSender, "ready")
- sender, message = rednet.receive(0.8)
- local file = fs.open("ShadOS/version", "r")
- local version = file.readAll()
- file.close()
- if message == version then rednet.send(origSender, "false")
- else rednet.send(origSender, "true"); sendUpdate(origSender) end
- end
- ----------------------------------
- clear()
- print(" _____ _ _ _____ _____ ")
- print(" / ___| | | | _ / ___|")
- print(" \\ --.| |__ __ _ __| | | | \\ --. ")
- print(" --. \\ '_ \\ / _ |/ _ | | | | --. \\")
- print(" /\\__/ / | | | (_| | (_| \\ \\_/ /\\__/ /")
- print(" \\____/|_| |_|\\__,_|\\__,_|\\___/\\____/ ")
- cPrint(14, "Updater by PaymentOption")
- sleep(2)
- while true do
- clear()
- printBorder()
- printHeader()
- sender, message = rednet.receive()
- if sender == ericID and message == "upload" then updateServer(origSender)
- elseif message == "update" then sendUpdate(tonumber(sender)) --Force update
- elseif message == "checkUpdate" then sendUpdate(tonumber(sender))
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment