annotate mod_tcpproxy/mod_tcpproxy.lua @ 4895:2542fd80cd15

mod_turn_external: Fix type of config option (thanks mirux) There was a separate boolean option to enable TLS before, but it was merged with the port number option and it seems the typed API interface got confused. Backport of trunk rev aa7a8aa64d3f
author Kim Alvefur <zash@zash.se>
date Tue, 15 Feb 2022 21:51:52 +0100
parents 3804332c204e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local st = require "util.stanza";
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local xmlns_ibb = "http://jabber.org/protocol/ibb";
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 local xmlns_tcp = "http://prosody.im/protocol/tcpproxy";
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 local host_attr, port_attr = xmlns_tcp.."\1host", xmlns_tcp.."\1port";
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8 local base64 = require "util.encodings".base64;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 local b64, unb64 = base64.encode, base64.decode;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 local host = module.host;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 local open_connections = {};
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local function new_session(jid, sid, conn)
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 if not open_connections[jid] then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 open_connections[jid] = {};
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 open_connections[jid][sid] = conn;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 local function close_session(jid, sid)
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 if open_connections[jid] then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 open_connections[jid][sid] = nil;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 if next(open_connections[jid]) == nil then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 open_connections[jid] = nil;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 return true;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 function proxy_component(origin, stanza)
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 local ibb_tag = stanza.tags[1];
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 283
diff changeset
33 if (not (stanza.name == "iq" and stanza.attr.type == "set")
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 and stanza.name ~= "message")
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 or
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 (not (ibb_tag)
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 or ibb_tag.attr.xmlns ~= xmlns_ibb) then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 if stanza.attr.type ~= "error" then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 origin.send(st.error_reply(stanza, "cancel", "service-unavailable"));
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 return;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 283
diff changeset
43
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 if ibb_tag.name == "open" then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 -- Starting a new stream
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 local to_host, to_port = ibb_tag.attr[host_attr], ibb_tag.attr[port_attr];
4853
3804332c204e mod_tcpproxy: Reject missing or non-number block-size, as per XEP-0047
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1865
diff changeset
47 local jid, sid, block_size = stanza.attr.from, ibb_tag.attr.sid, ibb_tag.attr["block-size"];
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 if not (to_host and to_port) 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: 1343
diff changeset
49 origin.send(st.error_reply(stanza, "modify", "bad-request", "No host/port specified"));
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
50 return true;
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 elseif not sid or sid == "" 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: 1343
diff changeset
52 origin.send(st.error_reply(stanza, "modify", "bad-request", "No sid specified"));
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
53 return true;
4853
3804332c204e mod_tcpproxy: Reject missing or non-number block-size, as per XEP-0047
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1865
diff changeset
54 elseif not block_size or not tonumber(block_size) then
3804332c204e mod_tcpproxy: Reject missing or non-number block-size, as per XEP-0047
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1865
diff changeset
55 origin.send(st.error_reply(stanza, "modify", "bad-request", "Bad block-size attribute"));
3804332c204e mod_tcpproxy: Reject missing or non-number block-size, as per XEP-0047
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents: 1865
diff changeset
56 return true;
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 elseif ibb_tag.attr.stanza ~= "message" 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: 1343
diff changeset
58 origin.send(st.error_reply(stanza, "modify", "bad-request", "Only 'message' stanza transport is supported"));
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
59 return true;
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
60 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 local conn, err = socket.tcp();
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 if not conn 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: 1343
diff changeset
63 origin.send(st.error_reply(stanza, "wait", "resource-constraint", err));
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
64 return true;
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
65 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66 conn:settimeout(0);
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 283
diff changeset
67
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
68 local success, err = conn:connect(to_host, to_port);
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
69 if not success and err ~= "timeout" 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: 1343
diff changeset
70 origin.send(st.error_reply(stanza, "wait", "remote-server-not-found", err));
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
71 return true;
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
72 end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 283
diff changeset
73
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74 local listener,seq = {}, 0;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
75 function listener.onconnect(conn)
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 origin.send(st.reply(stanza));
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 function listener.onincoming(conn, data)
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79 origin.send(st.message({to=jid,from=host})
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 :tag("data", {xmlns=xmlns_ibb,seq=seq,sid=sid})
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
81 :text(b64(data)));
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82 seq = seq + 1;
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 function listener.ondisconnect(conn, err)
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 origin.send(st.message({to=jid,from=host})
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 :tag("close", {xmlns=xmlns_ibb,sid=sid}));
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 close_session(jid, sid);
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 283
diff changeset
89
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 conn = server.wrapclient(conn, to_host, to_port, listener, "*a" );
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 new_session(jid, sid, conn);
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 elseif ibb_tag.name == "data" then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 local conn = open_connections[stanza.attr.from][ibb_tag.attr.sid];
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 if conn then
153
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
95 local data = unb64(ibb_tag:get_text());
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
96 if data then
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
97 conn:write(data);
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
98 else
1865
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
99 origin.send(
153
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
100 st.error_reply(stanza, "modify", "bad-request", "Invalid data (base64?)")
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
101 );
1865
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
102 return true;
153
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
103 end
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
104 else
1865
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
105 origin.send(st.error_reply(stanza, "cancel", "item-not-found"));
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
106 return true;
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108 elseif ibb_tag.name == "close" then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
109 if close_session(stanza.attr.from, ibb_tag.attr.sid) then
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
110 origin.send(st.reply(stanza));
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 else
1865
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
112 origin.send(st.error_reply(stanza, "cancel", "item-not-found"));
db8b256f51ff mod_admin_web,mod_carbons,mod_csi_compat,mod_mam_muc,mod_tcpproxy: Explicitly return true
Kim Alvefur <zash@zash.se>
parents: 1343
diff changeset
113 return true;
147
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
115 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
116 end
4db80a46b064 mod_tcpproxy: Initial commit. The moment you didn't know you've been waiting for is here... the dawn of TCP over XMPP.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117
277
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
118 local function stanza_handler(event)
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
119 proxy_component(event.origin, event.stanza);
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
120 return true;
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
121 end
283
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
122 module:hook("iq/bare", stanza_handler, -1);
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
123 module:hook("message/bare", stanza_handler, -1);
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
124 module:hook("presence/bare", stanza_handler, -1);
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
125 module:hook("iq/full", stanza_handler, -1);
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
126 module:hook("message/full", stanza_handler, -1);
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
127 module:hook("presence/full", stanza_handler, -1);
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
128 module:hook("iq/host", stanza_handler, -1);
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
129 module:hook("message/host", stanza_handler, -1);
10c3f6c6a04c mod_tcpproxy: Give stanza handlers a negative priority, to allow mod_iq to process them first.
Waqas Hussain <waqas20@gmail.com>
parents: 277
diff changeset
130 module:hook("presence/host", stanza_handler, -1);
277
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
131
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
132 require "core.componentmanager".register_component(host, function() end); -- COMPAT Prosody 0.7