annotate mod_ipcheck/mod_ipcheck.lua @ 6171:fe8222112cf4

mod_conversejs: Serve base app at / This makes things slightly less awkward for the browser to figure out which URLs belong to a PWA. The app's "start URL" was previously without the '/' and therefore was not considered within the scope of the PWA. Now the canonical app URL will always have a '/'. Prosody/mod_http should take care of redirecting existing links without the trailing / to the new URL. If you have an installation at https://prosody/conversejs then it is now at https://prosody/conversejs/ (the first URL will now redirect to the second URL if you use it). The alternative would be to make the PWA scope include the parent, i.e. the whole of https://prosody/ in this case. This might get messy if other PWAs are provided by the same site or Prosody installation, however.
author Matthew Wild <mwild1@gmail.com>
date Tue, 11 Feb 2025 13:18:38 +0000
parents b0628bc93acf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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);