Mercurial > prosody-modules
view mod_webpresence/mod_webpresence.lua @ 94:941fd7d8b9b2
mod_muc_log: split into mod_muc_log and mod_muc_log_http
mod_muc_log: should be enabled per muc component which should log!
mod_muc_log_http: handle /me messages, add previous, next day links to day view, add link to speeqe.com to directly join the room,
make the window recalculate the content div size, scrollbars are only shown when needed
| author | Thilo Cestonaro <thilo@cestona.ro> |
|---|---|
| date | Tue, 17 Nov 2009 21:19:17 +0100 |
| parents | 63080b8973ee |
| children |
line wrap: on
line source
do local e={};e["icons/status_online.png"]='PNG\r\ \ \0\0\0\rIHDR\0\0\0\0\0\0\0\0\0V%\0\0\0sBIT|d\0\0\0 pHYs\0\0\r\0\0\rB(x\0\0\0tEXtSoftware\0www.inkscape.org<\0\0IDAT(U_h[u?woM65Kel]+a[uOE\ ">D܆Pd0/VӗXAa)Ctin7U$m&Mn{ׇ;kwps뺬\'?7CjZԢ Tu\\;zVwxGn{f43wiI//ѿ^;y^#jbB\0H["%v1k?R۶<\ \\bЬ*Z@C{A\rPQu%3εjL\0ޕ{YhTPyɟ\' ޫ?(a+dE((BAhc3T^Ob0a2K%uU-.x"-KŸ`ߖ}zbcz4PªґȲ9l6mibA.w\\Fn/7XQA GZЧ!~alcm"G"9 <xULEo.5"-->~@6@$><JӚ&q8<pZ)[<H\'\0I%~#tgR!X־ؽ2F #\0pC܈wp*<d3S/?oYV\\v6Xa\ VSCT&[ζB5?12oe@uwDήI\'%+ƈݩQN{<J᱂TTd:\r6\\\ }qsCZӝ/Vjg-hEӯ_\'i~&\0\0\0\0IENDB`'e["icons/status_away.png"]='PNG\r\ \ \0\0\0\rIHDR\0\0\0\0\0\0\0\0\0V%\0\0\0sBIT|d\0\0\0 pHYs\0\0\r\0\0\rB(x\0\0\0tEXtSoftware\0www.inkscape.org<\0\01IDAT(U_Lu\0{QD atԌpXHg\\5aVmڅEKE.Bm,\' H) 9y{]s<R9/*nA<Ʀ]ms=nSlq2\0tc3wrIpw~xryTn0ii8.pԉ3J\0<X-V\0=0}|`?b`7A}m\0m5Ç0MsfDjK+XΚ<_0UzW8 @:a ~tˏfhBáf,ͤX([>cy@y()BI,Yueyz3o$胰Z&,PII*C$2dI{Cֻ|S<\0"r:p.dJI$x-6~/Q`ք1>Eb}t~x֣ͼwҨ{u5T%%%\0Ӿ}f&ԿGЪ`x7<IMGw3H@*;0K"UDtd/M}C#6nfol ^`E(5yz_Czcy+WumdsxITf`2\ {~_SJQ]U+FFK3GϰőgƘYLzA>=4>=FuVCh?bɔ4C̠ɬwUjwv{Y[ҏ]@*Nnk^qRo,3v,j\0\0\0\0IENDB`'e["icons/status_xa.png"]="PNG\r\ \ \0\0\0\rIHDR\0\0\0\0\0\0\0\0\0V%\0\0\0sBIT|d\0\0\0 pHYs\0\0\r\0\0\rB(x\0\0\0tEXtSoftware\0www.inkscape.org<\0\07IDAT(UmLUu\0s=s7LoCjm\rIlBhЋsEzqImI,m (6)|P,.쑄,Ϟ6ivFjYEqhFtCmE?KۤIHmLDm3rљPyuSm^JUMƥ\0XCpOKk-,>_SU180$d'xhST>uo_PD87s@~iҵ/M4ώ#8ӹk/Ot$Xʖk%|!XPKW6օxsbGuk;/?etJ %{F};yX/!8BaaҁD>7^Ӷ*>+~?Xƚ{y_IX&Eq9ic9acddi(\0`vp\0`Ӓ$j5T O\r7M\rӅat=P%pxY%j3ٌ]pѺ~Da&FFس\0wzvXԽ3R䡺L'\\+zװL3ZU딎͒á#Ngeʑ\\2Qm ,K2LM7^hQ\0ڎc+_ Ee'(.i-\\1mJXM1Q䋉;Vw>E*lwQ:E=wUU'v?hj\0\0\0\0IENDB`"e["icons/status_dnd.png"]="PNG\r\ \ \0\0\0\rIHDR\0\0\0\0\0\0\0\0\0V%\0\0\0sBIT|d\0\0\0 pHYs\0\0\r\0\0\rB(x\0\0\0tEXtSoftware\0www.inkscape.org<\0\0IDAT(}k\\Us;IBj\"2hRLM[pQWnDtUQ(nZ*6]T\ ªP-lL-I$w⚚ w^xD;{-SGZ宩_U٣6?jd\ %!E`9x}W'zy?OZxi.+#Ei:mϷ{G~;ܡ\0h^xk}`m^D@w)|xp_'浙7~0XS*'}z`@B\"v|_:;ڢ1Z RZ5(P\ _6ϙ(\ 7\0i+R1J1A 1DiWL>Fb{s9sf=?=7j!!ƈk-(ͦJVj<w]>3B DAD֚Z]14[C/4jD!@UY@}bSCBPʴzE,Enwp1e:]Yߕ_\\|jڭ{ɉ'֓{+|_R:6rjxuRcፖNuj)ОO?y[]xt#fjWWdݿ(yRi\0\0\0\0IENDB`"e["icons/status_chat.png"]='PNG\r\ \ \0\0\0\rIHDR\0\0\0\0\0\0\0\0\0V%\0\0\0sBIT|d\0\0\0 pHYs\0\0\r\0\0\rB(x\0\0\0tEXtSoftware\0www.inkscape.org<\0\0IDAT(ULus!D`sqY:3deS˭15d-mfrㇶ6;f-oZs؈X6`LԎKk?PWt:r5c0:75m\rLƌP/ުz[/=@4"Xb24~ğo/ǎ{_hh*Rnr"),I $3=]}8@m@J.Fk/Zк<-no:\0w//gMk6E)ŲbX}N\r`"&o++tyYŕMap\0к\ PEhvsiw%]DagkBY e%,NݦG{buoXd(-+gE2twP\\<M3NGɓg7-I33ss&ׯoC?xzgc+YSf \0\0 LdD" jksb"|#Gpg,,K1qyGϦ̓gZ[/\ uZ @\ J 2ܝuȵX%WիauHHT7j*jލZ&cy\\={$nCq.u~-" ".D}䧟7Knٲ7Su%XDx7{lK`-("j[,ϛ\rVTV/se}cȈaw^b@03\0\0\0\0IENDB`'e["icons/status_offline.png"]="PNG\r\ \ \0\0\0\rIHDR\0\0\0\0\0\0\0\0\0V%\0\0\0sBIT|d\0\0\0 pHYs\0\0\r\0\0\rB(x\0\0\0tEXtSoftware\0www.inkscape.org<\0\0IDAT(UKcg^\\[;SAp)tmL)3V,dp`6]/BA2JAP(iNҚdD'~Nr?Xٝ=Q\\_?VAQv 埮gjCia(\0B<u].//ūT]>Z~PEo5Fof0\0P0wr{UFփ666041]!Jd<<P>߯F>H)ut:8###8F0>0{5놚ddppvFGGmn8Tft]GJQ\0Xy`eeYZZbI)F\ (szzP#z{{bT*2Du<$MMME\ \0mL&<\0xjm7֬J#LRTH$eYhi)˸8dYΒfabb~u]|e>Ь¡RD\"Agg'S,RRWWGTUʓEJGw?ގ<\\.i#3y_?nTpztx\\CQ۶B ˲^EWlxVߥaY7&Â3YD_~UUu۟_<1mUirrZ7gD\0\0\0\0IENDB`"function require_resource(r)return e[r]or error("resource '"..tostring(r).."' not found");end end local s=require"util.jid".prepped_split;if not require_resource then function require_resource(e)local r=io.open((config.get("*","core","presence_icons")or"")..e);if r then return r:read("*a");end module:log("warn","Failed to open image file %s",(config.get("*","core","presence_icons")or"")..e);return"";end end local e={status="404 Not Found",body="<h1>Page Not Found</h1>Sorry, we couldn't find what you were looking for :("};local n={"online","away","xa","dnd","chat","offline"};for r,e in ipairs(n)do n[e]={status="200 OK",headers={["Content-Type"]="image/png"},body=require_resource("icons/status_"..e..".png")};end local function t(e,e,o)local e=o.url.path:match("[^/]+$");if e then local r,e=s(e);if e and not r then r,e=e,o.headers.host;if e then e=e:gsub(":%d+$","");end end if r and e then local e=hosts[e]and hosts[e].sessions[r];if e then local e=e.top_resources[1];if e and e.presence then e=e.presence:child_with_name("show");if not e then e="online";else e=e:get_text();end return n[e];end end end end return n.offline;end local e=config.get(module.host,"core","http_ports")or{5280};require"net.httpserver".new_from_config(e,"status",t);
