local STATION_BROADCAST_URL = "https://gitea.fse-media.group/Henry_Du/CC-StationBroadcast/raw/branch/main/station_broadcast.lua" local function fetch(url) if not http then return nil, "HTTP API unavailable" end if http.checkURL then local ok, err = http.checkURL(url) if not ok then return nil, err or "URL blocked" end end local res, err = http.get(url) if not res then return nil, err or "request failed" end local body = res.readAll() res.close() if type(body) ~= "string" or #body == 0 then return nil, "empty response" end return body end local function writeFile(path, content) local dir = fs.getDir(path) if dir and dir ~= "" and not fs.exists(dir) then fs.makeDir(dir) end local f = fs.open(path, "w") if not f then return nil, "cannot open " .. path end f.write(content) f.close() return true end local function downloadTo(url, path) write(("Downloading %s... "):format(path)) local body, err = fetch(url) if not body then print("FAILED") print(err) return false end local ok, werr = writeFile(path, body) if not ok then print("FAILED") print(werr) return false end print("OK") return true end local targets = { { url = STATION_BROADCAST_URL, path = shell.resolve("/startup") } } for _, t in ipairs(targets) do local ok = downloadTo(t.url, t.path) if not ok then print("Install aborted.") return end end print("Install complete.") print("Run 'reboot' to start StationBroadcast on boot.")