Advertisement
Guest User

Untitled

a guest
Jun 17th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.33 KB | None | 0 0
  1. local user = "MY USERNAME"
  2. local pass = "MY PASSWORD"
  3. local message_buffer = {}
  4. local message_get = false
  5. local messages = {}
  6. local reading = 0
  7. local msg_read = false
  8.  
  9. local function readNextMessage(sock)
  10.     reading = reading + 1
  11.     Msg("ATTEMPT TO READ: " .. reading .. "\n")
  12.     if(reading > #messages) then return end
  13.     local m = messages[reading]
  14.     if(m == nil) then return end
  15.     msg_read = true
  16.     sock:Send("RETR " .. m.id .. "\r\n")
  17.     Msg("READING MESSAGE: " .. reading .. "\n")
  18. end
  19.  
  20. local function readMessages(sock)
  21.     Msg("Reading Messages...\n");
  22.     for k,v in pairs(message_buffer) do
  23.         local d = string.Explode(" ",v)
  24.         local id = tonumber(d[1])
  25.         local bytes = tonumber(d[2])
  26.         table.insert(messages,{id=id,bytes=bytes})
  27.     end
  28.     readNextMessage(sock)
  29. end
  30.  
  31. local function Parse(data,sock)
  32.     if(string.find(data,"+OK")) then
  33.         if(string.find(data,"POP3")) then
  34.             sock:Send("USER "..user.."\r\n")
  35.             sock:Send("PASS "..pass.."\r\n")
  36.         elseif(string.find(data,"server")) then
  37.             sock:Send("LIST\r\n")
  38.         elseif(string.find(data,"message")) then
  39.             if(msg_read == false) then
  40.                 message_get = true
  41.                 return
  42.             else
  43.                 return
  44.             end
  45.         end
  46.     end
  47.    
  48.     if(string.find(data,"[.]")) then
  49.         if(msg_read) then
  50.             msg_read = false
  51.             readNextMessage(sock)
  52.             return
  53.         end
  54.         message_get = false
  55.         readMessages(sock)
  56.         return
  57.     end
  58.  
  59.     if(msg_read) then
  60.         messages[reading].text = messages[reading].text or ""
  61.         messages[reading].text = messages[reading].text .. "\n" .. data
  62.         return
  63.     end
  64.  
  65.     if(message_get) then
  66.         table.insert(message_buffer,data);
  67.         Msg("MESSAGE: " .. data .. "\n")
  68.         return
  69.     end
  70. end
  71.  
  72. local function Callback(sock,call,id,err,data,peer)
  73.     if (call == SCKCALL_CONNECT and err == SCKERR_OK) then
  74.     sock:ReceiveLine()
  75.     end
  76.    
  77.     if (call == SCKCALL_REC_LINE and err == SCKERR_OK and data:len() > 0) then
  78.     sock:ReceiveLine()
  79.     end
  80.     Parse(data,sock)
  81.     Msg("SOCKET CALLBACK: " .. data .. "\n");
  82. end
  83.  
  84.  
  85. local sock = OOSock(IPPROTO_TCP)
  86. sock:Connect("pop3.comcast.net",110)
  87. sock:SetCallback(Callback)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement