OC-Minitel/WoLBeacon/OpenOS/etc/rc.d/wolbeacon.lua

65 lines
1.1 KiB
Lua

local serial = require "serialization"
local component = require "component"
local event = require "event"
local timer = -1
local cfg = {}
cfg.broadcast = true
cfg.receive = true
cfg.delay = 60
cfg.port = 3442
cfg.message = "WoLBeacon"
local function saveConfig()
local f = io.open("/etc/wolbeacon.cfg","wb")
if not f then
return false
end
f:write(serial.serialize(cfg))
f:close()
end
local function broadcast()
for modem in component.list("modem") do
component.invoke(modem,"broadcast",cfg.port,cfg.message)
end
end
local function loadConfig()
local f = io.open("/etc/wolbeacon.cfg","rb")
if not f then
saveConfig()
return false
end
cfg = serial.unserialize(f:read("*a")) or cfg
f:close()
end
function start()
loadConfig()
if cfg.receive then
for modem in component.list("modem") do
component.invoke(modem,"setWakeMessage",cfg.message)
end
else
for modem in component.list("modem") do
component.invoke(modem,"setWakeMessage",nil)
end
end
if cfg.broadcast then
timer = event.timer(cfg.delay, broadcast, math.huge)
end
end
function stop()
event.cancel(timer)
timer = -1
end
function reload()
stop()
start()
end