author | Da Risk <da_risk@beem-project.com> |
Sat, 29 Sep 2012 05:22:11 +0200 | |
changeset 996 | 476e8690b0ea |
parent 995 | 6318bee856fd |
child 1004 | aa8c2dac6d02 |
permissions | -rwxr-xr-x |
995
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/env python3 |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
2 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
3 |
import urllib.request |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
4 |
import argparse, sys |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
5 |
from xml.dom.minidom import parse, getDOMImplementation |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
6 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
7 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
8 |
def getJidsFromUrl(url): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
9 |
f = urllib.request.urlopen(url) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
10 |
indoc = parse(f) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
11 |
jids = [] |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
12 |
query = indoc.documentElement |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
13 |
if query.localName == "query" : |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
14 |
for item in query.getElementsByTagName("item"): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
15 |
jid = item.getAttribute("jid") |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
16 |
jids.append(jid) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
17 |
return jids |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
18 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
19 |
def createDocument(): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
20 |
impl = getDOMImplementation() |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
21 |
return impl.createDocument(None, "resources", None) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
22 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
23 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
24 |
def purge(elems): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
25 |
res = [] |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
26 |
for i in elems: |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
27 |
if i not in res: |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
28 |
res.append(i) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
29 |
return res |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
30 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
31 |
def appendStringElem(doc, node, jids): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
32 |
for i in jids: |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
33 |
item = doc.createElement("item") |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
34 |
text = doc.createTextNode(i) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
35 |
item.appendChild(text) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
36 |
node.appendChild(item) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
37 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
38 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
39 |
parser = argparse.ArgumentParser(description='Collect some free xmpp services') |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
40 |
parser.add_argument('url', metavar="url", |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
41 |
default=['http://xmpp.net/services.xml', "https://list.jabber.at/api/?format=services.xml"] , nargs='*', |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
42 |
help='url to get the services') |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
43 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
44 |
parser.add_argument('-o', metavar="FILE", type=argparse.FileType('bw'), |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
45 |
default = sys.stdout.buffer, |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
46 |
help='send output to FILE') |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
47 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
48 |
args = parser.parse_args() |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
49 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
50 |
# collect the servers jid |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
51 |
jids = [] |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
52 |
for url in args.url: |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
53 |
jids += getJidsFromUrl(url) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
54 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
55 |
jids = purge(jids) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
56 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
57 |
# create the xml output document |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
58 |
outdoc = createDocument() |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
59 |
res_element = outdoc.documentElement |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
60 |
string_array_elem = outdoc.createElement('string-array') |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
61 |
res_element.appendChild(string_array_elem) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
62 |
string_array_elem.setAttribute("name", "xmpp_server_list") |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
63 |
appendStringElem(outdoc, string_array_elem, jids) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
64 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
65 |
# print result |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
66 |
f = args.o |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
67 |
f.write(outdoc.toprettyxml(encoding="utf-8")) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
68 |