Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function string:split(s, delimiter)
- local result = {};
- for match in (s .. delimiter):gmatch("(.-)" .. delimiter) do
- table.insert(result, match);
- end
- return result;
- end
- function getMsgData(msg)
- local i, j = string.find(msg, ":")
- local tag = string.sub(msg, 1, i - 1)
- local pts = string:split(string.sub(msg, i + 1, -1), ",")
- return tag, pts
- end
- --syslib end
- rednet.open("back")
- rednet.broadcast("root:initialise")
- function init(unit)
- --rednet.send(unit["id"], "action:setLabel,unit "..unit["id"])
- end
- local predefinedPrograms = {}
- predefinedPrograms["service:printUnits"] = "WevF0J8v" --sys_service_printUnits
- predefinedPrograms["service:terminal"] = "bjC7PAsd" --sys_service_terminal
- local singleUnitId = "kzcjG72h"
- local databaseId = "A1EaLX00"
- local f = fs.open("startup", "w")
- f.write("shell.run(\"delete\",\"unitHandler\")\n")
- f.write("shell.run(\"pastebin\",\"get\",\"" .. databaseId .. "\",\"unitHandler\")\n")
- f.write("shell.run(\"unitHandler\")\n")
- f.close()
- local units = {}
- function getUnitsData()
- local data = ""
- for id1, unit in pairs(units) do
- data = data .. id1 .. " " .. unit["label"] .. " "
- if unit["free"] then
- data = data .. "free "
- else data = data .. "inUsage "
- end
- end
- return data
- end
- while true do
- local id, msg = rednet.receive()
- local tag, pts = getMsgData(msg)
- if tag == "@root" then
- if pts[1] == "identify" then
- local label = pts[2]
- units[id] = { id = id, label = label, free = true }
- rednet.send(id, "action:setStartup," .. singleUnitId)
- for l, progId in pairs(predefinedPrograms) do
- if l == label then
- rednet.send(id, "action:executePastebin," .. progId)
- units[id]["free"] = false
- end
- end
- elseif pts[1] == "reboot" then
- rednet.broadcast("root:reboot")
- os.reboot()
- elseif pts[1] == "getUnitsData" then
- rednet.send(id, "action:" .. getUnitsData())
- else print("unknown msg>@root-msg: ", msg)
- end
- elseif tag == "answer" then
- if pts[1] == "executePastebinFinished" then
- if units[id] ~= nil then
- units[id]["free"] = true
- end
- else print("unknown msg>answer: ", msg)
- end
- else
- print("unknown msg-tag: ", msg)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement