View difference between Paste ID: e1dux1ht and 2WYkaNB4
SHOW: | | - or go back to the newest paste.
1-
--Unnamed message forwarding
1+
--Unnamed message forwarding
2-
--This is WTFPL, just change the name, OK?
2+
--This is WTFPL, just change the name, OK?
3-
--Version 1.0 - this means it's the most broken yet
3+
--Version 1.0 - this means it's the most broken yet
4-
--I commented out all they annoying text outputs. You people love me.
4+
--I commented out all they annoying text outputs. You people love me.
5-
5+
6-
local component = require "component"
6+
local component = require "component"
7-
local event = require "event"
7+
local event = require "event"
8-
local text = require "text"
8+
local text = require "text"
9-
local shell = require "shell"
9+
local shell = require "shell"
10-
local serial = require "serialization"
10+
local serial = require "serialization"
11-
11+
12-
modem = component.modem
12+
modem = component.modem
13-
local modemPower = 400
13+
local modemPower = 400
14-
local msgBuffer = {}
14+
local msgBuffer = {}
15-
nodeAddr = "derp3"
15+
nodeAddr = "derp3"
16-
local magicNumbers = {}
16+
local magicNumbers = {}
17-
17+
18-
local function extractPath(path)
18+
local function extractPath(path)
19-
 if path:find("!") ~= nil then
19+
 if path:find("!") ~= nil then
20-
  return path:sub(1,path:find("!")-1), path:sub(path:find("!")+1,path:len())
20+
  return path:sub(1,path:find("!")-1), path:sub(path:find("!")+1,path:len())
21-
 else
21+
 else
22-
  return path, path
22+
  return path, path
23-
 end
23+
 end
24-
end
24+
end
25-
25+
26-
function recvMsg(name,user,message)
26+
function recvMsg(name,user,message)
27-
 local f = io.open("/home/"..user.."/mail/"..name,"ab")
27+
 local f = io.open("/home/"..user.."/mail/"..name,"ab")
28-
 if f ~= nil then
28+
 if f ~= nil then
29-
  f:write(message)
29+
  f:write(message)
30-
  f:close()
30+
  f:close()
31-
 end
31+
 end
32-
end
32+
end
33-
33+
34-
local function sks_send(path,retPath,name,user,message)
34+
local function sks_send(path,retPath,name,user,message)
35-
 local toAddr, contPath = extractPath(path)
35+
 local toAddr, contPath = extractPath(path)
36-
 --print(toAddr,contPath)
36+
 --print(toAddr,contPath)
37-
 modem.broadcast(42,toAddr,contPath,retPath,name,user,message,math.random(0,65535))
37+
 modem.broadcast(42,toAddr,contPath,retPath,name,user,message,math.random(0,65535))
38-
end
38+
end
39-
39+
40-
local function store(path,retPath,name,user,message)
40+
local function store(path,retPath,name,user,message)
41-
 table.insert(msgBuffer,{path,retPath,name,user,message})
41+
 table.insert(msgBuffer,{path,retPath,name,user,message})
42-
end
42+
end
43-
43+
44-
function msgListener(_,_,from,port,_,toAddr,path,retPath,name,user,message,magNum)
44+
function msgListener(_,_,from,port,_,toAddr,path,retPath,name,user,message,magNum)
45-
 local hBR = false
45+
 local hBR = false
46-
 for i = 1, #magicNumbers do
46+
 for i = 1, #magicNumbers do
47-
  if magicNumbers[i] == magNum then
47+
  if magicNumbers[i] == magNum then
48-
   hBR = true
48+
   hBR = true
49-
  end
49+
  end
50-
 end
50+
 end
51-
 if not hBR then
51+
 if not hBR then
52-
  if port == 42 and path ~= nodeAddr and toAddr == nodeAddr then
52+
  if port == 42 and path ~= nodeAddr and toAddr == nodeAddr then
53-
   store(path,retPath,name,user,message)
53+
   store(path,retPath,name,user,message)
54-
   --print "routed"
54+
   --print "routed"
55-
  elseif port == 42 and path == nodeAddr and toAddr == nodeAddr then
55+
  elseif port == 42 and path == nodeAddr and toAddr == nodeAddr then
56-
   --print "Mail recieved!"
56+
   --print "Mail recieved!"
57-
   recvMsg(name,user,message)
57+
   recvMsg(name,user,message)
58-
  end
58+
  end
59-
 end
59+
 end
60-
end
60+
end
61-
61+
62-
local function sendTimer()
62+
local function sendTimer()
63-
 --print "Send timer activated"
63+
 --print "Send timer activated"
64-
 if #msgBuffer > 0 then
64+
 if #msgBuffer > 0 then
65-
  for i = 1, #msgBuffer do
65+
  for i = 1, #msgBuffer do
66-
   sks_send(msgBuffer[i][1],msgBuffer[i][2],msgBuffer[i][3],msgBuffer[i][4],msgBuffer[i][5])
66+
   sks_send(msgBuffer[i][1],msgBuffer[i][2],msgBuffer[i][3],msgBuffer[i][4],msgBuffer[i][5])
67-
  end
67+
  end
68-
  msgBuffer = {}
68+
  msgBuffer = {}
69-
  --print "Messages sent!"
69+
  --print "Messages sent!"
70-
 else
70+
 else
71-
  --print "No messages sent!"
71+
  --print "No messages sent!"
72-
 end
72+
 end
73-
end
73+
end
74-
74+
75-
local function loadConfig()
75+
local function loadConfig()
76-
 local f = io.open("/etc/net.cfg")
76+
 local f = io.open("/etc/net.cfg")
77-
 local configTab = serial.unserialize(f:read("*a"))
77+
 local configTab = serial.unserialize(f:read("*a"))
78-
 f:close()
78+
 f:close()
79-
 nodeAddr = configTab.nodeName
79+
 nodeAddr = configTab.nodeName
80-
 modemPower = configTab.modemPower
80+
 modemPower = configTab.modemPower
81-
end
81+
end
82-
82+
83-
local function setup()
83+
local function setup()
84-
 modem.open(42)
84+
 modem.open(42)
85-
 --loadConfig()
85+
 --loadConfig()
86-
 --pcall(modem.setStrength(modemPower))
86+
 --pcall(modem.setStrength(modemPower))
87-
 print("netnode.d v1.0 running; nodename: " .. nodeAddr)
87+
 print("netnode.d v1.0 running; nodename: " .. nodeAddr)
88-
 event.listen("modem_message",msgListener)
88+
 event.listen("modem_message",msgListener)
89-
 event.timer(1,sendTimer,math.huge)
89+
 event.timer(1,sendTimer,math.huge)
90-
 sendTimer()
90+
 sendTimer()
91-
end
91+
end
92-
92+
93
setup()