contrib: imported POP3 widget from Boris
This commit is contained in:
parent
1a443cda66
commit
f8a8696389
|
@ -13,6 +13,7 @@ require("vicious.contrib.mpc")
|
||||||
require("vicious.contrib.netcfg")
|
require("vicious.contrib.netcfg")
|
||||||
require("vicious.contrib.net")
|
require("vicious.contrib.net")
|
||||||
require("vicious.contrib.ossvol")
|
require("vicious.contrib.ossvol")
|
||||||
|
require("vicious.contrib.pop")
|
||||||
require("vicious.contrib.pulse")
|
require("vicious.contrib.pulse")
|
||||||
require("vicious.contrib.rss")
|
require("vicious.contrib.rss")
|
||||||
require("vicious.contrib.sensors")
|
require("vicious.contrib.sensors")
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
---------------------------------------------------
|
||||||
|
-- Licensed under the GNU General Public License v2
|
||||||
|
-- * (c) 2010, Boris Bolgradov <>
|
||||||
|
--
|
||||||
|
-- This widget type depends on luasocket.
|
||||||
|
--
|
||||||
|
-- Widget arguments are host, port, username and
|
||||||
|
-- password, i.e.:
|
||||||
|
-- {"mail.myhost.com", 110, "John", "132435"}
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
-- {{{ Grab environment
|
||||||
|
local setmetatable = setmetatable
|
||||||
|
local socket = require("socket")
|
||||||
|
local tonumber = tonumber
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
|
||||||
|
-- POP: provides the count of new messages in a POP3 mailbox
|
||||||
|
module("vicious.contrib.pop")
|
||||||
|
|
||||||
|
|
||||||
|
-- {{{ POP3 count widget type
|
||||||
|
local function worker(format, warg)
|
||||||
|
if not warg or #warg ~= 4 then
|
||||||
|
return {"N/A"}
|
||||||
|
end
|
||||||
|
|
||||||
|
local host, port = warg[1], tonumber(warg[2])
|
||||||
|
local user, pass = warg[3], warg[4]
|
||||||
|
|
||||||
|
local client = socket.tcp()
|
||||||
|
client:settimeout(3)
|
||||||
|
client:connect(host, port)
|
||||||
|
client:receive("*l")
|
||||||
|
client:send("USER " .. user .. "\r\n")
|
||||||
|
client:receive("*l")
|
||||||
|
client:send("PASS " .. pass .. "\r\n")
|
||||||
|
client:receive("*l")
|
||||||
|
client:send("STAT" .. "\r\n")
|
||||||
|
local response = client:receive("*l")
|
||||||
|
client:close()
|
||||||
|
|
||||||
|
if response:find("%+OK") then
|
||||||
|
response = response:match("%+OK (%d+)")
|
||||||
|
end
|
||||||
|
|
||||||
|
return {response}
|
||||||
|
end
|
||||||
|
-- }}}
|
||||||
|
|
||||||
|
setmetatable(_M, { __call = function(_, ...) return worker(...) end })
|
Loading…
Reference in New Issue