clix/export.lua

Sun, 15 Nov 2020 20:45:50 +0100

author
Kim Alvefur <zash@zash.se>
date
Sun, 15 Nov 2020 20:45:50 +0100
changeset 140
8815232cbbeb
parent 60
1537dabc5df8
child 164
fafdcde2e2eb
permissions
-rw-r--r--

clix.watch_pep: Take PEP node as positional argument

Thanks MattJ

50
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 short_opts.i = "interactive";
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local split_jid = require "util.jid".split;
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 local timer = require "util.timer";
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local xmlns_pie = "urn:xmpp:pie:0";
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local xmlns_nodes = {
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 { "query", "jabber:iq:roster" },
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 { "query", "jabber:iq:privacy" },
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 { "vCard", "vcard-temp" },
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 }
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local xmlns_private = "jabber:iq:private";
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 local xmlns_private_nodes = {
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 { "storage", "storage:bookmarks" },
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 }
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 local function on_connect(conn)
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 local export = verse.stanza("server-data", { xmlns = xmlns_pie })
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 :tag("host", { jid = conn.host })
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 :tag("user", { name = conn.username, password = conn.password });
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 local out = 0;
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 for i = 1,#xmlns_nodes do
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 out = out + 1;
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 local node = xmlns_nodes[i];
53
bfc53225a38f clix.export: Use verses debug()
Kim Alvefur <zash@zash.se>
parents: 50
diff changeset
25 conn:debug("requesting %s*%s", node[2], node[1]);
50
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 conn:send_iq(verse.iq{type="get"}
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 :tag(node[1], { xmlns = node[2] })
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 , function(stanza)
53
bfc53225a38f clix.export: Use verses debug()
Kim Alvefur <zash@zash.se>
parents: 50
diff changeset
29 conn:debug("got %s*%s", node[2], node[1]);
50
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 local query = stanza:get_child(node[1], node[2]);
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 if query then
54
1c589502da76 clix.export: Remove unneeded up()
Kim Alvefur <zash@zash.se>
parents: 53
diff changeset
32 export:add_child(query);
50
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 out = out - 1;
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 end);
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 for i = 1,#xmlns_private_nodes do
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 out = out + 1;
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 local node = xmlns_private_nodes[i];
53
bfc53225a38f clix.export: Use verses debug()
Kim Alvefur <zash@zash.se>
parents: 50
diff changeset
41 conn:debug("requesting private node %s*%s", node[2], node[1]);
50
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 conn:send_iq(verse.iq{type="get"}
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 :tag("query", { xmlns = xmlns_private })
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 :tag(node[1], { xmlns = node[2] })
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 , function(stanza)
53
bfc53225a38f clix.export: Use verses debug()
Kim Alvefur <zash@zash.se>
parents: 50
diff changeset
46 conn:debug("got private %s*%s", node[2], node[1]);
50
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 local query = stanza:get_child("query", xmlns_private);
60
1537dabc5df8 clix.export: Don't add empty iq:private nodes.
Kim Alvefur <zash@zash.se>
parents: 55
diff changeset
48 if query and #query > 0 then
55
a3f86df6f359 clix.export: Remove another up()
Kim Alvefur <zash@zash.se>
parents: 54
diff changeset
49 export:add_child(query);
50
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 out = out - 1;
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52 end);
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
53 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
54
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
55 timer.add_task(1, function ()
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
56 if out > 0 then
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
57 return 1
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
58 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
59 print("<?xml version='1.0' encoding='UTF-8'?>");
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
60 print(export);
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
61 conn:close();
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
62 end)
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
63 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
64
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
65 return function (opts, arg)
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
66 if opts.short_help then
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
67 print("Export your account");
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
68 return;
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
69 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
70 if opts.help then
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
71 return 0;
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
72 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
73 clix_connect(opts, on_connect);
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
74 end
e5cdd8e93e05 clix.export: XEP-0227 format account exporter
Kim Alvefur <zash@zash.se>
parents:
diff changeset
75

mercurial