clix/raw.lua

Sat, 24 Jun 2023 09:59:07 +0200

author
Kim Alvefur <zash@zash.se>
date
Sat, 24 Jun 2023 09:59:07 +0200
changeset 170
0d561f921c13
parent 168
75e8ca131178
permissions
-rw-r--r--

clix.adhoc: Move stanza to dataform converter here

Removes the need for verse to have a custom util.dataforms fork only for
this

135
c8cad3c42f3d clix.raw: Import verse, don't rely on globals
Kim Alvefur <zash@zash.se>
parents: 134
diff changeset
1 local verse = require "verse";
168
75e8ca131178 Update to handle Prosody module namespacing
Kim Alvefur <zash@zash.se>
parents: 167
diff changeset
2 local envload = require "prosody.util.envload".envload;
75e8ca131178 Update to handle Prosody module namespacing
Kim Alvefur <zash@zash.se>
parents: 167
diff changeset
3 local xml = require "prosody.util.xml";
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 short_opts.i = "interactive";
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 short_opts.e = "echo";
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 return function (opts, args)
27
5b58c002d6ad clix.*: Add --short-help and make sure they are working correctly
Matthew Wild <mwild1@gmail.com>
parents: 23
diff changeset
8 if opts.short_help then
5b58c002d6ad clix.*: Add --short-help and make sure they are working correctly
Matthew Wild <mwild1@gmail.com>
parents: 23
diff changeset
9 print("Send/receive raw XML to/from the server");
5b58c002d6ad clix.*: Add --short-help and make sure they are working correctly
Matthew Wild <mwild1@gmail.com>
parents: 23
diff changeset
10 return;
5b58c002d6ad clix.*: Add --short-help and make sure they are working correctly
Matthew Wild <mwild1@gmail.com>
parents: 23
diff changeset
11 end
46
b5d6e443e571 raw: If using --stdin and not --interactive then buffer all data before connecting, more reliable in a non-interactive environment
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
12
b5d6e443e571 raw: If using --stdin and not --interactive then buffer all data before connecting, more reliable in a non-interactive environment
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
13 local send_xml;
b5d6e443e571 raw: If using --stdin and not --interactive then buffer all data before connecting, more reliable in a non-interactive environment
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
14 if opts.stdin then
b5d6e443e571 raw: If using --stdin and not --interactive then buffer all data before connecting, more reliable in a non-interactive environment
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
15 send_xml = io.read("*a");
b5d6e443e571 raw: If using --stdin and not --interactive then buffer all data before connecting, more reliable in a non-interactive environment
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
16 end
b5d6e443e571 raw: If using --stdin and not --interactive then buffer all data before connecting, more reliable in a non-interactive environment
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
17
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 local function on_connect(conn)
154
e7f579d82b76 clix.raw: Expose the connection to unsandboxed manipulation
Kim Alvefur <zash@zash.se>
parents: 153
diff changeset
19 _G.conn = conn
83
040fadcc86f9 clix.raw: Print one incoming stanza per line, instead of raw incoming data.
Kim Alvefur <zash@zash.se>
parents: 68
diff changeset
20 local print = print;
040fadcc86f9 clix.raw: Print one incoming stanza per line, instead of raw incoming data.
Kim Alvefur <zash@zash.se>
parents: 68
diff changeset
21 local function stprint(stanza)
040fadcc86f9 clix.raw: Print one incoming stanza per line, instead of raw incoming data.
Kim Alvefur <zash@zash.se>
parents: 68
diff changeset
22 if stanza.attr.to == conn.jid then
040fadcc86f9 clix.raw: Print one incoming stanza per line, instead of raw incoming data.
Kim Alvefur <zash@zash.se>
parents: 68
diff changeset
23 stanza.attr.to = nil;
040fadcc86f9 clix.raw: Print one incoming stanza per line, instead of raw incoming data.
Kim Alvefur <zash@zash.se>
parents: 68
diff changeset
24 end
133
be3b857e991f clix.raw: Use indentation when prettyprinting if available in util.stanza
Kim Alvefur <zash@zash.se>
parents: 132
diff changeset
25 if opts.pretty and stanza.indent then
be3b857e991f clix.raw: Use indentation when prettyprinting if available in util.stanza
Kim Alvefur <zash@zash.se>
parents: 132
diff changeset
26 return print(stanza:indent(1, " "):pretty_print());
be3b857e991f clix.raw: Use indentation when prettyprinting if available in util.stanza
Kim Alvefur <zash@zash.se>
parents: 132
diff changeset
27 end
83
040fadcc86f9 clix.raw: Print one incoming stanza per line, instead of raw incoming data.
Kim Alvefur <zash@zash.se>
parents: 68
diff changeset
28 return print(stanza);
040fadcc86f9 clix.raw: Print one incoming stanza per line, instead of raw incoming data.
Kim Alvefur <zash@zash.se>
parents: 68
diff changeset
29 end
156
3369ae4ff520 clix.raw: Increase priority of print hook to avoid conflict with iq handler
Kim Alvefur <zash@zash.se>
parents: 154
diff changeset
30 conn:hook("stanza", stprint, 1)
46
b5d6e443e571 raw: If using --stdin and not --interactive then buffer all data before connecting, more reliable in a non-interactive environment
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
31 if opts.interactive then
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 local stdin = {
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 getfd = function () return 0; end;
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 dirty = function (self) return false; end;
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 settimeout = function () end;
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 send = function (_, d) return #d, 0; end;
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 close = function () end;
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 receive = function (_, patt)
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 local data = io.stdin:read(patt);
68
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
40 if data == nil then
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
41 conn:close();
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
42 end
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 if opts.echo then
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 io.write(data, patt == "*l" and "\n" or "");
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 end
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 return data;
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 end
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 };
132
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
49 local stwrap;
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
50 do
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
51 local f_mt, r_mt = {}, {};
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
52 function f_mt:__call(...) if ... and type(...) == "string" then return self{ to=... } end return self._f(...) end
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
53 function f_mt:__index(k) return setmetatable({_st = self._f{ type = k }}, r_mt); end
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
54 function r_mt:__call(to) self._st.attr.to = to; return self._st end
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
55 function stwrap(f) return setmetatable({_f=f},f_mt) end
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
56 end
68
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
57 local env = setmetatable({}, { __index = {
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
58 s = verse.stanza,
132
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
59 m = stwrap(verse.message),
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
60 p = stwrap(verse.presence),
3addfb97296c clix.raw: Add a shorthand for top level stanza attributes
Kim Alvefur <zash@zash.se>
parents: 85
diff changeset
61 iq = stwrap(verse.iq),
158
703fa6922493 clix raw: Add a convenience function for smacks <r>
Kim Alvefur <zash@zash.se>
parents: 156
diff changeset
62 r = function ()
703fa6922493 clix raw: Add a convenience function for smacks <r>
Kim Alvefur <zash@zash.se>
parents: 156
diff changeset
63 return verse.stanza("r", { xmlns = "urn:xmpp:sm:3" });
703fa6922493 clix raw: Add a convenience function for smacks <r>
Kim Alvefur <zash@zash.se>
parents: 156
diff changeset
64 end,
85
8bc27e310e64 clix.raw: Add a ping command to the sandbox
Kim Alvefur <zash@zash.se>
parents: 84
diff changeset
65 ping = function(host)
8bc27e310e64 clix.raw: Add a ping command to the sandbox
Kim Alvefur <zash@zash.se>
parents: 84
diff changeset
66 return verse.iq{ type="get", to=host}:tag("ping", {xmlns="urn:xmpp:ping"});
8bc27e310e64 clix.raw: Add a ping command to the sandbox
Kim Alvefur <zash@zash.se>
parents: 84
diff changeset
67 end,
134
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
68 version = function(host)
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
69 return verse.iq{ type="get", to=host}:query"jabber:iq:version";
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
70 end,
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
71 vcard = function(who)
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
72 return verse.iq{ type="get", to=who}:tag("vCard",{xmlns="vcard-temp"});
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
73 end,
138
1783d4226ba1 clix.raw: Give access to the verse pubsub module
Kim Alvefur <zash@zash.se>
parents: 137
diff changeset
74 pubsub = function(...)
1783d4226ba1 clix.raw: Give access to the verse pubsub module
Kim Alvefur <zash@zash.se>
parents: 137
diff changeset
75 return conn.pubsub(...);
1783d4226ba1 clix.raw: Give access to the verse pubsub module
Kim Alvefur <zash@zash.se>
parents: 137
diff changeset
76 end,
134
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
77 disco = function (to, node)
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
78 return verse.iq{ type="get", to=to }:tag("query", { xmlns="http://jabber.org/protocol/disco#info", node = node });
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
79 end,
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
80 items = function (to, node)
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
81 return verse.iq{ type="get", to=to }:tag("query", { xmlns="http://jabber.org/protocol/disco#items", node = node });
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
82 end,
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
83 join = function (roomnick)
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
84 return verse.presence({ to=roomnick }):tag("x", { xmlns="http://jabber.org/protocol/muc" });
d1fa853325b9 clix.raw: Add sevral shorthand functions for common queries
Kim Alvefur <zash@zash.se>
parents: 133
diff changeset
85 end,
68
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
86 }});
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 local function on_incoming(stdin, data)
68
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
88 if not data then
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
89 conn:close();
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
90 return
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
91 end
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
92 if data:sub(1,1) ~= "<" then
153
56546fb3429b clix.raw: Allow unsandboxed arbitrary code execution
Kim Alvefur <zash@zash.se>
parents: 152
diff changeset
93 local sandboxed = true;
56546fb3429b clix.raw: Allow unsandboxed arbitrary code execution
Kim Alvefur <zash@zash.se>
parents: 152
diff changeset
94 if data:sub(1,1) == ">" then
56546fb3429b clix.raw: Allow unsandboxed arbitrary code execution
Kim Alvefur <zash@zash.se>
parents: 152
diff changeset
95 sandboxed = false;
56546fb3429b clix.raw: Allow unsandboxed arbitrary code execution
Kim Alvefur <zash@zash.se>
parents: 152
diff changeset
96 data = data:sub(2);
56546fb3429b clix.raw: Allow unsandboxed arbitrary code execution
Kim Alvefur <zash@zash.se>
parents: 152
diff changeset
97 else
56546fb3429b clix.raw: Allow unsandboxed arbitrary code execution
Kim Alvefur <zash@zash.se>
parents: 152
diff changeset
98 data = "return "..data;
56546fb3429b clix.raw: Allow unsandboxed arbitrary code execution
Kim Alvefur <zash@zash.se>
parents: 152
diff changeset
99 end
167
57bb6e03d239 clix.raw: Update sandboxing to use util.envload and work with Lua 5.2+
Kim Alvefur <zash@zash.se>
parents: 158
diff changeset
100 local chunk, err = envload(data, "@stdin", sandboxed and env or _G);
84
1b4e64176288 clix.raw: Nicer error reporting from the sandbox.
Kim Alvefur <zash@zash.se>
parents: 83
diff changeset
101 if not chunk then
1b4e64176288 clix.raw: Nicer error reporting from the sandbox.
Kim Alvefur <zash@zash.se>
parents: 83
diff changeset
102 conn:error(err);
1b4e64176288 clix.raw: Nicer error reporting from the sandbox.
Kim Alvefur <zash@zash.se>
parents: 83
diff changeset
103 return;
1b4e64176288 clix.raw: Nicer error reporting from the sandbox.
Kim Alvefur <zash@zash.se>
parents: 83
diff changeset
104 end
68
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
105 data = "";
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
106 local ok, ret = pcall(chunk);
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
107 if ok then
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
108 data = ret
84
1b4e64176288 clix.raw: Nicer error reporting from the sandbox.
Kim Alvefur <zash@zash.se>
parents: 83
diff changeset
109 else
1b4e64176288 clix.raw: Nicer error reporting from the sandbox.
Kim Alvefur <zash@zash.se>
parents: 83
diff changeset
110 conn:error(ret);
1b4e64176288 clix.raw: Nicer error reporting from the sandbox.
Kim Alvefur <zash@zash.se>
parents: 83
diff changeset
111 return;
68
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
112 end
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
113 end
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
114 if data then
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
115 conn:send(data);
b7d92ed9c268 clix.raw: Add a small sandbox with util.stanza functions
Kim Alvefur <zash@zash.se>
parents: 46
diff changeset
116 end
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117 if not opts.interactive then
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118 conn:close();
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119 end
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 end
168
75e8ca131178 Update to handle Prosody module namespacing
Kim Alvefur <zash@zash.se>
parents: 167
diff changeset
121 stdin = verse.server.wrapclient(stdin, "stdin", 0, {
152
c729365f1091 clix.raw: Handle (ignore, successfully) read timeouts on stdin
Kim Alvefur <zash@zash.se>
parents: 151
diff changeset
122 onincoming = on_incoming, ondisconnect = function () conn:close() end, onreadtimeout = function () return true; end
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
123 }, "*l");
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
124 else
149
014e73c329c5 clix.raw: Linearise condition
Kim Alvefur <zash@zash.se>
parents: 138
diff changeset
125 if not send_xml then
014e73c329c5 clix.raw: Linearise condition
Kim Alvefur <zash@zash.se>
parents: 138
diff changeset
126 send_xml = table.concat(args, " ");
46
b5d6e443e571 raw: If using --stdin and not --interactive then buffer all data before connecting, more reliable in a non-interactive environment
Matthew Wild <mwild1@gmail.com>
parents: 27
diff changeset
127 end
150
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
128 send_xml = assert(xml.parse(send_xml));
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
129 if send_xml.name == "iq" then
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
130 conn:send_iq(send_xml, function ()
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
131 conn:close();
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
132 end);
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
133 else
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
134 conn:send(send_xml);
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
135 conn:close();
af9b9acb10d6 clix.raw: Track and print response to iq stanza given as cli argument
Kim Alvefur <zash@zash.se>
parents: 149
diff changeset
136 end
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
137 end
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
138
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
139 end
137
7130d5ec115c clix.raw: Allow specifying extra plugins to load
Kim Alvefur <zash@zash.se>
parents: 136
diff changeset
140 local plugins = {};
7130d5ec115c clix.raw: Allow specifying extra plugins to load
Kim Alvefur <zash@zash.se>
parents: 136
diff changeset
141 for i=#args,1,-1 do
7130d5ec115c clix.raw: Allow specifying extra plugins to load
Kim Alvefur <zash@zash.se>
parents: 136
diff changeset
142 if args[i]:sub(1,1) == "+" then
7130d5ec115c clix.raw: Allow specifying extra plugins to load
Kim Alvefur <zash@zash.se>
parents: 136
diff changeset
143 table.insert(plugins, table.remove(args, i):sub(2))
7130d5ec115c clix.raw: Allow specifying extra plugins to load
Kim Alvefur <zash@zash.se>
parents: 136
diff changeset
144 end
7130d5ec115c clix.raw: Allow specifying extra plugins to load
Kim Alvefur <zash@zash.se>
parents: 136
diff changeset
145 end
7130d5ec115c clix.raw: Allow specifying extra plugins to load
Kim Alvefur <zash@zash.se>
parents: 136
diff changeset
146 return clix_connect(opts, on_connect, plugins);
19
3a0a156e0a79 clix.raw: New command to set up a raw XML in/out session with the server
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
147 end

mercurial