Mercurial > prosody-modules
annotate mod_tcpproxy/web/xmpp.io.js @ 5553:67152838afbc
mod_http_oauth2: Improve error messages for URI properties
Since there are separate validation checks for URI properties, including
that they should use https, with better and more specific error reporting.
Reverts 'luaPattern' to 'pattern' which is not currently supported by
util.jsonschema, but allows anything that retrieves the schema over http
to validate against it, should they wish to do so.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 17 Jun 2023 18:15:00 +0200 |
parents | 7dbde05b48a9 |
children |
rev | line source |
---|---|
148
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 var xmlns_ibb = "http://jabber.org/protocol/ibb"; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 var xmlns_tcp = "http://prosody.im/protocol/tcpproxy"; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 function XMPPIO(xmppconn, xmpptcp_host) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 this.xmppconn = xmppconn; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 this.xmpphost = xmpptcp_host; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 this.sid = "FIXME"; |
1343
7dbde05b48a9
all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents:
148
diff
changeset
|
9 |
148
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 this.listeners = []; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 return this; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 } |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 XMPPIO.prototype = { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 connect: function (host, port) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 var conn = this; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 console.log("Connecting..."); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 function onConnect() |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 this.xmppconn.addHandler(function (stanza) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 var data = stanza.getElementsByTagName("data")[0]; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 if(data) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 conn.emit("data", Strophe.Base64.decode(Strophe.getText(data))); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 }, null, "message", null, null, this.xmpphost, {}); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 this.xmppconn.addHandler(function (stanza) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 var data = stanza.getElementsByTagName("close")[0]; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 if(close) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 conn.write = function () { throw "Connection closed"; }; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 conn.emit("end"); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 } |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 }, xmlns_ibb, "iq", "set", null, this.xmpphost, {}); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 conn.emit("connect"); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 } |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 this.xmppconn.sendIQ($iq({to:this.xmpphost,type:"set"}) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 .c("open", { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 "xmlns": xmlns_ibb, |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
43 "xmlns:tcp": xmlns_tcp, |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 "tcp:host": host, |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 "tcp:port": port.toString(), |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 "block-size": "4096", |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 "sid": this.sid.toString(), |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 "stanza": "message" |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 }), onConnect, |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
50 function () { conn.emit("error"); }); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
51 }, |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
52 emit: function () |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
53 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
54 console.log("xmpp.io: Emitting "+arguments[0]); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
55 var args = Array.prototype.slice.call(arguments, 1); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
56 var listeners = this.listeners[arguments[0]]; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
57 if(listeners) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
58 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
59 for(var i=0;i<listeners.length;i++) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
60 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
61 listeners[i][1].apply(listeners[i][0], args); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
62 } |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
63 } |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
64 }, |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
65 addListener: function (event, method, obj) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
66 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
67 if(typeof(obj)=="undefined") |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
68 obj = this; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
69 if(!(event in this.listeners)) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
70 this.listeners[event] = []; |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
71 this.listeners[event].push([obj, method]); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
72 }, |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
73 write: function (data) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
74 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
75 return this.xmppconn.send($msg({to:this.xmpphost}) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
76 .c("data", {xmlns:xmlns_ibb, sid:this.sid.toString()}) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
77 .t(Strophe.Base64.encode(data))); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
78 }, |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
79 end: function () |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
80 { |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
81 return this.xmppconn.send($iq({to:this.xmpphost}) |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
82 .c("close", {xmlns:xmlns_ibb, sid:this.sid.toString()})); |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
83 } |
f2f9b965d1ad
mod_tcpproxy: Add web/ folder containing demo JS client
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
84 }; |