Mercurial > prosody-modules
comparison mod_muc_log/mod_muc_log.lua @ 86:fc7055efd568
mod_muc_log: retrieving the room config, is not a kick of a person!! :) (thx again to flo spotting it!)
| author | Thilo Cestonaro <thilo@cestona.ro> |
|---|---|
| date | Sun, 08 Nov 2009 22:10:42 +0100 |
| parents | 83494de806a4 |
| children | 0e639d081ba7 |
comparison
equal
deleted
inserted
replaced
| 85:83494de806a4 | 86:fc7055efd568 |
|---|---|
| 302 end | 302 end |
| 303 end | 303 end |
| 304 | 304 |
| 305 local function parseIqStanza(stanza, timeStuff, nick) | 305 local function parseIqStanza(stanza, timeStuff, nick) |
| 306 local text = nil; | 306 local text = nil; |
| 307 for _,tag in ipairs(stanza) do | 307 local victim = nil; |
| 308 if tag.tag == "query" then | 308 if(stanza.attr.type == "set") then |
| 309 for _,item in ipairs(tag) do | 309 for _,tag in ipairs(stanza) do |
| 310 if item.tag == "item" then | 310 if tag.tag == "query" then |
| 311 for _,reason in ipairs(item) do | 311 for _,item in ipairs(tag) do |
| 312 if reason.tag == "reason" then | 312 if item.tag == "item" and item.attr.nick ~= nil and tostring(item.attr.role) == 'none' then |
| 313 text = reason[1]; | 313 victim = item.attr.nick; |
| 314 break; | 314 for _,reason in ipairs(item) do |
| 315 end | 315 if reason.tag == "reason" then |
| 316 end | 316 text = reason[1]; |
| 317 break; | 317 break; |
| 318 end | 318 end |
| 319 end | 319 end |
| 320 break; | 320 break; |
| 321 end | 321 end |
| 322 end | 322 end |
| 323 | 323 break; |
| 324 if text ~= nil then | 324 end |
| 325 text = html.day.reason:gsub("###REASON###", htmlEscape(text)); | 325 end |
| 326 else | 326 if victim ~= nil then |
| 327 text = ""; | 327 if text ~= nil then |
| 328 end | 328 text = html.day.reason:gsub("###REASON###", htmlEscape(text)); |
| 329 return html.day.kick:gsub("###TIME_STUFF###", timeStuff):gsub("###VICTIM###", nick):gsub("###REASON_STUFF###", text); | 329 else |
| 330 text = ""; | |
| 331 end | |
| 332 return html.day.kick:gsub("###TIME_STUFF###", timeStuff):gsub("###VICTIM###", victim):gsub("###REASON_STUFF###", text); | |
| 333 end | |
| 334 end | |
| 335 return; | |
| 330 end | 336 end |
| 331 | 337 |
| 332 local function parsePresenceStanza(stanza, timeStuff, nick) | 338 local function parsePresenceStanza(stanza, timeStuff, nick) |
| 333 local ret = ""; | 339 local ret = ""; |
| 334 if stanza.attr.type == nil then | 340 if stanza.attr.type == nil then |
| 407 local stanza = lom.parse(data[i]); | 413 local stanza = lom.parse(data[i]); |
| 408 if stanza ~= nil and stanza.attr ~= nil and stanza.attr.time ~= nil then | 414 if stanza ~= nil and stanza.attr ~= nil and stanza.attr.time ~= nil then |
| 409 local timeStuff = html.day.time:gsub("###TIME###", stanza.attr.time); | 415 local timeStuff = html.day.time:gsub("###TIME###", stanza.attr.time); |
| 410 if stanza[1] ~= nil then | 416 if stanza[1] ~= nil then |
| 411 local nick; | 417 local nick; |
| 418 local tmp; | |
| 412 | 419 |
| 413 -- grep nick from "from" resource | 420 -- grep nick from "from" resource |
| 414 if stanza[1].attr.from ~= nil then -- presence and messages | 421 if stanza[1].attr.from ~= nil then -- presence and messages |
| 415 nick = htmlEscape(stanza[1].attr.from:match("/(.+)$")); | 422 nick = htmlEscape(stanza[1].attr.from:match("/(.+)$")); |
| 416 elseif stanza[1].attr.to ~= nil then -- iq | 423 elseif stanza[1].attr.to ~= nil then -- iq |
| 417 nick = htmlEscape(stanza[1].attr.to:match("/(.+)$")); | 424 nick = htmlEscape(stanza[1].attr.to:match("/(.+)$")); |
| 418 end | 425 end |
| 419 | 426 |
| 420 if stanza[1].tag == "presence" and nick ~= nil then | 427 if stanza[1].tag == "presence" and nick ~= nil then |
| 421 ret = ret .. parsePresenceStanza(stanza[1], timeStuff, nick); | 428 tmp = parsePresenceStanza(stanza[1], timeStuff, nick); |
| 422 elseif stanza[1].tag == "message" then | 429 elseif stanza[1].tag == "message" then |
| 423 ret = ret .. parseMessageStanza(stanza[1], timeStuff, nick); | 430 tmp = parseMessageStanza(stanza[1], timeStuff, nick); |
| 424 elseif stanza[1].tag == "iq" then | 431 elseif stanza[1].tag == "iq" then |
| 425 ret = ret .. parseIqStanza(stanza[1], timeStuff, nick); | 432 tmp = parseIqStanza(stanza[1], timeStuff, nick); |
| 426 else | 433 else |
| 427 module:log("info", "unknown stanza subtag in log found. room: %s; day: %s", bareRoomJid, query.year .. "/" .. query.month .. "/" .. query.day); | 434 module:log("info", "unknown stanza subtag in log found. room: %s; day: %s", bareRoomJid, query.year .. "/" .. query.month .. "/" .. query.day); |
| 435 end | |
| 436 if tmp ~= nil then | |
| 437 ret = ret .. tmp | |
| 438 tmp = nil; | |
| 428 end | 439 end |
| 429 end | 440 end |
| 430 end | 441 end |
| 431 end | 442 end |
| 432 else | 443 else |
