Mercurial > prosody-modules
annotate mod_http_presence/mod_http_presence.lua @ 6562:5da6fb562df9 default tip
mod_unified_push: Fix push error handling (fixes #2000)
Use the error object that send_iq() passes
as an argument to it's reject callback instead of attempting
and failing to do the parsing in the callback itself.
| author | kmq |
|---|---|
| date | Mon, 06 Jul 2026 14:23:57 +0200 |
| parents | 9dcdb56f75dd |
| children |
| rev | line source |
|---|---|
|
6285
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
1 local mod_pep = module:depends("pep"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
2 module:depends("http"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
3 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
4 local storagemanager = require "core.storagemanager"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
5 local usermanager = require "core.usermanager"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
6 local stanza = require "util.stanza".stanza; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
7 local deserialize = require "util.stanza".deserialize; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
8 local base64_decode = require "util.encodings".base64.decode; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
9 local base64_encode = require "util.encodings".base64.encode; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
10 local http = require "net.http"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
11 local jid = require "util.jid"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
12 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
13 function get_user_presence(bare_jid) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
14 local host = jid.host(bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
15 local sessions = prosody.hosts[host] and prosody.hosts[host].sessions[jid.node(bare_jid)]; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
16 if not sessions then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
17 return { status = "offline", message = nil }; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
18 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
19 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
20 local highest_priority_session = nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
21 local highest_priority = -math.huge; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
22 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
23 for resource, session in pairs(sessions.sessions) do |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
24 if session.presence then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
25 local priority = session.priority or 0; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
26 if priority > highest_priority then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
27 highest_priority = priority; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
28 highest_priority_session = session; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
29 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
30 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
31 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
32 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
33 if not highest_priority_session then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
34 return { status = "offline", message = nil }; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
35 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
36 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
37 local presence = highest_priority_session.presence; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
38 return { |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
39 status = presence and (presence:get_child("show") and presence:get_child("show"):get_text() or "online") or "offline", |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
40 message = presence and presence:get_child("status") and presence:get_child("status"):get_text() or nil |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
41 }; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
42 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
43 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
44 function get_user_avatar(bare_jid) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
45 local pep_service = mod_pep.get_pep_service(jid.node(bare_jid)); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
46 if not pep_service then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
47 module:log("error", "PEP storage not available"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
48 return nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
49 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
50 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
51 local meta_ok, hash, meta = pep_service:get_last_item("urn:xmpp:avatar:metadata", module.host); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
52 if not meta_ok or not hash then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
53 module:log("debug", "Failed to get avatar metadata for %s: %s", bare_jid, "Not OK"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
54 return nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
55 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
56 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
57 local data_ok, data_hash, data = pep_service:get_last_item("urn:xmpp:avatar:data", module.host, hash); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
58 local data_err = nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
59 if not data_ok then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
60 data_err = "Not OK"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
61 elseif data_hash ~= hash then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
62 data_err = "Hash does not match"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
63 elseif type(data) ~= "table" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
64 data_err = "Data of type table"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
65 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
66 if data_err then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
67 module:log("debug", "Failed to get avatar data for %s, hash %s: %s", bare_jid, hash, data_err); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
68 return nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
69 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
70 local info = meta.tags[1]:get_child("info"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
71 if not info then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
72 module:log("debug", "Missing avatar info for %s, hash %s", bare_jid, hash); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
73 return nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
74 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
75 return info and info.attr.type or "application/octet-stream", data[1]:get_text(); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
76 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
77 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
78 function get_user_nickname(bare_jid) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
79 local pep_service = mod_pep.get_pep_service(jid.node(bare_jid)); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
80 if not pep_service then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
81 module:log("error", "PEP storage not available"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
82 return nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
83 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
84 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
85 local ok, nick, nick_item = pep_service:get_last_item("urn:xmpp:vcard4", module.host); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
86 if not ok then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
87 module:log("debug", "Failed to get nick for %s: %s", bare_jid, "Not OK"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
88 return nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
89 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
90 |
|
6287
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
91 if nick_item and nick_item.tags and nick_item.tags[1] and nick_item.tags[1].tags then |
|
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
92 for _, tag in ipairs(nick_item.tags[1].tags) do |
|
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
93 if tag.name == "nickname" and tag.tags and tag.tags[1] and tag.tags[1][1] then |
|
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
94 nickname = tag.tags[1][1]; |
|
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
95 module:log("debug", "Nickname found for JID %s: %s", bare_jid, nickname); |
|
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
96 return nickname; |
|
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
97 end |
|
6285
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
98 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
99 else |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
100 module:log("debug", "Invalid vCard4 item structure for JID %s", bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
101 return nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
102 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
103 |
|
6287
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
104 module:log("debug", "No <nickname> element in vCard4 for JID %s", bare_jid); |
|
9dcdb56f75dd
mod_http_presence: news flash: order of vcard is not always the same (fixes 500 on nickname)
Nicholas George <wirlaburla@worlio.com>
parents:
6285
diff
changeset
|
105 return jid.node(bare_jid); |
|
6285
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
106 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
107 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
108 function get_muc_avatar(bare_jid) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
109 local node = jid.node(bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
110 local vcard_store = storagemanager.open(module.host, "vcard_muc") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
111 if not vcard_store then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
112 module:log("error", "MUC vCard store not available for host: %s", module.host); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
113 return nil, nil, "MUC vCard store not available"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
114 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
115 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
116 local vcard_data, err = vcard_store:get(node); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
117 if not vcard_data then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
118 module:log("debug", "No vCard data for MUC %s: %s", bare_jid, err or "No data"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
119 return nil, nil, err or "No vCard data"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
120 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
121 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
122 local vcard = deserialize(vcard_data); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
123 if not vcard then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
124 module:log("debug", "Failed to parse vCard for MUC %s", bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
125 return nil, nil, "Failed to parse vCard"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
126 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
127 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
128 local photo = vcard:get_child("PHOTO"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
129 if not photo then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
130 module:log("debug", "No <PHOTO> element in vCard for MUC %s", bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
131 return nil, nil, "No photo element"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
132 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
133 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
134 local content_type = photo:get_child_text("TYPE") or "application/octet-stream"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
135 local avatar_data = photo:get_child_text("BINVAL"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
136 if not avatar_data then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
137 module:log("debug", "No <BINVAL> in <PHOTO> for MUC %s", bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
138 return nil, nil, "No avatar data"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
139 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
140 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
141 module:log("debug", "MUC avatar found for JID %s: type=%s, data=%s", |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
142 bare_jid, content_type, avatar_data:sub(1, 20) .. "..."); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
143 return content_type, avatar_data, nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
144 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
145 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
146 function get_muc_info(bare_jid) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
147 local node = jid.node(bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
148 local muc_store = storagemanager.open(module.host, "config"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
149 if not muc_store then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
150 module:log("error", "MUC config store not available for host: %s", module.host); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
151 return nil, nil, "MUC config store not available"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
152 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
153 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
154 local config_data, err = muc_store:get(node); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
155 if not config_data then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
156 module:log("debug", "No config data for JID %s: %s", bare_jid, err or "No data"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
157 return nil, nil, err or "No config data"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
158 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
159 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
160 local muc_name = config_data._data and config_data._data.name; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
161 local muc_description = config_data._data and config_data._data.description; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
162 if not muc_name and not muc_description then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
163 module:log("debug", "No name or description in config for JID %s", bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
164 return nil, nil, "No name or description"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
165 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
166 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
167 module:log("debug", "MUC info for JID %s: name=%s, desc=%s", bare_jid, muc_name, muc_description); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
168 return muc_name, muc_description, nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
169 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
170 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
171 function get_muc_users(bare_jid) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
172 local component = hosts[module.host]; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
173 if not component then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
174 module:log("error", "No component found for host: %s", module.host); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
175 return nil, "No MUC component found"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
176 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
177 local muc = component.modules.muc; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
178 if not muc then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
179 module:log("error", "MUC module not loaded for host: %s", module.host); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
180 return nil, "MUC module not loaded"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
181 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
182 local room = muc.get_room_from_jid(bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
183 if not room then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
184 module:log("error", "Room %s does not exist", bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
185 return nil, "Room does not exist"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
186 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
187 local count = 0; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
188 for _ in room:each_occupant() do |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
189 count = count + 1; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
190 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
191 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
192 module:log("debug", "Room %s has %d occupants", bare_jid, count); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
193 return count, nil; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
194 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
195 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
196 function serve_user(response, format, user_jid) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
197 local presence = get_user_presence(user_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
198 local nickname = get_user_nickname(user_jid) or user_jid; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
199 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
200 local status = presence.status or "offline"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
201 local message = presence.message or ""; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
202 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
203 if not format or format == "" or format == "full" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
204 response.headers["Content-Type"] = "text/html"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
205 return response:send( |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
206 [[<!DOCTYPE html>]].. |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
207 tostring( |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
208 stanza("html") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
209 :tag("head") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
210 :tag("title"):text(nickname):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
211 :tag("link", { rel = "stylesheet", href = "data:text/css;base64,"..base64_encode(request_resource("style.css")) }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
212 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
213 :tag("body") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
214 :tag("table", { width = "100%" }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
215 :tag("colgroup") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
216 :tag("col", { width = "64px" }):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
217 :tag("col"):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
218 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
219 :tag("tr") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
220 :tag("td", { rowspan = "3", valign = "top" }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
221 :tag("img", { id = "avatar", src = "./avatar", width = "64" }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
222 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
223 :tag("td") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
224 :tag("img", { id = "status-icon", src = "./status-icon", title = status, alt = "("..status..")" }):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
225 :tag("b", { id = "nickname"}):text(" "..nickname):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
226 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
227 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
228 :tag("tr") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
229 :tag("td", { id = "msg-cell" }):text(message):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
230 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
231 :tag("tr") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
232 :tag("td", { id = "jid-cell" }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
233 :tag("i") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
234 :tag("a", { href = "xmpp:"..user_jid.."?add" }):text(user_jid):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
235 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
236 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
237 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
238 ) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
239 ); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
240 elseif format == "nickname" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
241 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
242 return response:send(nickname); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
243 elseif format == "status" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
244 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
245 return response:send(status); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
246 elseif format == "message" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
247 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
248 return response:send(message); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
249 elseif format == "status-icon" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
250 response.headers["Content-Type"] = "image/png"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
251 local status_resource = request_resource(status..".png"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
252 if not status_resource then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
253 return response:send(request_resource("offline.png")); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
254 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
255 return response:send(status_resource); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
256 elseif format == "avatar" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
257 local avatar_mime, avatar_data = get_user_avatar(user_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
258 if not avatar_mime or not avatar_data then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
259 response.headers["Content-Type"] = "image/png"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
260 return response:send(request_resource("avatar.png")); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
261 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
262 response.headers["Content-Type"] = avatar_mime; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
263 return response:send(base64_decode(avatar_data)); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
264 else |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
265 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
266 return response:send(status..": "..message); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
267 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
268 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
269 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
270 function serve_muc(response, format, muc_jid) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
271 local muc_name, muc_desc, err = get_muc_info(muc_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
272 local muc_users, _ = get_muc_users(muc_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
273 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
274 if not format or format == "" or format == "full" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
275 response.headers["Content-Type"] = "text/html"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
276 return response:send( |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
277 [[<!DOCTYPE html>]].. |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
278 tostring( |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
279 stanza("html") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
280 :tag("head") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
281 :tag("title"):text(muc_name or muc_jid):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
282 :tag("link", { rel = "stylesheet", href = "data:text/css;base64,"..base64_encode(request_resource("style.css")) }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
283 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
284 :tag("body") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
285 :tag("table", { width = "100%" }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
286 :tag("colgroup") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
287 :tag("col", { width = "64px" }):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
288 :tag("col"):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
289 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
290 :tag("tr") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
291 :tag("td", { rowspan = "3", valign = "top" }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
292 :tag("img", { id = "avatar", src = "./avatar", width = "64" }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
293 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
294 :tag("td") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
295 :tag("img", { id = "status-icon", src = "./status-icon", title = "muc", alt = "(muc)" }):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
296 :tag("b", { id = "nickname" }):text(" "..(muc_name or muc_jid)):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
297 :tag("a", { id = "muc-users" }):text(" ("..muc_users.." users)"):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
298 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
299 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
300 :tag("tr") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
301 :tag("td", { id = "msg-cell" }):text(muc_desc):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
302 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
303 :tag("tr") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
304 :tag("td", { id = "jid-cell" }) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
305 :tag("i") |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
306 :tag("a", { href = "xmpp:"..muc_jid.."?join" }):text(muc_jid):up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
307 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
308 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
309 :up() |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
310 ) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
311 ); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
312 elseif format == "users" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
313 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
314 return response:send(muc_users.." users"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
315 elseif format == "name" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
316 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
317 return response:send(muc_name); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
318 elseif format == "status" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
319 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
320 return response:send("muc"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
321 elseif format == "description" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
322 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
323 return response:send(muc_desc); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
324 elseif format == "status-icon" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
325 response.headers["Content-Type"] = "image/png"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
326 return response:send(request_resource("muc.png")); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
327 elseif format == "avatar" then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
328 local avatar_mime, avatar_data = get_muc_avatar(muc_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
329 if not avatar_mime or not avatar_data then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
330 response.headers["Content-Type"] = "image/png"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
331 return response:send(request_resource("avatar.png")); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
332 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
333 response.headers["Content-Type"] = avatar_mime; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
334 return response:send(base64_decode(avatar_data)); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
335 else |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
336 response.headers["Content-Type"] = "text/plain"; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
337 return response:send((muc_name or muc_jid)..": "..(muc_desc or "")); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
338 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
339 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
340 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
341 function request_resource(name) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
342 local resource_path = module:get_option_string("presence_resource_path", "resources"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
343 local i, err = module:load_resource(resource_path.."/"..name); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
344 if not i then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
345 module:log("warn", "Failed to open resource file %s: %s", resource_path.."/"..name, err); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
346 return ""; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
347 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
348 return i:read("*a"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
349 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
350 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
351 function handle_request(event, path) |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
352 local request = event.request; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
353 local response = event.response; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
354 local name, format = path:match("^([%w-_\\.]+)/(.*)$"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
355 module:log("debug", "loading format '%s' for jid %s", format or "standard", name); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
356 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
357 if not name then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
358 response.status_code = 404; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
359 return response:send("Missing JID"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
360 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
361 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
362 local bare_jid = jid.join(name, module.host, nil); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
363 local component = hosts[module.host]; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
364 if component.type == "component" and component.modules.muc then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
365 local muc = component.modules.muc; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
366 if not muc.get_room_from_jid(bare_jid) then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
367 response.status_code = 404; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
368 return response:send("MUC does not exist"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
369 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
370 return serve_muc(response, format or "full", bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
371 else |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
372 if not usermanager.user_exists(name, module.host) then |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
373 response.status_code = 404; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
374 return response:send("User does not exist"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
375 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
376 return serve_user(response, format or "full", bare_jid); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
377 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
378 end |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
379 |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
380 module:provides("http", { |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
381 default_path = module:get_option_string("presence_http_path", "/presence"); |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
382 route = { |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
383 ["GET /*"] = handle_request; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
384 }; |
|
27e061d455b9
mod_http_presence: add new module to display presence over the http server
Nicholas George <wirlaburla@worlio.com>
parents:
diff
changeset
|
385 }); |
