Guest User

Untitled

a guest
Dec 12th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.40 KB | None | 0 0
  1.  
  2. function send(account, to, email)
  3.     local message = ("@EMX~"..to.."~"..account.."~"..email)
  4.     local file = fs.open("EMX/emails/"..to, "a")
  5.     file.writeLine(message)
  6.     file.close()
  7. end
  8.  
  9. function getNumberOfEnters(data, string)
  10.     local n = 0
  11.     for i,v in ipairs(data) do
  12.         if v == string then
  13.             n = n + 1
  14.         end
  15.     end
  16.     return n
  17. end
  18.  
  19. function getAllEmails(account)
  20.     if idExists(account) then
  21.         local data = {}
  22.         local temp = {}
  23.         local cur = 1
  24.         local file = fs.open("EMX/emails/account", "r")
  25.         local line = file.readLine()
  26.         while line ~= nil do
  27.             local sender = getMessage(line)
  28.             sender = getSender(sender)
  29.             local n = getNumberOfEnters(temp, sender)
  30.             n = n + 1
  31.             data[cur] = sender.." ["..n.."]"
  32.             temp[cur] = sender
  33.             cur = cur + 1
  34.             line = file.readLine()
  35.         end
  36.         file.close()
  37.         return data
  38.     else
  39.         return nil
  40.     end
  41. end
  42.  
  43. function returnEmail(account, name)
  44.     if idExists(account) then
  45.         local email = nil
  46.         local temp = {}
  47.         local cur = 1
  48.         local file = fs.open("EMX/emails/account", "r")
  49.         local line = file.readLine()
  50.         while line ~= nil do
  51.             local msg = getMessage(line)
  52.             local sender = getSender(msg)
  53.             local n = getNumberOfEnters(temp, sender)
  54.             n = n + 1
  55.             local curname = sender..":"..n
  56.             if curname == name then
  57.                 email = line
  58.             end
  59.             temp[cur] = sender
  60.             cur = cur + 1
  61.             line = file.readLine()
  62.         end
  63.         file.close()
  64.         return email
  65.     else
  66.         return nil
  67.     end
  68. end
  69.  
  70. function joinTables(t1, t2)
  71.     for k,v in ipairs(t2) do table.insert(t1, v) end return t1
  72. end
  73.  
  74. function readEmail(broadcast, id)
  75.     if isEmail(broadcast) then
  76.         local msg = getMessage(broadcast)
  77.         local mid = getID(msg)
  78.         if mid == id then
  79.             local email = getEmail(msg)
  80.             local sender = getSender(msg)
  81.             local sendername = getNickname(sender)
  82.             local toname = getNickname(id)
  83.             if toname ~= nil and sendername ~= nil then
  84.                 local start = {"From:"..sendername, "To:"..toname}
  85.                 local split = string.split(email, "}")
  86.                 local data = joinTables(start, split)
  87.                 return data
  88.             else
  89.                 local data = {"NOT A VALID EMAIL", "CANNOT READ EMAIL"}
  90.                 return data
  91.             end
  92.            
  93.         else
  94.             local data = {"NOT A VALID USER", "CANNOT READ EMAIL"}
  95.             return data
  96.         end
  97.     end
  98. end
  99.  
  100. function startUp()
  101.     fs.makeDir("EMX")
  102.     fs.makeDir("EMX/data")
  103.     fs.makeDir("EMX/emails")
  104.     local file = fs.open("EMX/data/ids", "a")
  105.     file.close()
  106. end
  107.  
  108. function getSender(message)
  109.     if isEmail(message) then
  110.         message = getMessage(message)
  111.     end
  112.     local id = string.sub(message, 6, 9)
  113.     return id
  114. end
  115.  
  116. function isEmail(broadcast)
  117.     if starts(broadcast, "@EMX~") then
  118.         return true
  119.     else
  120.         return false
  121.     end
  122. end
  123.  
  124. function getID(message)
  125.     if isEmail(message) then
  126.         message = getMessage(message)
  127.     end
  128.     local id = string.sub(message, 1, 4)
  129.     return id
  130. end
  131.  
  132. function getEmail(message)
  133.     if isEmail(message) then
  134.         message = getMessage(message)
  135.     end
  136.     local msg = string.sub(message, 10, -1)
  137.     return msg
  138. end
  139.  
  140. function getMessage(broadcast)
  141.     if isEmail(broadcast) then
  142.         local s = string.sub(broadcast, 6, -1)
  143.         return s
  144.     else
  145.         return nil
  146.     end
  147. end
  148.  
  149. function starts(String,Start)
  150.    return string.sub(String,1,string.len(Start))==Start
  151. end
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159. function idExists(id)
  160.     local ok = true
  161.     local file = fs.open("EMX/data/ids", "r")
  162.     local line = file.readLine()
  163.     while line ~= nil do
  164.         local cid = string.sub(line,1,4)
  165.         if cid == id then
  166.             ok = false
  167.         end
  168.         line = file.readLine()
  169.     end
  170.     file.close()
  171.     return ok
  172. end
  173.  
  174. function nicknameExists(nickname)
  175.     local ok = true
  176.     local file = fs.open("EMX/data/ids", "r")
  177.     local line = file.readLine()
  178.     while line ~= nil do
  179.         local name = string.sub(line,6,-1)
  180.         if name == nickname then
  181.             ok = false
  182.         end
  183.         line = file.readLine()
  184.     end
  185.     file.close()
  186.     return ok
  187. end
  188.  
  189. function newAccount(nickname, password)
  190.     if nicknameExists(nickname) then
  191.         return "nonick"
  192.     else
  193.         local id = math.random(1000, 9999)
  194.         local max = 0
  195.         while idExists == false and max < 9999 do
  196.             id = math.random(1000, 9999)
  197.             max = max + 1
  198.         end
  199.        
  200.         if max >= 9999 then
  201.             return "noid"
  202.         else
  203.             local file = fs.open("EMX/data/ids", "a")
  204.             local temp = fs.open("EMX/emails/"..id, "a")
  205.             file.writeLine(id.."~"..nickname.."~"..password)
  206.             file.close()
  207.             temp.close()
  208.             return "ok"
  209.         end
  210.     end
  211. end
  212.  
  213. function getTrueId(nickname)
  214.     local tid = nil
  215.     local file = fs.open("EMX/data/ids", "r")
  216.     local line = file.readLine()
  217.     while line ~= nil do
  218.         local name = string.sub(line,6,-1)
  219.         if name == nickname then
  220.             local id = string.sub(line,1,4)
  221.             tid = id
  222.         end
  223.         line = file.readLine()
  224.     end
  225.     file.close()
  226.     return tid
  227. end
  228.  
  229. function matchPassword(id, password)
  230.     local ok = false
  231.     local file = fs.open("EMX/data/ids", "r")
  232.     local line = file.readLine()
  233.     while line ~= nil do
  234.         local cid = string.sub(line,1,4)
  235.         if cid == id then
  236.             local name = string.sub(line,6,-1)
  237.             local split = string.split(name, "~")
  238.             local pass = split[2]
  239.             if pass == password then
  240.                 ok = true
  241.             end
  242.         end
  243.         line = file.readLine()
  244.     end
  245.     file.close()
  246.     return ok
  247. end
  248.  
  249. function getNickname(id)
  250.     local nname = nil
  251.     local file = fs.open("EMX/data/ids", "r")
  252.     local line = file.readLine()
  253.     while line ~= nil do
  254.         local cid = string.sub(line,1,4)
  255.         if cid == id then
  256.             local name = string.sub(line,6,-1)
  257.             local split = string.split(name, "~")
  258.             nname = split[1]
  259.         end
  260.         line = file.readLine()
  261.     end
  262.     file.close()
  263.     return nname
  264. end
Add Comment
Please, Sign In to add comment