Add remote reboot functionality via system channel

This commit is contained in:
MayaTheShy
2026-03-22 03:15:47 -04:00
parent 01ca8ca127
commit e1186ab532

View File

@@ -28,6 +28,9 @@ local BROADCAST_INTERVAL = 1 -- seconds between state broadcasts
local CRAFT_CHANNEL = 4203
local CRAFT_REPLY_CHANNEL = 4204
-- Remote reboot system channel (all devices listen on this)
local SYSTEM_CHANNEL = 4205
-------------------------------------------------
-- Idempotent command tracking
-------------------------------------------------
@@ -2571,6 +2574,7 @@ local function main()
networkModemName = name
networkModem.open(ORDER_CHANNEL)
networkModem.open(CRAFT_REPLY_CHANNEL)
networkModem.open(SYSTEM_CHANNEL)
break
end
end
@@ -2967,6 +2971,20 @@ local function main()
cache.droppers = merged
bumpStateVersion()
pcall(broadcastState)
elseif message.type == "reboot" then
local target = message.target or "all"
log.info("NET", "Reboot command received, target: %s", target)
-- Broadcast reboot to all clients on system channel
networkModem.transmit(SYSTEM_CHANNEL, ORDER_CHANNEL, {
type = "reboot",
target = target,
})
-- If manager itself is targeted, reboot after a short delay
if target == "all" or target == "manager" then
log.info("NET", "Manager rebooting in 1s...")
sleep(1)
os.reboot()
end
elseif message.type == "craft" and message.recipeIdx then
log.info("NET", "Craft request: recipe #%d", message.recipeIdx)
local pok, ok, err = pcall(craftItem, message.recipeIdx)