SHOW:
|
|
- or go back to the newest paste.
| 1 | - | local component = require("component") |
| 1 | + | local component = require("component")
|
| 2 | - | local fs = require("filesystem") |
| 2 | + | local fs = require("filesystem")
|
| 3 | - | local event = require("event") |
| 3 | + | local event = require("event")
|
| 4 | - | local term = require("term") |
| 4 | + | local term = require("term")
|
| 5 | - | local data = component.data |
| 5 | + | local data = component.data |
| 6 | - | local modem = component.modem |
| 6 | + | local modem = component.modem |
| 7 | - | modem.open(340) |
| 7 | + | modem.open(340) |
| 8 | - | local ok, config = pcall(dofile, "/usr/etc/osu_config.lua") |
| 8 | + | local ok, config = pcall(dofile, "/usr/etc/osu_config.lua") |
| 9 | - | if not ok or not type(config) == "table" then |
| 9 | + | if not ok or not type(config) == "table" then |
| 10 | - | print("Error, failed to load config because '"..config.."'. Exiting!") |
| 10 | + | print("Error, failed to load config because '" .. config .. "'. Exiting!")
|
| 11 | - | os.exit() |
| 11 | + | os.exit() |
| 12 | end | |
| 13 | - | local args = require'shell'.parse(...) |
| 13 | + | local args = require 'shell'.parse(...) |
| 14 | - | local function containsValue(table, element) |
| 14 | + | local function containsValue(table, element) |
| 15 | - | for _, value in pairs(table) do |
| 15 | + | for _, value in pairs(table) do |
| 16 | - | if value == element then |
| 16 | + | if value == element then |
| 17 | - | return true |
| 17 | + | return true |
| 18 | - | end |
| 18 | + | end |
| 19 | - | end |
| 19 | + | end |
| 20 | - | return false |
| 20 | + | return false |
| 21 | end | |
| 22 | - | function containsKey(table, element) |
| 22 | + | function containsKey(table, element) |
| 23 | - | for key, _ in pairs(table) do |
| 23 | + | for key, _ in pairs(table) do |
| 24 | - | if key == element then |
| 24 | + | if key == element then |
| 25 | - | return true |
| 25 | + | return true |
| 26 | - | end |
| 26 | + | end |
| 27 | - | end |
| 27 | + | end |
| 28 | - | return false |
| 28 | + | return false |
| 29 | end | |
| 30 | - | local function onReceive(_, _, _, port, _, program, module, command, password, text, args1, args2, args3) |
| 30 | + | local function onReceive(_, _, _, port, _, program, module, command, password, text, args1, args2, args3) |
| 31 | - | if port == 340 then |
| 31 | + | if port == 340 then |
| 32 | - | if program == "OSU" then |
| 32 | + | if program == "OSU" then |
| 33 | - | password = data.decrypt(password, config.modules.network.encryption.key, config.modules.network.encryption.iv) |
| 33 | + | password = data.decrypt(password, config.modules.network.encryption.key, config.modules.network.encryption.iv) |
| 34 | - | text = data.decrypt(text, config.modules.network.encryption.key, config.modules.network.encryption.iv) |
| 34 | + | text = data.decrypt(text, config.modules.network.encryption.key, config.modules.network.encryption.iv) |
| 35 | - | if password == config.modules.network.password then |
| 35 | + | if password == config.modules.network.password then |
| 36 | - | if module == "DOOR" then |
| 36 | + | if module == "DOOR" then |
| 37 | - | if command == "UNLOCKALL" then |
| 37 | + | if command == "UNLOCKALL" then |
| 38 | - | if text == config.modules.door.override then |
| 38 | + | if text == config.modules.door.override then |
| 39 | - | for addr in component.list("os_doorcontroller") do |
| 39 | + | for addr in component.list("os_doorcontroller") do
|
| 40 | - | component.invoke(addr, "open") |
| 40 | + | component.invoke(addr, "open") |
| 41 | - | end |
| 41 | + | end |
| 42 | - | else |
| 42 | + | else |
| 43 | - | modem.broadcast(340, "OSU", "NETWORK", "RESPONSE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "INVALID_OVERRIDE_CODE") |
| 43 | + | modem.broadcast(340, "OSU", "NETWORK", "RESPONSE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "INVALID_OVERRIDE_CODE") |
| 44 | - | end |
| 44 | + | end |
| 45 | - | elseif command == "LOCKALL" then |
| 45 | + | elseif command == "LOCKALL" then |
| 46 | - | if text == config.modules.door.override then |
| 46 | + | if text == config.modules.door.override then |
| 47 | - | for addr in component.list("os_doorcontroller") do |
| 47 | + | for addr in component.list("os_doorcontroller") do
|
| 48 | - | component.invoke(addr, "close") |
| 48 | + | component.invoke(addr, "close") |
| 49 | - | end |
| 49 | + | end |
| 50 | - | else |
| 50 | + | else |
| 51 | - | modem.broadcast(340, "OSU", "NETWORK", "RESPONSE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "INVALID_OVERRIDE_CODE") |
| 51 | + | modem.broadcast(340, "OSU", "NETWORK", "RESPONSE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "INVALID_OVERRIDE_CODE") |
| 52 | - | end |
| 52 | + | end |
| 53 | - | end |
| 53 | + | end |
| 54 | - | elseif module == "LOCKDOWN" then |
| 54 | + | elseif module == "LOCKDOWN" then |
| 55 | - | if command == "INIT" then |
| 55 | + | if command == "INIT" then |
| 56 | - | if text == config.modules.lockdown.password then |
| 56 | + | if text == config.modules.lockdown.password then |
| 57 | - | if component.isAvailable("os_doorcontroller") then |
| 57 | + | if component.isAvailable("os_doorcontroller") then
|
| 58 | - | for addr in component.list("os_doorcontroller") do |
| 58 | + | for addr in component.list("os_doorcontroller") do
|
| 59 | - | component.invoke(addr, "close") |
| 59 | + | component.invoke(addr, "close") |
| 60 | - | end |
| 60 | + | end |
| 61 | - | else |
| 61 | + | else |
| 62 | - | modem.broadcast(340, "OSU", "NETWORK", "RESPONSE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "INVALID_LOCKDOWN_CODE") |
| 62 | + | modem.broadcast(340, "OSU", "NETWORK", "RESPONSE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "INVALID_LOCKDOWN_CODE") |
| 63 | - | end |
| 63 | + | end |
| 64 | - | if component.isAvailable("os_alarm") then |
| 64 | + | if component.isAvailable("os_alarm") then
|
| 65 | - | for addr in component.list("os_alarm") do |
| 65 | + | for addr in component.list("os_alarm") do
|
| 66 | - | component.invoke(addr, "activate") |
| 66 | + | component.invoke(addr, "activate") |
| 67 | - | end |
| 67 | + | end |
| 68 | - | end |
| 68 | + | end |
| 69 | - | if component.isAvailable("os_rolldoorcontroller") then |
| 69 | + | if component.isAvailable("os_rolldoorcontroller") then
|
| 70 | - | for addr in component.list("os_rolldoorcontroller") do |
| 70 | + | for addr in component.list("os_rolldoorcontroller") do
|
| 71 | - | component.invoke(addr, "close") |
| 71 | + | component.invoke(addr, "close") |
| 72 | - | end |
| 72 | + | end |
| 73 | - | end |
| 73 | + | end |
| 74 | - | end |
| 74 | + | end |
| 75 | - | elseif command == "STOP" then |
| 75 | + | elseif command == "STOP" then |
| 76 | - | if text == config.modules.lockdown.password then |
| 76 | + | if text == config.modules.lockdown.password then |
| 77 | - | if component.isAvailable("os_alarm") then |
| 77 | + | if component.isAvailable("os_alarm") then
|
| 78 | - | for addr in component.list("os_alarm") do |
| 78 | + | for addr in component.list("os_alarm") do
|
| 79 | - | component.invoke(addr, "deactivate") |
| 79 | + | component.invoke(addr, "deactivate") |
| 80 | - | end |
| 80 | + | end |
| 81 | - | else |
| 81 | + | else |
| 82 | - | modem.broadcast(340, "OSU", "NETWORK", "RESPONSE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "INVALID_LOCKDOWN_CODE") |
| 82 | + | modem.broadcast(340, "OSU", "NETWORK", "RESPONSE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "INVALID_LOCKDOWN_CODE") |
| 83 | - | end |
| 83 | + | end |
| 84 | - | end |
| 84 | + | end |
| 85 | - | end |
| 85 | + | end |
| 86 | - | elseif module == "NETWORK" then |
| 86 | + | elseif module == "NETWORK" then |
| 87 | - | if command == "REBOOT_ALL" then |
| 87 | + | if command == "REBOOT_ALL" then |
| 88 | - | if text == config.reboot_password then |
| 88 | + | if text == config.reboot_password then |
| 89 | - | computer.shutdown(true) |
| 89 | + | computer.shutdown(true) |
| 90 | - | end |
| 90 | + | end |
| 91 | - | end |
| 91 | + | end |
| 92 | - | end |
| 92 | + | end |
| 93 | - | end |
| 93 | + | end |
| 94 | - | end |
| 94 | + | end |
| 95 | - | end |
| 95 | + | end |
| 96 | end | |
| 97 | - | local function unlockDoor(_, _, username, data, _, _, _) |
| 97 | + | local function unlockDoor(_, _, username, data, _, _, _) |
| 98 | - | if data == config.modules.door.carddata then |
| 98 | + | if data == config.modules.door.carddata then |
| 99 | - | if not containsValue(config.modules.door.blacklist, username) then |
| 99 | + | if not containsValue(config.modules.door.blacklist, username) then |
| 100 | - | for addr,type in component.list("os_doorcontroller") do |
| 100 | + | for addr, type in component.list("os_doorcontroller") do
|
| 101 | - | component.invoke(addr, "open") |
| 101 | + | component.invoke(addr, "open") |
| 102 | - | end |
| 102 | + | end |
| 103 | - | else |
| 103 | + | else |
| 104 | - | modem.broadcast(430, "OSU", "DOOR", "UNLOCK", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "Blacklisted user "..username.." tried to open the door attached to this computer, with correct card data!!") |
| 104 | + | modem.broadcast(430, "OSU", "DOOR", "UNLOCK", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "Blacklisted user " .. username .. " tried to open the door attached to this computer, with correct card data!!") |
| 105 | - | return |
| 105 | + | return |
| 106 | - | end |
| 106 | + | end |
| 107 | - | else |
| 107 | + | else |
| 108 | - | if containsValue(config.modules.door.blacklist, username) then |
| 108 | + | if containsValue(config.modules.door.blacklist, username) then |
| 109 | - | modem.broadcast(430, "OSU", "DOOR", "UNLOCK", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "Blacklisted user "..username.." tried to open the door attached to this computer, with incorrect card data "..data.."!") |
| 109 | + | modem.broadcast(430, "OSU", "DOOR", "UNLOCK", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "Blacklisted user " .. username .. " tried to open the door attached to this computer, with incorrect card data " .. data .. "!") |
| 110 | - | return |
| 110 | + | return |
| 111 | - | else |
| 111 | + | else |
| 112 | - | modem.broadcast(430, "OSU", "DOOR", "UNLOCK", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "User "..username.." tried to open the door attached to this computer, with incorrect card data "..data.."!") |
| 112 | + | modem.broadcast(430, "OSU", "DOOR", "UNLOCK", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "User " .. username .. " tried to open the door attached to this computer, with incorrect card data " .. data .. "!") |
| 113 | - | return |
| 113 | + | return |
| 114 | - | end |
| 114 | + | end |
| 115 | - | end |
| 115 | + | end |
| 116 | - | os.sleep(config.modules.door.unlocktime) |
| 116 | + | os.sleep(config.modules.door.unlocktime) |
| 117 | - | for addr,type in component.list("os_doorcontroller") do |
| 117 | + | for addr, type in component.list("os_doorcontroller") do
|
| 118 | - | component.invoke(addr, "close") |
| 118 | + | component.invoke(addr, "close") |
| 119 | - | end |
| 119 | + | end |
| 120 | end | |
| 121 | - | local function activateAlarms(_, _, _, _, _, username) |
| 121 | + | local function activateAlarms(_, _, _, _, _, username) |
| 122 | - | if not containsValue(config.modules.alert.whitelist, username) then |
| 122 | + | if not containsValue(config.modules.alert.whitelist, username) then |
| 123 | - | for addr,type in component.list("os_alarm") do |
| 123 | + | for addr, type in component.list("os_alarm") do
|
| 124 | - | component.invoke(addr, "activate") |
| 124 | + | component.invoke(addr, "activate") |
| 125 | - | end |
| 125 | + | end |
| 126 | - | else |
| 126 | + | else |
| 127 | - | return |
| 127 | + | return |
| 128 | - | end |
| 128 | + | end |
| 129 | end | |
| 130 | - | if args[1] == "modules" then |
| 130 | + | if args[1] == "modules" then |
| 131 | - | if args[2] == "cardwriter" then |
| 131 | + | if args[2] == "cardwriter" then |
| 132 | - | if args[3] == "write" then |
| 132 | + | if args[3] == "write" then |
| 133 | - | if args[4] == nil then |
| 133 | + | if args[4] == nil then |
| 134 | - | io.write("Data: ") |
| 134 | + | io.write("Data: ")
|
| 135 | - | text = io.read() |
| 135 | + | text = io.read() |
| 136 | - | else |
| 136 | + | else |
| 137 | - | text = args[4] |
| 137 | + | text = args[4] |
| 138 | - | end |
| 138 | + | end |
| 139 | - | if args[5] == nil then |
| 139 | + | if args[5] == nil then |
| 140 | - | io.write("Name: ") |
| 140 | + | io.write("Name: ")
|
| 141 | - | name = io.read() |
| 141 | + | name = io.read() |
| 142 | - | else |
| 142 | + | else |
| 143 | - | name = args[5] |
| 143 | + | name = args[5] |
| 144 | - | end |
| 144 | + | end |
| 145 | - | ok, why = pcall(component.os_cardwriter.write, text, name, true) |
| 145 | + | ok, why = pcall(component.os_cardwriter.write, text, name, true) |
| 146 | - | if not ok then |
| 146 | + | if not ok then |
| 147 | - | print("Error, operation failed. Reason: "..why) |
| 147 | + | print("Error, operation failed. Reason: " .. why)
|
| 148 | - | return |
| 148 | + | return |
| 149 | - | end |
| 149 | + | end |
| 150 | - | modem.broadcast(430, "OSU", "CARDWRITER", "WRITE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "A user wrote card with data "..text.." and name "..name.." on the cardwriter conected to this computer!") |
| 150 | + | modem.broadcast(430, "OSU", "CARDWRITER", "WRITE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), "A user wrote card with data " .. text .. " and name " .. name .. " on the cardwriter conected to this computer!") |
| 151 | - | end |
| 151 | + | end |
| 152 | - | elseif args[2] == "door" then |
| 152 | + | elseif args[2] == "door" then |
| 153 | - | if not component.isAvailable("os_doorcontroller") then |
| 153 | + | if not component.isAvailable("os_doorcontroller") then
|
| 154 | - | print("Error, door controller not available. Exiting.") |
| 154 | + | print("Error, door controller not available. Exiting.")
|
| 155 | - | os.exit() |
| 155 | + | os.exit() |
| 156 | - | end |
| 156 | + | end |
| 157 | - | if args[3] == "override" then |
| 157 | + | if args[3] == "override" then |
| 158 | - | if args[4] == nil then |
| 158 | + | if args[4] == nil then |
| 159 | - | io.write("Password: ") |
| 159 | + | io.write("Password: ")
|
| 160 | - | options = {} |
| 160 | + | options = {}
|
| 161 | - | options.pwchar = " " |
| 161 | + | options.pwchar = " " |
| 162 | - | pass = term.read(options) |
| 162 | + | pass = term.read(options) |
| 163 | - | else |
| 163 | + | else |
| 164 | - | pass = args[4] |
| 164 | + | pass = args[4] |
| 165 | - | end |
| 165 | + | end |
| 166 | - | if pass == config.modules.door.override then |
| 166 | + | if pass == config.modules.door.override then |
| 167 | - | modem.broadcast(430, "OSU", "DOOR", "UNLOCKALL", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), data.encrypt(config.modules.door.override, config.modules.network.encryption.key, config.modules.network.encryption.iv)) |
| 167 | + | modem.broadcast(430, "OSU", "DOOR", "UNLOCKALL", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), data.encrypt(config.modules.door.override, config.modules.network.encryption.key, config.modules.network.encryption.iv)) |
| 168 | - | for addr in component.list("os_doorcontroller") do |
| 168 | + | for addr in component.list("os_doorcontroller") do
|
| 169 | - | component.invoke(addr, "open") |
| 169 | + | component.invoke(addr, "open") |
| 170 | - | end |
| 170 | + | end |
| 171 | - | else |
| 171 | + | else |
| 172 | - | print("Incorrect password!") |
| 172 | + | print("Incorrect password!")
|
| 173 | - | end |
| 173 | + | end |
| 174 | - | elseif args[3] == "override_lock" then |
| 174 | + | elseif args[3] == "override_lock" then |
| 175 | - | if args[4] == nil then |
| 175 | + | if args[4] == nil then |
| 176 | - | io.write("Password: ") |
| 176 | + | io.write("Password: ")
|
| 177 | - | options = {} |
| 177 | + | options = {}
|
| 178 | - | options.pwchar = " " |
| 178 | + | options.pwchar = " " |
| 179 | - | pass = term.read(options) |
| 179 | + | pass = term.read(options) |
| 180 | - | else |
| 180 | + | else |
| 181 | - | pass = args[4] |
| 181 | + | pass = args[4] |
| 182 | - | end |
| 182 | + | end |
| 183 | - | if pass == config.modules.door.override then |
| 183 | + | if pass == config.modules.door.override then |
| 184 | - | for addr,type in component.list("os_doorcontroller") do |
| 184 | + | for addr, type in component.list("os_doorcontroller") do
|
| 185 | - | component.invoke(addr, "close") |
| 185 | + | component.invoke(addr, "close") |
| 186 | - | end |
| 186 | + | end |
| 187 | - | else |
| 187 | + | else |
| 188 | - | print("Incorrect password!") |
| 188 | + | print("Incorrect password!")
|
| 189 | - | end |
| 189 | + | end |
| 190 | - | elseif args[3] == "start_magnetic" then |
| 190 | + | elseif args[3] == "start_magnetic" then |
| 191 | - | if not component.isAvailable("os_magreader") then |
| 191 | + | if not component.isAvailable("os_magreader") then
|
| 192 | - | print("Error, magnetic card reader not available. Exiting.") |
| 192 | + | print("Error, magnetic card reader not available. Exiting.")
|
| 193 | - | os.exit() |
| 193 | + | os.exit() |
| 194 | - | end |
| 194 | + | end |
| 195 | - | id_door, _, _, username, data, _, _, _ = event.listen("magData", unlockDoor) |
| 195 | + | id_door, _, _, username, data, _, _, _ = event.listen("magData", unlockDoor)
|
| 196 | - | elseif args[3] == "stop" then |
| 196 | + | elseif args[3] == "stop" then |
| 197 | - | if id_door == nil then |
| 197 | + | if id_door == nil then |
| 198 | - | print("Error, not started.") |
| 198 | + | print("Error, not started.")
|
| 199 | - | os.exit() |
| 199 | + | os.exit() |
| 200 | - | end |
| 200 | + | end |
| 201 | - | event.cancel(id_door) |
| 201 | + | event.cancel(id_door) |
| 202 | - | end |
| 202 | + | end |
| 203 | - | elseif args[2] == nil then |
| 203 | + | elseif args[2] == nil then |
| 204 | - | print("Usage: osu modules [MODULE] [COMMAND]") |
| 204 | + | print("Usage: osu modules [MODULE] [COMMAND]")
|
| 205 | - | elseif args[2] == "alert" then |
| 205 | + | elseif args[2] == "alert" then |
| 206 | - | if args[3] == "start" then |
| 206 | + | if args[3] == "start" then |
| 207 | - | if not component.isAvailable("motion_sensor") then |
| 207 | + | if not component.isAvailable("motion_sensor") then
|
| 208 | - | print("Error, motion sensor not available.") |
| 208 | + | print("Error, motion sensor not available.")
|
| 209 | - | os.exit() |
| 209 | + | os.exit() |
| 210 | - | end |
| 210 | + | end |
| 211 | - | if not component.isAvailable("os_alarm") then |
| 211 | + | if not component.isAvailable("os_alarm") then
|
| 212 | - | print("Error, alarm not available.") |
| 212 | + | print("Error, alarm not available.")
|
| 213 | - | os.exit() |
| 213 | + | os.exit() |
| 214 | - | end |
| 214 | + | end |
| 215 | - | id_alert, _, _, _, _, _, username = event.listen("motion", activateAlarms) |
| 215 | + | id_alert, _, _, _, _, _, username = event.listen("motion", activateAlarms)
|
| 216 | - | elseif args[3] == "stop" then |
| 216 | + | elseif args[3] == "stop" then |
| 217 | - | event.cancel(id_alert) |
| 217 | + | event.cancel(id_alert) |
| 218 | - | for addr in component.list("os_alarm") do |
| 218 | + | for addr in component.list("os_alarm") do
|
| 219 | - | component.proxy(addr).deactivate() |
| 219 | + | component.proxy(addr).deactivate() |
| 220 | - | end |
| 220 | + | end |
| 221 | - | end |
| 221 | + | end |
| 222 | - | elseif args[2] == "network" then |
| 222 | + | elseif args[2] == "network" then |
| 223 | - | if args[3] == "start_client" then |
| 223 | + | if args[3] == "start_client" then |
| 224 | - | id_network, _, _, sender, port, _, program, module, command, password, data, args1, args2, args3 = event.listen("modem_message", onReceive) |
| 224 | + | id_network, _, _, sender, port, _, program, module, command, password, data, args1, args2, args3 = event.listen("modem_message", onReceive)
|
| 225 | - | end |
| 225 | + | elseif args[3] == "stop_client" then |
| 226 | - | elseif args[3] == "stop_client" then |
| 226 | + | event.cancel(id_network) |
| 227 | - | event.cancel(id_network) |
| 227 | + | elseif args[3] == "send_message" then |
| 228 | - | elseif args[3] == "send_message" then |
| 228 | + | io.write("Message: ")
|
| 229 | - | io.write("Message: ") |
| 229 | + | message = io.read() |
| 230 | - | message = io.read() |
| 230 | + | modem.broadcast(340, "OSU", "NETWORK", "SEND_MESSAGE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), message) |
| 231 | - | modem.broadcast(340, "OSU", "NETWORK", "SEND_MESSAGE", data.encrypt(config.modules.network.password, config.modules.network.encryption.key, config.modules.network.encryption.iv), message) |
| 231 | + | elseif args[3] == "display" then |
| 232 | - | elseif args[3] == "display" then |
| 232 | + | term.clear() |
| 233 | - | term.clear() |
| 233 | + | function printOutput() |
| 234 | - | function printOutput() |
| 234 | + | _, _, sender, port, _, program, module, command, password, data, args1, args2, args3 = event.pull("modem_message")
|
| 235 | - | _, _, sender, port, _, program, module, command, password, data, args1, args2, args3 = event.pull("modem_message") |
| 235 | + | if port == 430 then |
| 236 | - | if port == 430 then |
| 236 | + | if program == "OSU" then |
| 237 | - | if program == "OSU" then |
| 237 | + | password = data.decrypt(password, config.modules.network.encryption.key, config.modules.network.encryption.iv) |
| 238 | - | password = data.decrypt(password, config.modules.network.encryption.key, config.modules.network.encryption.iv) |
| 238 | + | if password == config.modules.network.password then |
| 239 | - | if password == config.modules.network.password then |
| 239 | + | print("Received message from " .. sender .. "'s module '" .. module .. "'. Data: " .. data)
|
| 240 | - | print("Received message from "..sender.."'s module '"..module.."'. Data: "..data) |
| 240 | + | end |
| 241 | - | end |
| 241 | + | end |
| 242 | - | end |
| 242 | + | end |
| 243 | - | end |
| 243 | + | end |
| 244 | - | end |
| 244 | + | else |
| 245 | - | else |
| 245 | + | print("Usage: osu modules network [COMMAND].")
|
| 246 | - | print("Usage: osu modules network [COMMAND].") |
| 246 | + | print("Commands:")
|
| 247 | - | print("Commands:") |
| 247 | + | print(" osu modules network start_client - listens for network messages from other clients / the main server")
|
| 248 | - | print(" osu modules network start_client - listens for network messages from other clients / the main server") |
| 248 | + | print(" osu modules network stop_client - stops listening for messages")
|
| 249 | - | print(" osu modules network stop_client - stops listening for messages") |
| 249 | + | print(" osu modules network send_message - sends a network message")
|
| 250 | - | print(" osu modules network send_message - sends a network message") |
| 250 | + | print(" osu modules network display - displays all received OSU network messages")
|
| 251 | - | print(" osu modules network display - displays all received OSU network messages") |
| 251 | + | end |
| 252 | - | end |
| 252 | + | else |
| 253 | - | else |
| 253 | + | print("Error, not a valid module.")
|
| 254 | - | print("Error, not a valid module.") |
| 254 | + | print("Valid modules: ")
|
| 255 | - | print("Valid modules: ") |
| 255 | + | for k, v in pairs(config.modules) do |
| 256 | - | for k,v in pairs(config.modules) do |
| 256 | + | print(k) |
| 257 | - | print(k) |
| 257 | + | end |
| 258 | - | end |
| 258 | + | end |
| 259 | - | elseif args[1] == "components" then |
| 259 | + | elseif args[1] == "components" then |
| 260 | - | if args[2] == "list" then |
| 260 | + | if args[2] == "list" then |
| 261 | - | for address,type in component.list() do |
| 261 | + | for address, type in component.list() do |
| 262 | - | if type:match("os_") == "os_" then |
| 262 | + | if type:match("os_") == "os_" then
|
| 263 | - | print(type:match("^.+_(.+)$")) |
| 263 | + | print(type:match("^.+_(.+)$"))
|
| 264 | - | end |
| 264 | + | end |
| 265 | - | end |
| 265 | + | end |
| 266 | - | else |
| 266 | + | else |
| 267 | - | print("Usage: osu components [COMMAND]") |
| 267 | + | print("Usage: osu components [COMMAND]")
|
| 268 | - | print("Commands:") |
| 268 | + | print("Commands:")
|
| 269 | - | print(" list - lists all connected OpenSecurity components") |
| 269 | + | print(" list - lists all connected OpenSecurity components")
|
| 270 | - | end |
| 270 | + | end |
| 271 | - | else |
| 271 | + | else |
| 272 | - | print("Usage: osu [COMMAND]") |
| 272 | + | print("Usage: osu [COMMAND]")
|
| 273 | - | print("Commands:") |
| 273 | + | print("Commands:")
|
| 274 | - | print(" osu modules - module-related commands") |
| 274 | + | print(" osu modules - module-related commands")
|
| 275 | - | print(" osu components - component-related commands") |
| 275 | + | print(" osu components - component-related commands")
|
| 276 | end |