annotate mod_tcpproxy.wiki @ 126:e61fe5ca5c47

Created wiki page through web user interface.
author MWild1
date Tue, 13 Apr 2010 14:50:37 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
126
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
1 #summary TCP-over-XMPP :)
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
2 #labels Stage-Beta
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
3
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
4 = Introduction =
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
5
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
6 It happens occasionally that I would like to use the XMPP server as a generic proxy for connecting to another service. It is especially awkward in some environments, and impossible in (for example) Javascript inside a web browser.
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
7
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
8
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
9 = Details =
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
10
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
11 Using mod_tcpproxy an XMPP client (including those using BOSH) can initiate a pipe to a given TCP/IP address and port. This implementation uses the [http://xmpp.org/extensions/xep-0047.html In-Band Bytestreams] XEP, simply extended with 2 new attributes in a new namespace, host and port.
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
12
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
13 An example Javascript client can be found in the web/ directory of mod_tcpproxy in the repository.
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
14
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
15 = Configuration =
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
16 Just add tcpproxy as a component, for example:
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
17
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
18 {{{Component "tcp.example.com" "tcpproxy"}}}
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
19
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
20 = Protocol =
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
21
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
22 A new stream is opened like this:
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
23
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
24 {{{
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
25 <iq type="set" id="newconn1" to="tcp.example.com">
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
26 <open xmlns='http://jabber.org/protocol/ibb'
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
27         sid='connection1'
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
28         stanza='message'
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
29 xmlns:tcp='http://prosody.im/protocol/tcpproxy'
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
30 tcp:host='example.com'
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
31 tcp:port='80' />
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
32 </iq>
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
33 }}}
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
34
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
35 The stanza attribute (currently) MUST be 'message', and a block-size, if given, is (currently) ignored.
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
36
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
37 In response to this stanza you will receive a result upon connection success, or an error if the connection failed. You can then send to the connection by sending message stanzas as described in the IBB XEP. Incoming data will likewise be delivered as messages.
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
38
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
39 = Compatibility =
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
40 ||0.7||Works||
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
41 ||0.6||Doesn't work||
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
42
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
43 = Todo =
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
44 * ACLs (restrict to certain JIDs, and/or certain target hosts/ports)
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
45 * Honour block-size (undecided)
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
46 * Support iq stanzas for data transmission
e61fe5ca5c47 Created wiki page through web user interface.
MWild1
parents:
diff changeset
47 * Signal to start SSL/TLS on a connection