config = require("config") local socket = require("socket") _ident = {} _IDENTD_PORT = 113 function _ident.resolve(serv, port, remote) local tcp = assert(socket.tcp()) tcp:settimeout(config.ident_timeout, 't') tcp:connect(serv,_IDENTD_PORT) tcp:send(tostring(port) .. ", "..tostring(remote).."\n") res = "" while true do local s, status, partial = tcp:receive() res = res..(s or partial) if status == "closed" then break end end tcp:close() local uname = config.ident_default for user in string.gmatch(res,"%d*,%d*:USERID:UNIX:(.*)") do uname = user end return uname end return _ident