local pm = require'pm' local ws = assert(http.websocket("wss://citrons.xyz/ws-echo/rebecca")) local function splitw(str) local res = {} for s in str:gmatch("%S+") do table.insert(res, s) end return res end local ops = {} function ops.deploy(pkgname) pm.cc() pm.dl(pkgname) shell.run('bg '..pkgname) end function ops.test() print("hello world") end function ops.upgrade() pm.cc() pm.dl("listener") os.reboot() end function ops.test2() print("hello world") end function main() print("listening") while true do local msg = ws.receive() local parsed = assert(textutils.unserializeJSON(msg)) if parsed.msg then print("got msg",parsed.msg) local words = splitw(parsed.msg) if words[1] ~= "RRP" then print("non-RRP message!") else local target = words[2] local mylabel = os.computerLabel() if not (target == mylabel or target == "*") then print("not for me") else local op = words[3] if ops[op] then ops[op](unpack(words,4)) else print("unknown op "..op) end end end end end end local ok, err = pcall(main) if not ok then print(err) end ws.close() print("all done")