Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component, computer = component, computer
- if require then component = require "component" computer = require "computer" end
- local netcards = {}
- for addr in component.list "modem" do table.insert(netcards, component.proxy(addr)) end
- local tunnels = {}
- for addr in component.list "tunnel" do table.insert(tunnels, component.proxy(addr)) end
- local computer_id = component.list "computer"()
- local computer_peripheral = component.proxy(computer_id)
- local computer_sid = computer_id:sub(1, 8)
- local eeprom = component.proxy(component.list "eeprom"())
- computer_peripheral.beep(600)
- local recents = {}
- local PORT = 4096
- local DBG_PORT = 4097
- for _, card in pairs(netcards) do
- card.open(PORT)
- card.open(DBG_PORT)
- card.setWakeMessage("poweron", true)
- if card.setStrength then card.setStrength(math.huge) end
- computer_peripheral.beep(1500)
- end
- for _, tun in pairs(tunnels) do tun.setWakeMessage("poweron", true) computer_peripheral.beep(1200) end
- computer_peripheral.beep(400)
- while true do
- local ev, _, _, port, distance, mtxt, mid = computer.pullSignal(5)
- if ev == "modem_message" and type(mid) == "string" and mtxt ~= nil and (port == PORT or port == 0) and not recents[mid] then
- recents[mid] = computer.uptime() + 120
- for _, card in pairs(netcards) do
- pcall(card.broadcast, PORT, mtxt, mid, computer_sid)
- end
- for _, tun in pairs(tunnels) do
- pcall(tun.send, mtxt, mid, computer_sid)
- end
- end
- if ev == "modem_message" and type(mtxt) == "string" and port == DBG_PORT and distance < 8 then
- if mtxt == "ping" then
- computer_peripheral.beep(1000)
- card.broadcast(DBG_PORT, computer_sid)
- elseif mtxt == "flash" and type(mid) == "string" then
- computer_peripheral.beep(800)
- eeprom.set(mid)
- end
- end
- local uptime = computer.uptime()
- for mid, deadline in pairs(recents) do
- if uptime > deadline then
- recents[mid] = nil
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement