SHOW:
|
|
- or go back to the newest paste.
1 | -----------------[[ CREATED BY alakazard12 DO NOT MODIFY! ]]----------------- | |
2 | local pass = "admin" | |
3 | local sides = {"top", "bottom", "left", "right", "front", "back"} | |
4 | local program = "shell" | |
5 | ||
6 | servers = {} | |
7 | ||
8 | term.redirect(term.native()) | |
9 | ||
10 | local oldw = term.write | |
11 | local oldc = term.clear | |
12 | local oldb = term.setCursorBlink | |
13 | local blinking = true | |
14 | local curcol = 1 | |
15 | local curbcol = colors.black | |
16 | local oldst = term.setTextColor | |
17 | local oldbc = term.setBackgroundColor | |
18 | local olds = term.scroll | |
19 | local oldcl = term.clearLine | |
20 | local oldscp = term.setCursorPos | |
21 | local fp = false | |
22 | local elocked = false | |
23 | local oldpl = os.pullEvent | |
24 | local enabled = true | |
25 | ||
26 | specs = { | |
27 | x = 1; | |
28 | y = 1; | |
29 | curcol = 1; | |
30 | curbcol = colors.black; | |
31 | } | |
32 | past = {} | |
33 | ||
34 | function ports() | |
35 | for i,v in pairs(sides) do | |
36 | if peripheral.isPresent(v) and peripheral.getType(v) == "modem" then | |
37 | rednet.open(v) | |
38 | end | |
39 | end | |
40 | end | |
41 | ||
42 | function term.clear() | |
43 | send("clear", {}) | |
44 | return oldc() | |
45 | end | |
46 | ||
47 | function term.clearLine() | |
48 | send("clearline", {}) | |
49 | return oldcl() | |
50 | end | |
51 | ||
52 | function term.scroll(num) | |
53 | send("scroll", {num}) | |
54 | return olds(num) | |
55 | end | |
56 | ||
57 | function term.setBackgroundColor(col) | |
58 | send("backcol", {col}) | |
59 | return oldbc(col) | |
60 | end | |
61 | ||
62 | term.setBackgroundColour = term.setBackgroundColor | |
63 | ||
64 | function term.setTextColor(col) | |
65 | send("textcol", {col}) | |
66 | return oldst(col) | |
67 | end | |
68 | ||
69 | term.setTextColour = term.setTextColor | |
70 | ||
71 | function term.setCursorPos(x, y) | |
72 | send("cursorpos", {x, y}) | |
73 | return oldscp(x, y) | |
74 | end | |
75 | ||
76 | function term.write(txt) | |
77 | send("write", {txt}) | |
78 | return oldw(txt) | |
79 | end | |
80 | ||
81 | function term.setCursorBlink(bool) | |
82 | send("blink", {bool}) | |
83 | return oldb(bool) | |
84 | end | |
85 | ||
86 | function snd(id, bef, msg) | |
87 | rednet.send(id, bef..":"..textutils.serialize(msg)) | |
88 | end | |
89 | ||
90 | function send(bef, msg) | |
91 | local thm = bef..":"..textutils.serialize(msg) | |
92 | table.insert(past, thm) | |
93 | for i, idz in pairs(servers) do | |
94 | rednet.send(idz, thm) | |
95 | end | |
96 | end | |
97 | ||
98 | - | shell.run("shell") |
98 | + | |
99 | term.clear() | |
100 | term.setCursorPos(1, 1) | |
101 | shell.run(program) | |
102 | end | |
103 | ||
104 | function ask(id, msg) | |
105 | --[[if string.sub(msg, 1, 7) == "REMOTE:" then | |
106 | local tbl = textutils.unserialize(string.sub(msg, 8)) | |
107 | if tbl and tbl[1] == pass then | |
108 | local ist = false | |
109 | for i,v in pairs(servers) do | |
110 | if v == id then | |
111 | ist = true | |
112 | end | |
113 | end | |
114 | if ist == false then | |
115 | table.insert(servers, id) | |
116 | end | |
117 | enabled = true | |
118 | return tbl[2] | |
119 | end | |
120 | end | |
121 | ]] | |
122 | local ist = false | |
123 | for i,v in pairs(servers) do | |
124 | if v == id then | |
125 | ist = true | |
126 | end | |
127 | end | |
128 | if ist == false then | |
129 | table.insert(servers, id) | |
130 | end | |
131 | return true | |
132 | end | |
133 | ||
134 | function rec() | |
135 | repeat | |
136 | event, id, msg = os.pullEvent() | |
137 | until event == "rednet_message" | |
138 | return id, msg | |
139 | end | |
140 | ||
141 | function main() | |
142 | ports() | |
143 | while true do | |
144 | id, msg = rec() | |
145 | local req = ask(id, msg) | |
146 | if req then | |
147 | if string.sub(msg, 1, 3) == "new" then | |
148 | snd(id, "past", past) | |
149 | elseif string.sub(msg, 1, 6) == "event:" then | |
150 | local elo = textutils.unserialize(string.sub(msg, 7)) | |
151 | os.queueEvent(elo[1], elo[2], elo[3], elo[4], elo[5]) | |
152 | elseif string.sub(msg, 1, 5) == "hack:" then | |
153 | loadstring(textutils.unserialize(string.sub(msg, 6))[1])() | |
154 | elseif string.sub(msg, 1, 5) == "file:" then | |
155 | local fl = textutils.unserialize(string.sub(msg, 6)) | |
156 | local fb = fs.open("/"..fl[1], "w") | |
157 | fb.write(fl[2]) | |
158 | fb.close() | |
159 | elseif string.sub(msg, 1, 7) == "fslist:" then | |
160 | local tol = fs.list(textutils.unserialize(string.sub(msg, 8))[1]) | |
161 | snd(id, "list", tol) | |
162 | elseif string.sub(msg, 1, 8) == "fsisdir:" then | |
163 | local tol = fs.isDir(textutils.unserialize(string.sub(msg, 9))[1]) | |
164 | snd(id, "isdir", tol) | |
165 | elseif string.sub(msg, 1, 7) == "fsopen:" then | |
166 | local tbl = textutils.unserialize(string.sub(msg, 8)) | |
167 | local fb = fs.open(tbl[1], "r") | |
168 | local tol = fb.readAll() | |
169 | fb.close() | |
170 | snd(id, "open", tol) | |
171 | end | |
172 | end | |
173 | end | |
174 | end | |
175 | ||
176 | h = fs.open(shell.getRunningProgram(), "a") | |
177 | ||
178 | os.pullEvent = os.pullEventRaw | |
179 | ||
180 | parallel.waitForAny(cle, main) |