annotate mod_tcpproxy/mod_tcpproxy.lua @ 4646:072d078be095

mod_storage_xmlarchive: Advertise capabilities (none atm) Both 'total' and 'quota' would be prohibitively expensive for the kind of archives this module targets as it would require counting items across the entire archive.
author Kim Alvefur <zash@zash.se>
date Fri, 13 Aug 2021 01:18:32 +0200
parents db8b256f51ff
children 3804332c204e
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];
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
47 local jid, sid = 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
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;
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
54 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
55 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
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 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
58 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
59 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
60 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
61 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
62 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
63 conn:settimeout(0);
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 283
diff changeset
64
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 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
66 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
67 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
68 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
69 end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 283
diff changeset
70
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
71 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
72 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
73 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
74 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
75 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
76 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
77 :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
78 :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
79 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
80 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
81 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
82 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
83 :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
84 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
85 end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 283
diff changeset
86
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
87 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
88 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
89 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
90 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
91 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
92 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
93 if data then
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
94 conn:write(data);
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
95 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
96 origin.send(
153
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
97 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
98 );
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 return true;
153
31e24026e4fd mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents: 147
diff changeset
100 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
101 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
102 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
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110 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
111 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
112 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
113 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
114
277
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
115 local function stanza_handler(event)
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
116 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
117 return true;
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
118 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
119 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
120 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
121 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
122 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
123 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
124 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
125 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
126 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
127 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
128
07c1c3eaf0c4 mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents: 153
diff changeset
129 require "core.componentmanager".register_component(host, function() end); -- COMPAT Prosody 0.7