Mercurial > prosody-modules
annotate mod_admin_web/admin_web/mod_admin_web.lua @ 5256:44f7edd4f845
mod_http_oauth2: Reject non-local hosts in more code paths
We're not issuing tokens for users on remote hosts, we can't even
authenticate them since they're remote. Thus the host is always the
local module.host so no need to pass around the host in most cases or
use it for anything but enforcing the same host.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 16 Mar 2023 17:52:10 +0100 |
parents | 2825fa4504f0 |
children |
rev | line source |
---|---|
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
1 -- Copyright (C) 2010 Florian Zeitz |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
2 -- |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
3 -- This file is MIT/X11 licensed. Please see the |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
4 -- COPYING file in the source package for more information. |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
5 -- |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
6 |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
7 -- <session xmlns="http://prosody.im/streams/c2s" jid="alice@example.com/brussels"> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
8 -- <encrypted/> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
9 -- <compressed/> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
10 -- </session> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
11 |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
12 -- <session xmlns="http://prosody.im/streams/s2s" jid="example.com"> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
13 -- <encrypted> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
14 -- <valid/> / <invalid/> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
15 -- </encrypted> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
16 -- <compressed/> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
17 -- <in/> / <out/> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
18 -- </session> |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
19 |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
20 local st = require "util.stanza"; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
21 local uuid_generate = require "util.uuid".generate; |
696
da69b65288e4
mod_admin_web: Correctly import usermanager
Florian Zeitz <florob@babelmonkeys.de>
parents:
663
diff
changeset
|
22 local is_admin = require "core.usermanager".is_admin; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
23 local pubsub = require "util.pubsub"; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
24 local jid_bare = require "util.jid".bare; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
25 |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
26 local hosts = prosody.hosts; |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
27 local incoming_s2s = prosody.incoming_s2s; |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
28 |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
29 module:set_global(); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
30 |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
31 local service = {}; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
32 |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
33 local xmlns_adminsub = "http://prosody.im/adminsub"; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
34 local xmlns_c2s_session = "http://prosody.im/streams/c2s"; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
35 local xmlns_s2s_session = "http://prosody.im/streams/s2s"; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
36 |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
37 local idmap = {}; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
38 |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
39 local function add_client(session, host) |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
40 local name = session.full_jid; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
41 local id = idmap[name]; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
42 if not id then |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
43 id = uuid_generate(); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
44 idmap[name] = id; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
45 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
46 local item = st.stanza("item", { id = id }):tag("session", {xmlns = xmlns_c2s_session, jid = name}):up(); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
47 if session.secure then |
1117
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
48 local encrypted = item:tag("encrypted"); |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
49 local sock = session.conn and session.conn.socket and session.conn:socket() |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
50 local info = sock and sock.info and sock:info(); |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
51 for k, v in pairs(info or {}) do |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
52 encrypted:tag("info", { name = k }):text(tostring(v)):up(); |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
53 end |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
54 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
55 if session.compressed then |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
56 item:tag("compressed"):up(); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
57 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
58 service[host]:publish(xmlns_c2s_session, host, id, item); |
3567
179424d557f2
mod_admin_web: Fix to use format strings in logger calls (thanks Ge0rG)
Matthew Wild <mwild1@gmail.com>
parents:
3550
diff
changeset
|
59 module:log("debug", "Added client %s", name); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
60 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
61 |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
62 local function del_client(session, host) |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
63 local name = session.full_jid; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
64 local id = idmap[name]; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
65 if id then |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
66 local notifier = st.stanza("retract", { id = id }); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
67 service[host]:retract(xmlns_c2s_session, host, id, notifier); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
68 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
69 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
70 |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
71 local function add_host(session, type, host) |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
72 local name = (type == "out" and session.to_host) or (type == "in" and session.from_host); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
73 local id = idmap[name.."_"..type]; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
74 if not id then |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
75 id = uuid_generate(); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
76 idmap[name.."_"..type] = id; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
77 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
78 local item = st.stanza("item", { id = id }):tag("session", {xmlns = xmlns_s2s_session, jid = name}) |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
79 :tag(type):up(); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
80 if session.secure then |
1117
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
81 local encrypted = item:tag("encrypted"); |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
82 |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
83 local sock = session.conn and session.conn.socket and session.conn:socket() |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
84 local info = sock and sock.info and sock:info(); |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
85 for k, v in pairs(info or {}) do |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
86 encrypted:tag("info", { name = k }):text(tostring(v)):up(); |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
87 end |
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
88 |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
89 if session.cert_identity_status == "valid" then |
1117
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
90 encrypted:tag("valid"); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
91 else |
1117
d643c385d3f6
mod_admin_web: Provide some information about the TLS layer
Florian Zeitz <florob@babelmonkeys.de>
parents:
901
diff
changeset
|
92 encrypted:tag("invalid"); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
93 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
94 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
95 if session.compressed then |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
96 item:tag("compressed"):up(); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
97 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
98 service[host]:publish(xmlns_s2s_session, host, id, item); |
3567
179424d557f2
mod_admin_web: Fix to use format strings in logger calls (thanks Ge0rG)
Matthew Wild <mwild1@gmail.com>
parents:
3550
diff
changeset
|
99 module:log("debug", "Added host %s s2s%s", name, type); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
100 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
101 |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
102 local function del_host(session, type, host) |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
103 local name = (type == "out" and session.to_host) or (type == "in" and session.from_host); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
104 local id = idmap[name.."_"..type]; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
105 if id then |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
106 local notifier = st.stanza("retract", { id = id }); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
107 service[host]:retract(xmlns_s2s_session, host, id, notifier); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
108 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
109 end |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
110 |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
111 local function get_affiliation(jid, host) |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
112 local bare_jid = jid_bare(jid); |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
113 if is_admin(bare_jid, host) then |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
114 return "member"; |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
115 else |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
116 return "none"; |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
117 end |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
118 end |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
119 |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
120 function module.add_host(module) |
770
a85d86a7f24e
mod_admin_web: Add explicit dependencies on mod_admin_adhoc and mod_bosh
Florian Zeitz <florob@babelmonkeys.de>
parents:
769
diff
changeset
|
121 -- Dependencies |
a85d86a7f24e
mod_admin_web: Add explicit dependencies on mod_admin_adhoc and mod_bosh
Florian Zeitz <florob@babelmonkeys.de>
parents:
769
diff
changeset
|
122 module:depends("bosh"); |
a85d86a7f24e
mod_admin_web: Add explicit dependencies on mod_admin_adhoc and mod_bosh
Florian Zeitz <florob@babelmonkeys.de>
parents:
769
diff
changeset
|
123 module:depends("admin_adhoc"); |
a85d86a7f24e
mod_admin_web: Add explicit dependencies on mod_admin_adhoc and mod_bosh
Florian Zeitz <florob@babelmonkeys.de>
parents:
769
diff
changeset
|
124 module:depends("http"); |
3549
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
125 |
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
126 local serve; |
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
127 if not pcall(function () |
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
128 local http_files = require "net.http.files"; |
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
129 serve = http_files.serve; |
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
130 end) then |
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
131 serve = module:depends"http_files".serve; |
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
132 end |
b059a3fb2a58
Update modules using mod_http_files to serve files for change in Prosody trunk
Kim Alvefur <zash@zash.se>
parents:
2871
diff
changeset
|
133 local serve_file = serve { |
4185
06a9ac93e2f1
Back out a8aacfbdaea9: Not needed since change in trunk
Kim Alvefur <zash@zash.se>
parents:
4181
diff
changeset
|
134 path = module:get_directory() .. "/www_files"; |
885
292ea8df7267
mod_admin_web: Let mod_http_files handle file serving
Kim Alvefur <zash@zash.se>
parents:
770
diff
changeset
|
135 }; |
770
a85d86a7f24e
mod_admin_web: Add explicit dependencies on mod_admin_adhoc and mod_bosh
Florian Zeitz <florob@babelmonkeys.de>
parents:
769
diff
changeset
|
136 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
137 -- Setup HTTP server |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
138 module:provides("http", { |
4197
2825fa4504f0
mod_admin_web: Add a title for mod_http_index
Kim Alvefur <zash@zash.se>
parents:
4185
diff
changeset
|
139 title = "Admin Interface"; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
140 name = "admin"; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
141 route = { |
637
210f4ce2697c
mod_admin_web: HTTP methods are now required
Florian Zeitz <florob@babelmonkeys.de>
parents:
636
diff
changeset
|
142 ["GET"] = function(event) |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
143 event.response.headers.location = event.request.path .. "/"; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
144 return 301; |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
145 end; |
637
210f4ce2697c
mod_admin_web: HTTP methods are now required
Florian Zeitz <florob@babelmonkeys.de>
parents:
636
diff
changeset
|
146 ["GET /*"] = serve_file; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
147 } |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
148 }); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
149 |
769
7076f58b9f48
mod_admin_web: Move comment to appropriate line
Florian Zeitz <florob@babelmonkeys.de>
parents:
761
diff
changeset
|
150 -- Setup adminsub service |
901
e3ad5f3aa6d4
mod_admin_web: Adapt to util.pubsub changes
Florian Zeitz <florob@babelmonkeys.de>
parents:
885
diff
changeset
|
151 local function simple_broadcast(kind, node, jids, item) |
e3ad5f3aa6d4
mod_admin_web: Adapt to util.pubsub changes
Florian Zeitz <florob@babelmonkeys.de>
parents:
885
diff
changeset
|
152 if item then |
e3ad5f3aa6d4
mod_admin_web: Adapt to util.pubsub changes
Florian Zeitz <florob@babelmonkeys.de>
parents:
885
diff
changeset
|
153 item = st.clone(item); |
e3ad5f3aa6d4
mod_admin_web: Adapt to util.pubsub changes
Florian Zeitz <florob@babelmonkeys.de>
parents:
885
diff
changeset
|
154 item.attr.xmlns = nil; -- Clear the pubsub namespace |
e3ad5f3aa6d4
mod_admin_web: Adapt to util.pubsub changes
Florian Zeitz <florob@babelmonkeys.de>
parents:
885
diff
changeset
|
155 end |
761
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
156 local message = st.message({ from = module.host, type = "headline" }) |
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
157 :tag("event", { xmlns = xmlns_adminsub .. "#event" }) |
901
e3ad5f3aa6d4
mod_admin_web: Adapt to util.pubsub changes
Florian Zeitz <florob@babelmonkeys.de>
parents:
885
diff
changeset
|
158 :tag(kind, { node = node }) |
761
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
159 :add_child(item); |
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
160 for jid in pairs(jids) do |
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
161 module:log("debug", "Sending notification to %s", jid); |
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
162 message.attr.to = jid; |
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
163 module:send(message); |
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
164 end |
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
165 end |
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
166 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
167 service[module.host] = pubsub.new({ |
761
48f8b312a509
mod_admin_web: Replace core_post_stanza() with module:send()
Florian Zeitz <florob@babelmonkeys.de>
parents:
753
diff
changeset
|
168 broadcaster = simple_broadcast; |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
169 normalize_jid = jid_bare; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
170 get_affiliation = function(jid) return get_affiliation(jid, module.host) end; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
171 capabilities = { |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
172 member = { |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
173 create = false; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
174 publish = false; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
175 retract = false; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
176 get_nodes = true; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
177 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
178 subscribe = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
179 unsubscribe = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
180 get_subscription = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
181 get_subscriptions = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
182 get_items = true; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
183 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
184 subscribe_other = false; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
185 unsubscribe_other = false; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
186 get_subscription_other = false; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
187 get_subscriptions_other = false; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
188 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
189 be_subscribed = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
190 be_unsubscribed = true; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
191 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
192 set_affiliation = false; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
193 }; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
194 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
195 owner = { |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
196 create = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
197 publish = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
198 retract = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
199 get_nodes = true; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
200 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
201 subscribe = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
202 unsubscribe = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
203 get_subscription = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
204 get_subscriptions = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
205 get_items = true; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
206 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
207 subscribe_other = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
208 unsubscribe_other = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
209 get_subscription_other = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
210 get_subscriptions_other = true; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
211 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
212 be_subscribed = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
213 be_unsubscribed = true; |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
214 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
215 set_affiliation = true; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
216 }; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
217 }; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
218 }); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
219 |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
220 -- Create node for s2s sessions |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
221 local ok, err = service[module.host]:create(xmlns_s2s_session, true); |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
222 if not ok then |
3567
179424d557f2
mod_admin_web: Fix to use format strings in logger calls (thanks Ge0rG)
Matthew Wild <mwild1@gmail.com>
parents:
3550
diff
changeset
|
223 module:log("warn", "Could not create node %s: %s", xmlns_s2s_session, err); |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
224 else |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
225 service[module.host]:set_affiliation(xmlns_s2s_session, true, module.host, "owner") |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
226 end |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
227 |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
1118
diff
changeset
|
228 -- Add outgoing s2s sessions |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
229 for _, session in pairs(hosts[module.host].s2sout) do |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
230 if session.type ~= "s2sout_unauthed" then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
231 add_host(session, "out", module.host); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
232 end |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
233 end |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
234 |
2871
c3317f61f3f9
mod_admin_web: Fix typo in comment [codespell]
Kim Alvefur <zash@zash.se>
parents:
1865
diff
changeset
|
235 -- Add incoming s2s sessions |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
236 for session in pairs(incoming_s2s) do |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
237 if session.to_host == module.host then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
238 add_host(session, "in", module.host); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
239 end |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
240 end |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
241 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
242 -- Create node for c2s sessions |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
243 ok, err = service[module.host]:create(xmlns_c2s_session, true); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
244 if not ok then |
3567
179424d557f2
mod_admin_web: Fix to use format strings in logger calls (thanks Ge0rG)
Matthew Wild <mwild1@gmail.com>
parents:
3550
diff
changeset
|
245 module:log("warn", "Could not create node %s: %s", xmlns_c2s_session, tostring(err)); |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
246 else |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
247 service[module.host]:set_affiliation(xmlns_c2s_session, true, module.host, "owner") |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
248 end |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
249 |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
250 -- Add c2s sessions |
1646
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
251 for _, user in pairs(hosts[module.host].sessions or {}) do |
95b8b1f9a882
mod_admin_web: Cleanup
Florian Zeitz <florob@babelmonkeys.de>
parents:
1343
diff
changeset
|
252 for _, session in pairs(user.sessions or {}) do |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
253 add_client(session, module.host); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
254 end |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
255 end |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
256 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
257 -- Register adminsub handler |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
258 module:hook("iq/host/http://prosody.im/adminsub:adminsub", function(event) |
3550
8079e9c6d419
mod_admin_web: Ignore shadowed 'ok' variable, nothing to worry about [luacheck]
Kim Alvefur <zash@zash.se>
parents:
3549
diff
changeset
|
259 -- luacheck: ignore 431/ok |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
260 local origin, stanza = event.origin, event.stanza; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
261 local adminsub = stanza.tags[1]; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
262 local action = adminsub.tags[1]; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
263 local reply; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
264 if action.name == "subscribe" then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
265 local ok, ret = service[module.host]:add_subscription(action.attr.node, stanza.attr.from, stanza.attr.from); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
266 if ok then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
267 reply = st.reply(stanza) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
268 :tag("adminsub", { xmlns = xmlns_adminsub }); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
269 else |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
270 reply = st.error_reply(stanza, "cancel", ret); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
271 end |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
272 elseif action.name == "unsubscribe" then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
273 local ok, ret = service[module.host]:remove_subscription(action.attr.node, stanza.attr.from, stanza.attr.from); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
274 if ok then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
275 reply = st.reply(stanza) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
276 :tag("adminsub", { xmlns = xmlns_adminsub }); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
277 else |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
278 reply = st.error_reply(stanza, "cancel", ret); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
279 end |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
280 elseif action.name == "items" then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
281 local node = action.attr.node; |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
282 local ok, ret = service[module.host]:get_items(node, stanza.attr.from); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
283 if not ok then |
1865
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1646
diff
changeset
|
284 origin.send(st.error_reply(stanza, "cancel", ret)); |
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1646
diff
changeset
|
285 return true; |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
286 end |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
287 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
288 local data = st.stanza("items", { node = node }); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
289 for _, entry in pairs(ret) do |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
290 data:add_child(entry); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
291 end |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
292 if data then |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
293 reply = st.reply(stanza) |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
294 :tag("adminsub", { xmlns = xmlns_adminsub }) |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
295 :add_child(data); |
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
296 else |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
297 reply = st.error_reply(stanza, "cancel", "item-not-found"); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
298 end |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
299 elseif action.name == "adminfor" then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
300 local data = st.stanza("adminfor"); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
301 for host_name in pairs(hosts) do |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
302 if is_admin(stanza.attr.from, host_name) then |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
303 data:tag("item"):text(host_name):up(); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
304 end |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
305 end |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
306 reply = st.reply(stanza) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
307 :tag("adminsub", { xmlns = xmlns_adminsub }) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
308 :add_child(data); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
309 else |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
310 reply = st.error_reply(stanza, "feature-not-implemented"); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
311 end |
1865
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1646
diff
changeset
|
312 origin.send(reply); |
db8b256f51ff
mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents:
1646
diff
changeset
|
313 return true; |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
314 end); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
315 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
316 -- Add/remove c2s sessions |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
317 module:hook("resource-bind", function(event) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
318 add_client(event.session, module.host); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
319 end); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
320 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
321 module:hook("resource-unbind", function(event) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
322 del_client(event.session, module.host); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
323 service[module.host]:remove_subscription(xmlns_c2s_session, module.host, event.session.full_jid); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
324 service[module.host]:remove_subscription(xmlns_s2s_session, module.host, event.session.full_jid); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
325 end); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
326 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
327 -- Add/remove s2s sessions |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
328 module:hook("s2sout-established", function(event) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
329 add_host(event.session, "out", module.host); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
330 end); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
331 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
332 module:hook("s2sin-established", function(event) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
333 add_host(event.session, "in", module.host); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
334 end); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
335 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
336 module:hook("s2sout-destroyed", function(event) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
337 del_host(event.session, "out", module.host); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
338 end); |
636
b3a3199255d7
mod_admin_web: Add timber version. Separate for now
Florian Zeitz <florob@babelmonkeys.de>
parents:
diff
changeset
|
339 |
663
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
340 module:hook("s2sin-destroyed", function(event) |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
341 del_host(event.session, "in", module.host); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
342 end); |
a826b61c8f3a
mod_admin_web: Utilize the shared module magic
Florian Zeitz <florob@babelmonkeys.de>
parents:
637
diff
changeset
|
343 end |