OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 # | 6 # |
7 # register_host.py registers new hosts in chromoting directory. It | 7 # register_host.py registers new hosts in chromoting directory. It |
8 # asks for username/password and then writes these settings to config file. | 8 # asks for username/password and then writes these settings to config file. |
9 | 9 |
10 import getpass | 10 import getpass |
11 import os | 11 import os |
12 import urllib | 12 import urllib |
13 import urllib2 | 13 import urllib2 |
14 import uuid | 14 import uuid |
15 import socket | 15 import socket |
16 import sys | 16 import sys |
17 | 17 |
18 import gaia_auth | 18 import gaia_auth |
| 19 import keygen |
19 | 20 |
20 server = 'www-googleapis-test.sandbox.google.com' | 21 server = 'www-googleapis-test.sandbox.google.com' |
21 url = 'http://' + server + '/chromoting/v1/@me/hosts' | 22 url = 'http://' + server + '/chromoting/v1/@me/hosts' |
22 | 23 |
23 settings_filepath = os.path.join(os.path.expanduser('~'), | 24 settings_filepath = os.path.join(os.path.expanduser('~'), |
24 '.ChromotingConfig.json') | 25 '.ChromotingConfig.json') |
25 | 26 |
26 print "Email:", | 27 print "Email:", |
27 email = raw_input() | 28 email = raw_input() |
28 password = getpass.getpass("Password: ") | 29 password = getpass.getpass("Password: ") |
29 | 30 |
30 xapi_auth = gaia_auth.GaiaAuthenticator('xapi') | 31 xapi_auth = gaia_auth.GaiaAuthenticator('xapi') |
31 xapi_token = xapi_auth.authenticate(email, password) | 32 xapi_token = xapi_auth.authenticate(email, password) |
32 | 33 |
33 host_id = str(uuid.uuid1()) | 34 host_id = str(uuid.uuid1()) |
34 print "HostId:", host_id | 35 print "HostId:", host_id |
35 host_name = socket.gethostname() | 36 host_name = socket.gethostname() |
36 print "HostName:", host_name | 37 print "HostName:", host_name |
37 # TODO(sergeyu): Implement keypair generation. | |
38 public_key = '123123' | |
39 jingle_id = '' | |
40 | 38 |
41 #f = urllib.urlopen(url, params); | 39 print "Generating RSA key pair...", |
42 #print params | 40 (private_key, public_key) = keygen.generateRSAKeyPair() |
| 41 print "Done" |
| 42 |
43 params = ('{"data":{' + \ | 43 params = ('{"data":{' + \ |
44 '"host_id": "%(host_id)s",' + \ | 44 '"host_id": "%(host_id)s",' + \ |
45 '"host_name": "%(host_name)s",' + \ | 45 '"host_name": "%(host_name)s",' + \ |
46 '"public_key": "%(public_key)s",' + \ | 46 '"public_key": "%(public_key)s"}}') % \ |
47 '"jingle_id": "%(jingle_id)s"}}') % \ | |
48 {'host_id': host_id, 'host_name': host_name, | 47 {'host_id': host_id, 'host_name': host_name, |
49 'public_key': public_key, 'jingle_id': jingle_id} | 48 'public_key': public_key} |
50 headers = {"Authorization": "GoogleLogin auth=" + xapi_token, | 49 headers = {"Authorization": "GoogleLogin auth=" + xapi_token, |
51 "Content-Type": "application/json" } | 50 "Content-Type": "application/json" } |
52 request = urllib2.Request(url, params, headers) | 51 request = urllib2.Request(url, params, headers) |
53 | 52 |
54 opener = urllib2.OpenerDirector() | 53 opener = urllib2.OpenerDirector() |
55 opener.add_handler(urllib2.HTTPDefaultErrorHandler()) | 54 opener.add_handler(urllib2.HTTPDefaultErrorHandler()) |
56 | 55 |
57 print | 56 print |
58 print "Registering host with directory service..." | 57 print "Registering host with directory service..." |
59 try: | 58 try: |
(...skipping 11 matching lines...) Expand all Loading... |
71 auth_token = authenticator.authenticate(email, password) | 70 auth_token = authenticator.authenticate(email, password) |
72 | 71 |
73 # Write settings file. | 72 # Write settings file. |
74 os.umask(0066) # Set permission mask for created file. | 73 os.umask(0066) # Set permission mask for created file. |
75 settings_file = open(settings_filepath, 'w') | 74 settings_file = open(settings_filepath, 'w') |
76 settings_file.write('{\n'); | 75 settings_file.write('{\n'); |
77 settings_file.write(' "xmpp_login" : "' + email + '",\n') | 76 settings_file.write(' "xmpp_login" : "' + email + '",\n') |
78 settings_file.write(' "xmpp_auth_token" : "' + auth_token + '",\n') | 77 settings_file.write(' "xmpp_auth_token" : "' + auth_token + '",\n') |
79 settings_file.write(' "host_id" : "' + host_id + '",\n') | 78 settings_file.write(' "host_id" : "' + host_id + '",\n') |
80 settings_file.write(' "host_name" : "' + host_name + '",\n') | 79 settings_file.write(' "host_name" : "' + host_name + '",\n') |
81 settings_file.write(' "public_key" : "' + public_key + '"\n') | 80 settings_file.write(' "private_key" : "' + private_key + '",\n') |
82 settings_file.write('}\n') | 81 settings_file.write('}\n') |
83 settings_file.close() | 82 settings_file.close() |
84 | 83 |
85 print 'Configuration saved in', settings_filepath | 84 print 'Configuration saved in', settings_filepath |
OLD | NEW |