author | Da Risk <da_risk@beem-project.com> |
Thu, 21 Dec 2017 15:56:42 -0800 | |
changeset 1073 | 274f38e8c8a9 |
parent 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 |
1004
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
2 |
## BEEM is a videoconference application on the Android Platform. |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
3 |
## Copyright (C) 2009-2012 by Frederic-Charles Barthelery, |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
4 |
## Nikita Kozlov, |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
5 |
## Vincent Veronis. |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
6 |
## |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
7 |
## This file is part of BEEM. |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
8 |
## |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
9 |
## BEEM is free software: you can redistribute it and/or modify |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
10 |
## it under the terms of the GNU General Public License as published by |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
11 |
## the Free Software Foundation, either version 3 of the License, or |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
12 |
## (at your option) any later version. |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
13 |
## |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
14 |
## BEEM is distributed in the hope that it will be useful, |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
15 |
## but WITHOUT ANY WARRANTY; without even the implied warranty of |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
16 |
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
17 |
## GNU General Public License for more details. |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
18 |
## |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
19 |
## You should have received a copy of the GNU General Public License |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
20 |
## along with BEEM. If not, see <http://www.gnu.org/licenses/>. |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
21 |
## |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
22 |
## Please send bug reports with examples or suggestions to |
aa8c2dac6d02
Add licence header to getFreeXmppServices.py
Da Risk <da_risk@beem-project.com>
parents:
995
diff
changeset
|
23 |
## contact@beem-project.com or http://www.beem-project.com/ |
995
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
24 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
25 |
import urllib.request |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
26 |
import argparse, sys |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
27 |
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
|
28 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
29 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
30 |
def getJidsFromUrl(url): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
31 |
f = urllib.request.urlopen(url) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
32 |
indoc = parse(f) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
33 |
jids = [] |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
34 |
query = indoc.documentElement |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
35 |
if query.localName == "query" : |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
36 |
for item in query.getElementsByTagName("item"): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
37 |
jid = item.getAttribute("jid") |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
38 |
jids.append(jid) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
39 |
return jids |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
40 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
41 |
def createDocument(): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
42 |
impl = getDOMImplementation() |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
43 |
return impl.createDocument(None, "resources", None) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
44 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
45 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
46 |
def purge(elems): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
47 |
res = [] |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
48 |
for i in elems: |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
49 |
if i not in res: |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
50 |
res.append(i) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
51 |
return res |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
52 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
53 |
def appendStringElem(doc, node, jids): |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
54 |
for i in jids: |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
55 |
item = doc.createElement("item") |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
56 |
text = doc.createTextNode(i) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
57 |
item.appendChild(text) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
58 |
node.appendChild(item) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
59 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
60 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
61 |
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
|
62 |
parser.add_argument('url', metavar="url", |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
63 |
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
|
64 |
help='url to get the services') |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
65 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
66 |
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
|
67 |
default = sys.stdout.buffer, |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
68 |
help='send output to FILE') |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
69 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
70 |
args = parser.parse_args() |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
71 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
72 |
# collect the servers jid |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
73 |
jids = [] |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
74 |
for url in args.url: |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
75 |
jids += getJidsFromUrl(url) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
76 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
77 |
jids = purge(jids) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
78 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
79 |
# create the xml output document |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
80 |
outdoc = createDocument() |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
81 |
res_element = outdoc.documentElement |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
82 |
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
|
83 |
res_element.appendChild(string_array_elem) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
84 |
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
|
85 |
appendStringElem(outdoc, string_array_elem, jids) |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
86 |
|
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
87 |
# print result |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
88 |
f = args.o |
6318bee856fd
Display error messages when account creation failed.
Da Risk <da_risk@beem-project.com>
parents:
diff
changeset
|
89 |
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
|
90 |