Sun, 14 Aug 2011 21:34:28 +0200
clix.vcard: Fix debug.
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 | 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 | 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 | 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 | 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 | 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 |