Index: remoting/tools/register_host.py
|
diff --git a/remoting/tools/register_host.py b/remoting/tools/register_host.py
|
index ffdb955df6f0a5f2334758ee793f37b2544ea340..6530d0e90b338b8474796680ec910e80d8494ecd 100755
|
--- a/remoting/tools/register_host.py
|
+++ b/remoting/tools/register_host.py
|
@@ -1,11 +1,12 @@
|
#!/usr/bin/env python
|
-#
|
-# Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
+# Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
# Use of this source code is governed by a BSD-style license that can be
|
# found in the LICENSE file.
|
-#
|
-# register_host.py registers new hosts in chromoting directory. It
|
-# asks for username/password and then writes these settings to config file.
|
+
|
+"""Registers new hosts in chromoting directory.
|
+
|
+It asks for username/password and then writes these settings to config file.
|
+"""
|
|
import getpass
|
import os
|
@@ -22,67 +23,74 @@ def random_uuid():
|
return ("%04x%04x-%04x-%04x-%04x-%04x%04x%04x" %
|
tuple(map(lambda x: random.randrange(0,65536), range(8))))
|
|
-server = 'www.googleapis.com'
|
-url = 'https://' + server + '/chromoting/v1/@me/hosts'
|
-
|
-settings_filepath = os.path.join(os.path.expanduser('~'),
|
- '.ChromotingConfig.json')
|
-
|
-print "Email:",
|
-email = raw_input()
|
-password = getpass.getpass("Password: ")
|
-
|
-chromoting_auth = gaia_auth.GaiaAuthenticator('chromoting')
|
-auth_token = chromoting_auth.authenticate(email, password)
|
-
|
-host_id = random_uuid()
|
-print "HostId:", host_id
|
-host_name = socket.gethostname()
|
-print "HostName:", host_name
|
-
|
-print "Generating RSA key pair...",
|
-(private_key, public_key) = keygen.generateRSAKeyPair()
|
-print "Done"
|
-
|
-params = ('{"data":{' + \
|
- '"hostId": "%(hostId)s",' + \
|
- '"hostName": "%(hostName)s",' + \
|
- '"publicKey": "%(publicKey)s"}}') % \
|
- {'hostId': host_id, 'hostName': host_name,
|
- 'publicKey': public_key}
|
-headers = {"Authorization": "GoogleLogin auth=" + auth_token,
|
- "Content-Type": "application/json" }
|
-request = urllib2.Request(url, params, headers)
|
-
|
-opener = urllib2.OpenerDirector()
|
-opener.add_handler(urllib2.HTTPDefaultErrorHandler())
|
-
|
-print
|
-print "Registering host with directory service..."
|
-try:
|
- res = urllib2.urlopen(request)
|
- data = res.read()
|
-except urllib2.HTTPError, err:
|
- print >> sys.stderr, "Directory returned error:", err
|
- print >> sys.stderr, err.fp.read()
|
- sys.exit(1)
|
-
|
-print "Done"
|
-
|
-# Get token that the host will use to athenticate in talk network.
|
-authenticator = gaia_auth.GaiaAuthenticator('chromiumsync');
|
-auth_token = authenticator.authenticate(email, password)
|
-
|
-# Write settings file.
|
-os.umask(0066) # Set permission mask for created file.
|
-settings_file = open(settings_filepath, 'w')
|
-settings_file.write('{\n');
|
-settings_file.write(' "xmpp_login" : "' + email + '",\n')
|
-settings_file.write(' "xmpp_auth_token" : "' + auth_token + '",\n')
|
-settings_file.write(' "host_id" : "' + host_id + '",\n')
|
-settings_file.write(' "host_name" : "' + host_name + '",\n')
|
-settings_file.write(' "private_key" : "' + private_key + '",\n')
|
-settings_file.write('}\n')
|
-settings_file.close()
|
-
|
-print 'Configuration saved in', settings_filepath
|
+
|
+def main():
|
+ server = 'www.googleapis.com'
|
+ url = 'https://' + server + '/chromoting/v1/@me/hosts'
|
+
|
+ settings_filepath = os.path.join(os.path.expanduser('~'),
|
+ '.ChromotingConfig.json')
|
+
|
+ print "Email:",
|
+ email = raw_input()
|
+ password = getpass.getpass("Password: ")
|
+
|
+ chromoting_auth = gaia_auth.GaiaAuthenticator('chromoting')
|
+ auth_token = chromoting_auth.authenticate(email, password)
|
+
|
+ host_id = random_uuid()
|
+ print "HostId:", host_id
|
+ host_name = socket.gethostname()
|
+ print "HostName:", host_name
|
+
|
+ print "Generating RSA key pair...",
|
+ (private_key, public_key) = keygen.generateRSAKeyPair()
|
+ print "Done"
|
+
|
+ params = ('{"data":{' +
|
+ '"hostId": "%(hostId)s",' +
|
+ '"hostName": "%(hostName)s",' +
|
+ '"publicKey": "%(publicKey)s"}}') %
|
+ {'hostId': host_id, 'hostName': host_name,
|
+ 'publicKey': public_key}
|
+ headers = {"Authorization": "GoogleLogin auth=" + auth_token,
|
+ "Content-Type": "application/json" }
|
+ request = urllib2.Request(url, params, headers)
|
+
|
+ opener = urllib2.OpenerDirector()
|
+ opener.add_handler(urllib2.HTTPDefaultErrorHandler())
|
+
|
+ print
|
+ print "Registering host with directory service..."
|
+ try:
|
+ res = urllib2.urlopen(request)
|
+ data = res.read()
|
+ except urllib2.HTTPError, err:
|
+ print >> sys.stderr, "Directory returned error:", err
|
+ print >> sys.stderr, err.fp.read()
|
+ return 1
|
+
|
+ print "Done"
|
+
|
+ # Get token that the host will use to athenticate in talk network.
|
+ authenticator = gaia_auth.GaiaAuthenticator('chromiumsync');
|
+ auth_token = authenticator.authenticate(email, password)
|
+
|
+ # Write settings file.
|
+ os.umask(0066) # Set permission mask for created file.
|
+ settings_file = open(settings_filepath, 'w')
|
+ settings_file.write('{\n');
|
+ settings_file.write(' "xmpp_login" : "' + email + '",\n')
|
+ settings_file.write(' "xmpp_auth_token" : "' + auth_token + '",\n')
|
+ settings_file.write(' "host_id" : "' + host_id + '",\n')
|
+ settings_file.write(' "host_name" : "' + host_name + '",\n')
|
+ settings_file.write(' "private_key" : "' + private_key + '",\n')
|
+ settings_file.write('}\n')
|
+ settings_file.close()
|
+
|
+ print 'Configuration saved in', settings_filepath
|
+ return 0
|
+
|
+
|
+if __name__ == '__main__':
|
+ sys.exit(main())
|
|