Software /
code /
prosody-modules
Annotate
mod_tcpproxy/mod_tcpproxy.lua @ 737:e4ea03b060ed
mod_archive: switch from/to
The XEP-0136 is not very explicit about the meening of <from> and <to>
elements, but the examples are clear: <from> means it comes from the user in
the 'with' attribute of the collection.
That is the opposite of what is currently implemented in that module.
So for better compatibility with complient clients, this switch the 'from' and
'to' fields
author | Olivier Goffart <ogoffart@woboq.com> |
---|---|
date | Wed, 04 Jul 2012 14:08:43 +0200 |
parent | 283:10c3f6c6a04c |
child | 1343:7dbde05b48a9 |
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]; |
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
|
33 if (not (stanza.name == "iq" and stanza.attr.type == "set") |
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 |
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
|
43 |
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 |
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
|
49 return origin.send(st.error_reply(stanza, "modify", "bad-request", "No host/port specified")); |
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
|
50 elseif not sid or 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
|
51 return origin.send(st.error_reply(stanza, "modify", "bad-request", "No sid specified")); |
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
|
52 elseif ibb_tag.attr.stanza ~= "message" 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
|
53 return origin.send(st.error_reply(stanza, "modify", "bad-request", "Only 'message' stanza transport is supported")); |
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 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
|
55 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
|
56 if not conn 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
|
57 return origin.send(st.error_reply(stanza, "wait", "resource-constraint", 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
|
58 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
|
59 conn:settimeout(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
|
60 |
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 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
|
62 if not success and err ~= "timeout" 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
|
63 return origin.send(st.error_reply(stanza, "wait", "remote-server-not-found", 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
|
64 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
|
65 |
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 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
|
67 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
|
68 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
|
69 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
|
70 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
|
71 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
|
72 :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
|
73 :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
|
74 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
|
75 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
|
76 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
|
77 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
|
78 :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
|
79 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
|
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 |
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 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
|
83 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
|
84 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
|
85 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
|
86 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
|
87 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
|
88 if data then |
31e24026e4fd
mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents:
147
diff
changeset
|
89 conn:write(data); |
31e24026e4fd
mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents:
147
diff
changeset
|
90 else |
31e24026e4fd
mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents:
147
diff
changeset
|
91 return origin.send( |
31e24026e4fd
mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents:
147
diff
changeset
|
92 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
|
93 ); |
31e24026e4fd
mod_tcpproxy: Handle gracefully invalid base64 data, fixes #2 (thanks dersd)
Matthew Wild <mwild1@gmail.com>
parents:
147
diff
changeset
|
94 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
|
95 else |
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
|
96 return origin.send(st.error_reply(stanza, "cancel", "item-not-found")); |
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
|
97 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
|
98 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
|
99 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
|
100 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
|
101 else |
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
|
102 return origin.send(st.error_reply(stanza, "cancel", "item-not-found")); |
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
|
103 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
|
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 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
|
106 |
277
07c1c3eaf0c4
mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents:
153
diff
changeset
|
107 local function stanza_handler(event) |
07c1c3eaf0c4
mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents:
153
diff
changeset
|
108 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
|
109 return true; |
07c1c3eaf0c4
mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents:
153
diff
changeset
|
110 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
|
111 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
|
112 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
|
113 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
|
114 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
|
115 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
|
116 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
|
117 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
|
118 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
|
119 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
|
120 |
07c1c3eaf0c4
mod_tcpproxy: Updated to use events instead of componentmanager.
Waqas Hussain <waqas20@gmail.com>
parents:
153
diff
changeset
|
121 require "core.componentmanager".register_component(host, function() end); -- COMPAT Prosody 0.7 |