blob: ef422c7d0a9ef63256f08e21cf46186462ab7042 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
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")
|