fix(ota): make update scripts self-updating and add cache-busting to installers

This commit is contained in:
2026-07-11 16:00:37 +08:00
parent de187db646
commit 4fe3a24eaf
7 changed files with 70 additions and 14 deletions
+7 -2
View File
@@ -63,20 +63,25 @@ local function httpGet(url)
end end
end end
local function getCacheBustedUrl(url)
local sep = url:find("?") and "&" or "?"
return url .. sep .. "_t=" .. tostring(os.epoch and os.epoch("utc") or math.random(1, 999999))
end
term.clear() term.clear()
term.setCursorPos(1, 1) term.setCursorPos(1, 1)
print("Ticket Machine Installer") print("Ticket Machine Installer")
print("") print("")
print("Downloading ticket machine program...") print("Downloading ticket machine program...")
local ok, code = httpGet(URL_MACHINE_HTTP) local ok, code = httpGet(getCacheBustedUrl(URL_MACHINE_HTTP))
if not ok or type(code) ~= "string" or #code == 0 then if not ok or type(code) ~= "string" or #code == 0 then
print("Download failed: " .. tostring(code or "")) print("Download failed: " .. tostring(code or ""))
return return
end end
local okUpdate, updateCode = httpGet(URL_UPDATE_MACHINE) local okUpdate, updateCode = httpGet(getCacheBustedUrl(URL_UPDATE_MACHINE))
if not okUpdate or type(updateCode) ~= "string" or #updateCode == 0 then if not okUpdate or type(updateCode) ~= "string" or #updateCode == 0 then
print("Download failed: " .. tostring(updateCode or "")) print("Download failed: " .. tostring(updateCode or ""))
return return
+7 -2
View File
@@ -62,9 +62,14 @@ local function httpGet(url)
end end
end end
local function getCacheBustedUrl(url)
local sep = url:find("?") and "&" or "?"
return url .. sep .. "_t=" .. tostring(os.epoch and os.epoch("utc") or math.random(1, 999999))
end
local function download(url, path, binary) local function download(url, path, binary)
print("Downloading: " .. path) print("Downloading: " .. path)
local ok, data = httpGet(url) local ok, data = httpGet(getCacheBustedUrl(url))
if not ok then if not ok then
print("Download failed: " .. tostring(data or "")) print("Download failed: " .. tostring(data or ""))
return false return false
@@ -103,7 +108,7 @@ end
if not download(URL_PASS, "pass.dfpwm", true) then return end if not download(URL_PASS, "pass.dfpwm", true) then return end
if not download(URL_ERROR, "error.dfpwm", true) then return end if not download(URL_ERROR, "error.dfpwm", true) then return end
local okGate, gateCode = httpGet(URL_GATE) local okGate, gateCode = httpGet(getCacheBustedUrl(URL_GATE))
if not okGate then if not okGate then
print("Download failed: startup") print("Download failed: startup")
return return
+7 -2
View File
@@ -69,9 +69,14 @@ local function httpGet(url)
end end
end end
local function getCacheBustedUrl(url)
local sep = url:find("?") and "&" or "?"
return url .. sep .. "_t=" .. tostring(os.epoch and os.epoch("utc") or math.random(1, 999999))
end
local function download(url, path, binary) local function download(url, path, binary)
print("Downloading: " .. path) print("Downloading: " .. path)
local ok, data = httpGet(url) local ok, data = httpGet(getCacheBustedUrl(url))
if not ok then if not ok then
print("Download failed: " .. tostring(data or "")) print("Download failed: " .. tostring(data or ""))
return false return false
@@ -130,7 +135,7 @@ end
if not download(URL_PASS, "pass.dfpwm", true) then return end if not download(URL_PASS, "pass.dfpwm", true) then return end
if not download(URL_ERROR, "error.dfpwm", true) then return end if not download(URL_ERROR, "error.dfpwm", true) then return end
local okGate, gateCode = httpGet(URL_GATE) local okGate, gateCode = httpGet(getCacheBustedUrl(URL_GATE))
if not okGate then if not okGate then
print("Download failed: startup") print("Download failed: startup")
return return
+7 -2
View File
@@ -54,19 +54,24 @@ local function httpGet(url)
end end
end end
local function getCacheBustedUrl(url)
local sep = url:find("?") and "&" or "?"
return url .. sep .. "_t=" .. tostring(os.epoch and os.epoch("utc") or math.random(1, 999999))
end
term.clear() term.clear()
term.setCursorPos(1, 1) term.setCursorPos(1, 1)
print("Refill Machine Installer") print("Refill Machine Installer")
print("") print("")
print("Downloading refill machine program...") print("Downloading refill machine program...")
local ok, code = httpGet(URL_REFILL_MACHINE) local ok, code = httpGet(getCacheBustedUrl(URL_REFILL_MACHINE))
if not ok or type(code) ~= "string" or #code == 0 then if not ok or type(code) ~= "string" or #code == 0 then
print("Download failed: " .. tostring(code or "")) print("Download failed: " .. tostring(code or ""))
return return
end end
local okUpdate, updateCode = httpGet(URL_UPDATE_REFILL) local okUpdate, updateCode = httpGet(getCacheBustedUrl(URL_UPDATE_REFILL))
if not okUpdate or type(updateCode) ~= "string" or #updateCode == 0 then if not okUpdate or type(updateCode) ~= "string" or #updateCode == 0 then
print("Download failed: " .. tostring(updateCode or "")) print("Download failed: " .. tostring(updateCode or ""))
return return
+14 -2
View File
@@ -1,8 +1,14 @@
local URL_GATE = "https://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/gate.lua" local URL_GATE = "http://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/gate.lua"
local URL_UPDATE_GATE = "http://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/update_gate.lua"
local args = { ... } local args = { ... }
local silent = AUTO_UPDATE_SILENT == true or args[1] == "--silent" local silent = AUTO_UPDATE_SILENT == true or args[1] == "--silent"
local function getCacheBustedUrl(url)
local sep = url:find("?") and "&" or "?"
return url .. sep .. "_t=" .. tostring(os.epoch and os.epoch("utc") or math.random(1, 999999))
end
local function log(msg) local function log(msg)
if not silent then if not silent then
print(msg) print(msg)
@@ -70,7 +76,7 @@ if not silent then
end end
log("Downloading gate program...") log("Downloading gate program...")
local ok, code = httpGet(URL_GATE) local ok, code = httpGet(getCacheBustedUrl(URL_GATE))
if not ok or type(code) ~= "string" or #code == 0 then if not ok or type(code) ~= "string" or #code == 0 then
error("Download failed: " .. tostring(code or "")) error("Download failed: " .. tostring(code or ""))
end end
@@ -81,6 +87,12 @@ end
atomicWrite("startup", code, false) atomicWrite("startup", code, false)
if fs.exists("gate.lua") then atomicWrite("gate.lua", code, false) end if fs.exists("gate.lua") then atomicWrite("gate.lua", code, false) end
log("Downloading updater program...")
local okUp, codeUp = httpGet(getCacheBustedUrl(URL_UPDATE_GATE))
if okUp and type(codeUp) == "string" and #codeUp > 0 then
atomicWrite("update_gate.lua", codeUp, false)
end
if not silent then if not silent then
log("") log("")
log("Done.") log("Done.")
+14 -2
View File
@@ -1,7 +1,13 @@
local URL_MACHINE = "https://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/ticketmachine.lua" local URL_MACHINE = "http://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/ticketmachine.lua"
local URL_UPDATE_MACHINE = "http://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/update_machine.lua"
local args = { ... } local args = { ... }
local silent = AUTO_UPDATE_SILENT == true or args[1] == "--silent" local silent = AUTO_UPDATE_SILENT == true or args[1] == "--silent"
local function getCacheBustedUrl(url)
local sep = url:find("?") and "&" or "?"
return url .. sep .. "_t=" .. tostring(os.epoch and os.epoch("utc") or math.random(1, 999999))
end
local function log(msg) local function log(msg)
if not silent then if not silent then
print(msg) print(msg)
@@ -69,7 +75,7 @@ if not silent then
end end
log("Downloading ticket machine program...") log("Downloading ticket machine program...")
local ok, code = httpGet(URL_MACHINE) local ok, code = httpGet(getCacheBustedUrl(URL_MACHINE))
if not ok or type(code) ~= "string" or #code == 0 then if not ok or type(code) ~= "string" or #code == 0 then
error("Download failed: " .. tostring(code or "")) error("Download failed: " .. tostring(code or ""))
end end
@@ -80,6 +86,12 @@ end
atomicWrite("startup", code, false) atomicWrite("startup", code, false)
if fs.exists("ticketmachine.lua") then atomicWrite("ticketmachine.lua", code, false) end if fs.exists("ticketmachine.lua") then atomicWrite("ticketmachine.lua", code, false) end
log("Downloading updater program...")
local okUp, codeUp = httpGet(getCacheBustedUrl(URL_UPDATE_MACHINE))
if okUp and type(codeUp) == "string" and #codeUp > 0 then
atomicWrite("update_machine.lua", codeUp, false)
end
if not silent then if not silent then
log("") log("")
log("Done.") log("Done.")
+14 -2
View File
@@ -1,6 +1,12 @@
local URL_REFILL_MACHINE = "https://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/refillmachine.lua" local URL_REFILL_MACHINE = "http://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/refillmachine.lua"
local URL_UPDATE_REFILL = "http://gitea.fse-media.group/Henry_Du/FSE-Ticket.sys/raw/branch/main/update_refill.lua"
local function getCacheBustedUrl(url)
local sep = url:find("?") and "&" or "?"
return url .. sep .. "_t=" .. tostring(os.epoch and os.epoch("utc") or math.random(1, 999999))
end
local function writeFile(path, content, binary) local function writeFile(path, content, binary)
local mode = binary and "wb" or "w" local mode = binary and "wb" or "w"
@@ -61,12 +67,18 @@ print("Refill Machine Updater")
print("") print("")
print("Downloading refill machine program...") print("Downloading refill machine program...")
local ok, code = httpGet(URL_REFILL_MACHINE) local ok, code = httpGet(getCacheBustedUrl(URL_REFILL_MACHINE))
if not ok or type(code) ~= "string" or #code == 0 then if not ok or type(code) ~= "string" or #code == 0 then
print("Download failed: " .. tostring(code or "")) print("Download failed: " .. tostring(code or ""))
return return
end end
print("Downloading updater program...")
local okUp, codeUp = httpGet(getCacheBustedUrl(URL_UPDATE_REFILL))
if okUp and type(codeUp) == "string" and #codeUp > 0 then
atomicWrite("update_refill.lua", codeUp, false)
end
if not atomicWrite("startup.lua", code, false) then if not atomicWrite("startup.lua", code, false) then
print("Write failed: startup.lua") print("Write failed: startup.lua")
return return