Mercurial > prosody-modules
annotate mod_ipcheck/mod_ipcheck.lua @ 5511:0860497152af
mod_http_oauth2: Record hash of client_id to allow future verification
RFC 6819 section 5.2.2.2 states that refresh tokens MUST be bound to the
client. In order to do that, we must record something that can
definitely tie the client to the grant. Since the full client_id is so
large (why we have this client_subset function), a hash is stored
instead.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 02 Jun 2023 10:14:16 +0200 |
| parents | b0628bc93acf |
| children |
| rev | line source |
|---|---|
|
130
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
1 |
|
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
2 -- mod_ipcheck.lua |
|
136
0525c66e7d13
mod_ipcheck: Updated XEP number and URL in comments to the newly published XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
135
diff
changeset
|
3 -- Implementation of XEP-0279: Server IP Check <http://xmpp.org/extensions/xep-0279.html> |
|
130
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
4 |
|
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
5 local st = require "util.stanza"; |
|
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
6 |
|
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
7 module:add_feature("urn:xmpp:sic:0"); |
|
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
8 |
|
3269
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
9 module:hook("iq-get/bare/urn:xmpp:sic:0:ip", function(event) |
|
130
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
10 local origin, stanza = event.origin, event.stanza; |
|
3269
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
11 if stanza.attr.to then |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
12 origin.send(st.error_reply(stanza, "auth", "forbidden", "You can only ask about your own IP address")); |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
13 elseif origin.ip then |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
14 origin.send(st.reply(stanza):tag("ip", {xmlns='urn:xmpp:sic:0'}):text(origin.ip)); |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
15 else |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
16 -- IP addresses should normally be available, but in case they are not |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
17 origin.send(st.error_reply(stanza, "cancel", "service-unavailable", "IP address for this session is not available")); |
|
130
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
18 end |
|
3269
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
19 return true; |
|
130
51cd803e86be
mod_ipcheck: Initial commit. An implementation of the Server IP Check proto-XEP.
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
20 end); |
|
1244
d1bc9a796daf
mod_ipcheck: Add support for XEP version 0.2 (includes port)
Kim Alvefur <zash@zash.se>
parents:
136
diff
changeset
|
21 |
|
d1bc9a796daf
mod_ipcheck: Add support for XEP version 0.2 (includes port)
Kim Alvefur <zash@zash.se>
parents:
136
diff
changeset
|
22 module:add_feature("urn:xmpp:sic:1"); |
|
d1bc9a796daf
mod_ipcheck: Add support for XEP version 0.2 (includes port)
Kim Alvefur <zash@zash.se>
parents:
136
diff
changeset
|
23 |
|
3269
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
24 module:hook("iq-get/bare/urn:xmpp:sic:1:address", function(event) |
|
1244
d1bc9a796daf
mod_ipcheck: Add support for XEP version 0.2 (includes port)
Kim Alvefur <zash@zash.se>
parents:
136
diff
changeset
|
25 local origin, stanza = event.origin, event.stanza; |
|
3269
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
26 if stanza.attr.to then |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
27 origin.send(st.error_reply(stanza, "auth", "forbidden", "You can only ask about your own IP address")); |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
28 elseif origin.ip then |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
29 local reply = st.reply(stanza):tag("address", {xmlns='urn:xmpp:sic:1'}) |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
30 :tag("ip"):text(origin.ip):up() |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
31 if origin.conn and origin.conn.port then -- server_event |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
32 reply:tag("port"):text(tostring(origin.conn:port())) |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
33 elseif origin.conn and origin.conn.clientport then -- server_select |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
34 reply:tag("port"):text(tostring(origin.conn:clientport())) |
|
1244
d1bc9a796daf
mod_ipcheck: Add support for XEP version 0.2 (includes port)
Kim Alvefur <zash@zash.se>
parents:
136
diff
changeset
|
35 end |
|
3269
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
36 origin.send(reply); |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
37 else |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
38 -- IP addresses should normally be available, but in case they are not |
|
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
39 origin.send(st.error_reply(stanza, "cancel", "service-unavailable", "IP address for this session is not available")); |
|
1244
d1bc9a796daf
mod_ipcheck: Add support for XEP version 0.2 (includes port)
Kim Alvefur <zash@zash.se>
parents:
136
diff
changeset
|
40 end |
|
3269
b0628bc93acf
mod_ipcheck: Simplify iq handling by hooking on iq-get/ instead of iq/.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
1945
diff
changeset
|
41 return true; |
|
1244
d1bc9a796daf
mod_ipcheck: Add support for XEP version 0.2 (includes port)
Kim Alvefur <zash@zash.se>
parents:
136
diff
changeset
|
42 end); |
