Index: bin/cros_gsdcurl.py |
diff --git a/bin/cros_gsdcurl.py b/bin/cros_gsdcurl.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..e046fe2795e84c20d90940d6f38c3e9606750f41 |
--- /dev/null |
+++ b/bin/cros_gsdcurl.py |
@@ -0,0 +1,70 @@ |
+#!/usr/bin/python |
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+ |
+import getpass |
+import os |
+import re |
+import subprocess |
+import sys |
+import tempfile |
+import urllib |
+ |
+ |
+def Authenticate(): |
+ # Authenticate. |
+ default_username = os.environ.get('LOGNAME', '') |
jrbarnette
2010/08/04 01:31:40
What's wrong with getpass.getuser()?
|
+ username = os.environ.get('GSDCURL_USERNAME') |
+ if username is None: |
+ sys.stderr.write('Username [' + default_username + ']: ') |
+ username = raw_input() |
+ if username == '': |
+ username = default_username + '@google.com' |
+ elif '@' not in username: |
+ username = username + '@google.com' |
+ passwd = os.environ.get('GSDCURL_PASSWORD') |
+ if passwd is None: |
+ sys.stderr.write('Password: ') |
+ passwd = urllib.quote_plus(getpass.getpass(prompt='')) |
+ cmd = [ |
+ 'curl', '--silent', 'https://www.google.com/accounts/ClientLogin', |
+ '-d', 'Email=' + username, |
+ '-d', 'Passwd=' + passwd, |
+ '-d', 'accountType=GOOGLE', |
+ '-d', 'source=Google-gsdcurl-ver1', |
+ '-d', 'service=cds', |
+ ] |
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE) |
+ (p_stdout, _) = p.communicate() |
+ assert p.returncode == 0 |
+ m = re.search('\nAuth=([^\n]+)\n', p_stdout) |
+ if not m: |
+ sys.stderr.write('BAD LOGIN\n') |
+ sys.exit(1) |
+ auth = m.group(1) |
+ return auth |
+ |
+ |
+def DoCurl(auth, argv): |
+ (_, cookies) = tempfile.mkstemp(prefix='gsdcookie') |
+ cmd = [ |
+ 'curl', '-L', |
+ '-b', cookies, '-c', cookies, |
+ '--header', 'Authorization: GoogleLogin auth=' + auth, |
+ ] + argv[1:] |
+ try: |
+ p = subprocess.Popen(cmd) |
+ return p.wait() |
+ finally: |
+ os.remove(cookies) |
+ |
+ |
+def main(argv): |
+ auth = Authenticate() |
+ return DoCurl(auth, argv) |
+ |
+ |
+if __name__ == '__main__': |
+ sys.exit(main(sys.argv)) |