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) |