Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local mailpath = "cozy/programs/email/"
- local mailList = {}
- local bgcolor = colors.black
- local inEmail = false
- local mType = "inbox"
- local opMail = ""
- local mailSender= ""
- local id = os.getComputerID()
- local username = ""
- foundMail = false
- local inInbox=false
- local w,h = term.getSize()
- os.loadAPI("ea")
- os.loadAPI("cozy_string")
- write("Enter Rednet Modem Side: ")
- rednet.open(read())
- function clearLineLength(x,y,l)
- ea.scp(x,y)
- ea.sbc(colors.white)
- print(" ")
- end
- function getUser()
- ea.stc(colors.black)
- ea.sbc(colors.blue)
- term.clear()
- ea.scp(20,5)
- print("Sign Into User")
- ea.scp(1,10)
- print("Username: ")
- print("Password: ")
- ea.scp(10,10)
- us = read()
- ea.scp(10,11)
- up = read("*")
- rednet.broadcast("COZY_GETUSER")
- local id, msg = rednet.receive(2)
- if(msg == nil)then error("Connection to server failed!") end
- rednet.send(id,us)
- local id, valid = rednet.receive()
- if(valid)then
- local id, cpass = rednet.receive()
- if(up == cpass)then corpass=true else corpass = false end
- end
- if(valid and corpass)then inEmail = true; username = us; updateEmailFiles(); clear(); CMail() end
- if(not valid)then ea.sp("Username Invalid") getUser() end
- if(not corpass)then ea.sp("Password Invalid") getUser() end
- end
- function createUser()
- ea.sbc(colors.blue)
- term.clear()
- ea.scp(20,5)
- print("Create User")
- ea.scp(1,10)
- print("Username: ")
- print("Password: ")
- ea.scp(10,10)
- us = read()
- ea.scp(10,11)
- up = read()
- rednet.broadcast("COZY_CREATEUSER")
- local id, got = rednet.receive(2)
- if(got ~= nil)then
- rednet.send(tonumber(id),us)
- local id, valid = rednet.receive()
- if(valid)then
- rednet.send(tonumber(id),up)
- ea.sp("User Created!")
- f = fs.open("cozy/programs/email/login/.user","w")
- f.writeLine("--]] Has Login [[--")
- f.writeLine("true")
- f.close()
- getUser()
- else
- ea.sp("Username Unavailable!")
- end
- else
- error("Server Connection Failed!")
- end
- end
- function clear()
- ea.sbc(bgcolor);
- term.clear();
- ea.scp(1,1)
- ea.sbc(colors.blue)
- term.clearLine()
- ea.scp(1,1)
- ea.stc(colors.white)
- print("COZYMAIL")
- ea.scp(w-((#username)+2), 1)
- print("["..username.."]")
- ea.sbc(colors.gray)
- for i = 3, 15 do
- ea.scp(1,i)
- print(string.rep(" ",12))
- end
- ea.sbc(colors.white)
- for i = 3, 17 do
- ea.scp(15,i)
- print(string.rep(" ",36))
- end
- ea.scp(15,3)
- ea.stc(colors.black)
- print("["..string.rep("=",33).."]")
- ea.scp(1,3)
- ea.stc(colors.green)
- ea.sbc(colors.gray)
- print("|---------|")
- print("| [INBOX] |")
- print("| [USER ] |")
- print("| [SEND ] |")
- print("|NO[Block]|")
- print("|NO[Chat] |")
- print("|---------|")
- end
- function printEmail(type)
- for k,v in pairs(mailList) do
- if(v.type == type)then
- ea.sbc(colors.white)
- ea.scp(15,v.offset+3)
- if(v.sender == nil or v.disc == nil)then ea.stc(colors.red); print("CORRUPED EMAIL") else ea.stc(colors.black); print(v.sender.." - "..v.disc) end
- end
- end
- end
- function openMail(mail)
- i = 0
- clear()
- ea.scp(15,4)
- ea.scp(15,15)
- print("[REPLY]")
- ea.stc(colors.red)
- ea.scp(43,15)
- print("[DELETE]")
- ea.stc(colors.black)
- ea.sbc(colors.white)
- f = io.open(mail,"r")
- for line in f:lines() do
- ea.scp(15,i+4)
- print(line)
- i = i + 1
- end
- end
- function updateEmail()
- m = {os.pullEvent()}
- if(m[1] == "mouse_click" and m[2] == 1)then
- if(m[3] >= 3 and m[3] <= 8 and m[4] == 4 and not inInbox)then
- --mType = "inbox"
- clear()
- ea.scp(15,4)
- updateEmailFiles()
- if(readingMail)then readingMail = false end
- if(sending)then sending = false end
- --inInbox=true
- end
- if(m[3] >= 3 and m[3] <= 8 and m[4] == 5)then
- --mType = "spam"
- if(readingMail)then readingMail = false end
- if(sending)then sending = false end
- clear()
- inEmail = false
- getUser()
- end
- if(m[3] >= 3 and m[3] <= 8 and m[4] == 6)then
- clear()
- rcr=nil
- rcsub=nil
- bp1=nil
- bp2=nil
- bp3=nil
- bp5=nil
- bp6=nil
- bp7=nil
- sendEmail()
- t = 0;
- sending=true
- end
- if(not readingMail and not sending)then
- for k,v in pairs(mailList) do
- if(m[3] >= 15 and m[3] <= #v.sender+15 and m[4] == v.offset+3)then
- ea.sbc(colors.white)
- readingMail = true
- print(v.path.." "..v.offset)
- openMail(v.path)
- opMail = v.path
- mailSender = v.sender
- opName = k
- mType = v.type
- end
- end
- else
- if(not sending)then
- if(m[3] >= 16 and m[3] <= 21 and m[4] == 15)then
- clear()
- rcr="Bob"
- sendEmail()
- sending=true
- readingMail=false
- end
- if(m[3] >= 43 and m[3] <= 50 and m[4] == 15)then
- rednet.broadcast("COZY_REMOVE")
- local id, m =rednet.receive(2)
- if(m == nil)then error("Server Connect Failed!") end
- rednet.send(tonumber(id),opName)
- rednet.send(tonumber(id),username)
- if(mType == "inbox")then
- clear()
- ea.scp(15,4)
- updateEmailFiles()
- readingMail = false
- end
- if(mType == "spam")then
- clear()
- ea.scp(15,4)
- readingMail = false
- end
- end
- end
- if(sending and not readingMail)then
- if(m[3] >= 16 and m[4] == 4)then
- clearLineLength(19,4,15)
- ea.scp(19,4)
- rcr=read()
- end
- if(m[3] >= 16 and m[4] == 5)then
- clearLineLength(24,5,15)
- ea.scp(24,5)
- rcsub=read()
- end
- if(m[3] >= 16 and m[4] == 8)then
- ea.scp(15,8)
- clearLineLength(15,8,15)
- ea.scp(15,9)
- clearLineLength(15,9,15)
- ea.scp(15,10)
- clearLineLength(15,10,15)
- ea.scp(15,11)
- clearLineLength(15,11,15)
- ea.scp(15,12)
- clearLineLength(15,12,15)
- ea.scp(15,13)
- clearLineLength(15,13,15)
- ea.scp(15,14)
- clearLineLength(15,14,15)
- ea.scp(15,8)
- bp1=read()
- ea.scp(15,9)
- bp2=read()
- ea.scp(15,10)
- bp3=read()
- ea.scp(15,11)
- bp4=read()
- ea.scp(15,12)
- bp5=read()
- ea.scp(15,13)
- bp6=read()
- ea.scp(15,14)
- bp7=read()
- end
- if(m[3] >= 43 and m[3] <= 49 and m[4] == 17)then
- if(rcr ~= nil and rcsub ~= nil)then
- sendCozyMail(rcr,rcsub,bp1,bp2,bp3,bp4,bp5,bp6,bp7)
- rcr=nil
- rcsub=nil
- bp1=nil
- bp2=nil
- bp3=nil
- bp5=nil
- bp6=nil
- bp7=nil
- end
- end
- end
- end
- end
- end
- function sendCozyMail(to,subject,bl1,bl2,bl3,bl4,bl5,bl6,bl7)
- f = fs.open(".tempcozymail","w")
- f.writeLine(username)
- f.writeLine(subject)
- f.writeLine(" ")
- f.writeLine(bl1)
- f.writeLine(bl2)
- f.writeLine(bl3)
- f.writeLine(bl4)
- f.writeLine(bl5)
- f.writeLine(bl6)
- f.writeLine(bl7)
- f.close()
- f = fs.open(".tempcozymail","r")
- sendm = f.readAll()
- f.close()
- fs.delete(".tempcozymail")
- rednet.broadcast("COZY_EMAIL")
- id, m1 = rednet.receive(1)
- if(m1 ~= nil)then
- rednet.send(id,to);
- local id, usr = rednet.receive()
- if(usr)then
- rednet.send(id,sendm)
- local id, isOK = rednet.receive(2)
- if(isOK ~= nil)then
- ea.scp(15,17)
- ea.stc(colors.green)
- ea.sp("Mail Sent!")
- else
- error("[SEVER] Server Crashed! Please Contact Server Admin RIGHT NOW!!")
- end
- else
- ea.scp(15,17)
- ea.sp("No such user!")
- end
- end
- if(m1 == nil)then ea.scp(15,17); ea.sp("Connection With Server Failed :(") end
- end
- function sendEmail()
- clear()
- ea.stc(colors.black)
- ea.sbc(colors.white)
- ea.scp(15,4)
- print("|To: |")
- ea.scp(15,5)
- print("|Subject: |")
- ea.scp(15,6)
- print("|==================================|")
- ea.scp(15,7)
- print("[Body]")
- ea.scp(45,17)
- ea.sbc(colors.green)
- print("[SEND]")
- ea.sbc(colors.white)
- ea.stc(colors.black)
- if(rcr ~= nil)then ea.scp(19,4); print(rcr) end
- end
- function receiveEmailedFile()
- amm = math.random(1,9999999)
- rednet.send(senID,"FILE")
- id, dehfile = rednet.receive(1)
- f = fs.open("cozy/programs/email/inbox/cozymailID_"..amm,"w")
- f.write(dehfile)
- f.close()
- end
- function updateEmailFiles()
- for k, v in pairs(fs.list("cozy/programs/email/inbox")) do
- fs.delete("cozy/programs/email/inbox/"..v)
- end
- rednet.broadcast("COZY_EMAIL_UPDATE")
- local id, m = rednet.receive(2)
- rednet.send(tonumber(id),username)
- if(m == nil)then ea.scp(1,1) ea.sbc(colors.red) term.clearLine() ea.stc(colors.white); print("Connection With Server Failed!") end
- if(m ~= nil)then
- local id, amount = rednet.receive()
- for i = 0, amount do
- if(i > 0 )then
- ti=(i-1)
- id, file = rednet.receive();
- id, fileN = rednet.receive();
- f = fs.open("cozy/programs/email/inbox/"..fileN,"w")
- f.write(file)
- f.close()
- end
- end
- mailList = {}
- for k,v in pairs(fs.list(mailpath.."inbox")) do
- if(mailList[v] == nil and not fs.isDir(mailpath.."inbox"..v))then
- f = fs.open(mailpath.."inbox".."/"..v,"r")
- conl = f.readLine()
- cDisc = f.readLine()
- f.close()
- mailList[v] = {type="inbox",sender=conl,disc = cDisc,offset = k,path=mailpath.."inbox".."/"..v}
- end
- end
- clear()
- printEmail("inbox")
- end
- end
- function para()
- para()
- end
- function CMail()
- while inEmail do
- updateEmail()
- --para()
- end
- end
- if(not fs.exists("cozy/programs/email/login/.user"))then
- createUser()
- else
- getUser()
- end
Advertisement
Add Comment
Please, Sign In to add comment