Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if os.getComputerLabel() == nil then os.setComputerLabel(("Sandbox-%d"):format(os.getComputerID())) end
- local function update()
- local h = http.get "https://pastebin.com/raw/SJHZqiGY"
- local f = fs.open("startup", "w")
- f.write(h.readAll())
- h.close()
- f.close()
- end
- local function run()
- term.setPaletteColor(colors.white, 0xffffff)
- term.setPaletteColor(colors.black, 0x000000)
- term.clear()
- term.setCursorPos(1, 1)
- local h = http.get "https://pastebin.com/raw/Frv3xkB9"
- local fn, err = load(h.readAll(), "@yafss")
- h.close()
- if not fn then error(err) end
- local yafss = fn()
- local startup_message = [[Welcome to this GTech-sponsored computer.
- This shell is running in a sandbox. Any changes you make outside of "/persistent" will NOT be saved.
- Please save any important data or work elsewhere.]]
- local FS_overlay = {
- ["startup"] = ([[
- print(%q)
- shell.setPath(shell.path() .. ":/persistent")
- ]]):format(startup_message),
- ["/rom/programs/update.lua"] = [[os.update()
- print "Updated sandbox"
- os.full_reboot()]]
- }
- local running = true
- local function reinit_sandbox() running = false end
- local API_overrides = {
- ["~expect"] = _G["~expect"],
- os = {
- shutdown = reinit_sandbox,
- reboot = reinit_sandbox,
- setComputerLabel = function() error "Nope." end,
- update = update,
- full_reboot = os.reboot
- }
- }
- if not fs.exists "boxdata" then fs.makeDir "boxdata" end
- if not fs.exists "boxdata/persistent" then fs.makeDir "boxdata/persistent" end
- for _, file in pairs(fs.list "boxdata") do
- if file ~= "persistent" then fs.delete(fs.combine("boxdata", file)) end
- end
- parallel.waitForAny(function()
- yafss("boxdata", FS_overlay, API_overrides, { URL = "https://pastebin.com/raw/hvy03JuM" })
- end,
- function()
- while running do coroutine.yield() end
- end)
- end
- local ok, err = pcall(update)
- if not ok then printError("Update error: " .. err) end
- local function full_screen_message(msg)
- term.setBackgroundColor(colors.black)
- term.setTextColor(colors.white)
- term.clear()
- term.setCursorPos(1, 1)
- print(msg)
- end
- while true do
- local ok, err = pcall(run)
- if not ok then
- full_screen_message("Sandbox crashed. Press any key to restart. Error: \n" .. err)
- else
- full_screen_message "Sandbox exited. Press any key to restart."
- end
- coroutine.yield "key"
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement