Advertisement
Baennon

RedMail Server

Aug 27th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.82 KB | None | 0 0
  1. function split(pString, pPattern)
  2.    local Table = {}  -- NOTE: use {n = 0} in Lua-5.0
  3.    local fpat = "(.-)" .. pPattern
  4.    local last_end = 1
  5.    local s, e, cap = pString:find(fpat, 1)
  6.    while s do
  7.           if s ~= 1 or cap ~= "" then
  8.          table.insert(Table,cap)
  9.           end
  10.           last_end = e+1
  11.           s, e, cap = pString:find(fpat, last_end)
  12.    end
  13.    if last_end <= #pString then
  14.           cap = pString:sub(last_end)
  15.           table.insert(Table, cap)
  16.    end
  17.    return Table
  18. end
  19.  
  20. if not fs.exists("unread.mail") then
  21.   local f = fs.open("unread.mail","w")
  22.   f.close()
  23. end
  24.  
  25. if not fs.exists("config.mail") then
  26.   local f = fs.open("config.mail","w")
  27.   print("Which side the modem is ? ")
  28.   local s = read()
  29.   f.write(s)
  30.   f.close()
  31. end
  32.  
  33. while true do
  34.   local config = fs.open("config.mail","r")
  35.   local modem_side = config.readLine()
  36.   config.close()
  37.   rednet.open(modem_side)
  38.   id, message = rednet.receive()
  39.   local splited = split(message,"|")
  40.   local action = splited[1]
  41.   if action == "send" then
  42.     local receiver = splited[2]
  43.     local sender = splited[3]
  44.     local subject = splited[4]
  45.     local corpse = splited[5]
  46.     local f1 = fs.open("unread.mail","r")
  47.     local data = f1.readAll()
  48.     f1.close()
  49.     local f = fs.open("unread.mail","w")
  50.     f.write(data .. receiver .."|".. sender .."|".. subject .."|".. corpse .."§")
  51.     f.close()
  52.   elseif action == "fetch" then
  53.     local user = splited[2]
  54.     local f = fs.open("unread.mail","r")
  55.     local fData = f.readAll()
  56.     f.close()
  57.     local newFData = ""
  58.     local fetchedMails = ""
  59.     local unreadNumber = 0
  60.     for key,line in pairs(split(fData,"§")) do
  61.        local sLine = split(line,"|")
  62.        local receiver = sLine[1]
  63.        if receiver == user then
  64.          if fetchedMails == "" then
  65.            fetchedMails = line .."§"
  66.          else
  67.            fetchedMails = fetchedMails .. line .. "§"
  68.          end
  69.        else
  70.          unreadNumber = unreadNumber + 1
  71.          if newFData == "" then
  72.            newFData = line.."§"
  73.          else
  74.            newFData = newFData .. line .. "§"
  75.          end
  76.        end
  77.     end
  78.     local m = peripheral.wrap("front")
  79.     m.clear()
  80.     m.setCursorPos(1,1)
  81.     m.setTextScale(1)
  82.     m.write("Unread Mails : "..unreadNumber)
  83.     if not fs.exists(user .."/archive.mail") then
  84.       local archive = fs.open(user .."/archive.mail","w")
  85.       archive.close()
  86.     end
  87.     local archiveData = fs.open(user .."/archive.mail","r")
  88.     local archiveMails = archiveData.readAll()
  89.     archiveData.close()
  90.     local newArchive = fs.open(user .."/archive.mail","w")
  91.     newArchive.write(archiveMails .. fetchedMails)
  92.     newArchive.close()
  93.     local newF = fs.open("unread.mail","w")
  94.     newF.write(newFData)
  95.     newF.close()
  96.     rednet.send(id, fetchedMails)  
  97.   end
  98. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement