| Index: test_cookie_pipe.py
|
| diff --git a/test_cookie_pipe.py b/test_cookie_pipe.py
|
| deleted file mode 100755
|
| index d3d2e4d575ec8ab9e50ca7e715fbe73d4760fc73..0000000000000000000000000000000000000000
|
| --- a/test_cookie_pipe.py
|
| +++ /dev/null
|
| @@ -1,118 +0,0 @@
|
| -#!/usr/bin/env python
|
| -
|
| -# Copyright (c) 2009 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.
|
| -
|
| -"""Generates and passes authentication credentials to Chromium.
|
| -
|
| -This script can be used to simulate the login manager's process of
|
| -passing authentication credentials to Chromium. Running this script
|
| -will authenticate with Google Accounts with the provided login
|
| -credentials and then write the result to the specified pipe. The
|
| -script will then block until the pipe is read. To launch Chromium,
|
| -use the command:
|
| -
|
| - ./chrome --cookie-pipe=/tmp/cookie_pipe
|
| -
|
| -"""
|
| -
|
| -from optparse import OptionParser
|
| -import getpass
|
| -import os
|
| -import sys
|
| -import urllib
|
| -import urllib2
|
| -
|
| -DEFAULT_COOKIE_PIPE = '/tmp/cookie_pipe'
|
| -GOOGLE_ACCOUNTS_URL = 'https://www.google.com/accounts'
|
| -LOGIN_SOURCE = 'test_harness'
|
| -
|
| -
|
| -class CookieCollectorRedirectHandler(urllib2.HTTPRedirectHandler):
|
| - def __init__(self):
|
| - self.__cookie_headers = []
|
| -
|
| - @property
|
| - def cookie_headers(self):
|
| - return self.__cookie_headers
|
| -
|
| - def http_error_302(self, req, fp, code, msg, headers):
|
| - self.__cookie_headers.extend(fp.info().getallmatchingheaders('Set-Cookie'))
|
| - result = urllib2.HTTPRedirectHandler.http_error_302(self, req, fp,
|
| - code, msg, headers)
|
| - return result
|
| -
|
| -
|
| -def Authenticate(email, password):
|
| - opener = urllib2.build_opener()
|
| - payload = urllib.urlencode({'Email': email,
|
| - 'Passwd': password,
|
| - 'PersistentCookie': 'true',
|
| - 'accountType' : 'HOSTED_OR_GOOGLE',
|
| - 'source' : LOGIN_SOURCE})
|
| - request = urllib2.Request(GOOGLE_ACCOUNTS_URL + '/ClientLogin', payload)
|
| - response = opener.open(request)
|
| - data = response.read().rstrip()
|
| -
|
| - # Convert the SID=xxx\nLSID=yyy\n response into a dict.
|
| - l = [p.split('=') for p in data.split('\n')]
|
| - cookies = dict((i[0], i[1]) for i in l)
|
| -
|
| - payload = urllib.urlencode({'SID': cookies['SID'],
|
| - 'LSID': cookies['LSID'],
|
| - 'source': LOGIN_SOURCE,
|
| - 'service': 'gaia'})
|
| - request = urllib2.Request(GOOGLE_ACCOUNTS_URL + '/IssueAuthToken', payload)
|
| - response = opener.open(request)
|
| - auth_token = response.read().rstrip()
|
| -
|
| - url = '/TokenAuth?continue=http://www.google.com/&source=%s&auth=%s' % \
|
| - (LOGIN_SOURCE, auth_token)
|
| -
|
| - # Install a custom redirect handler here so we can catch all the
|
| - # cookies served as the redirects get processed.
|
| - cookie_collector = CookieCollectorRedirectHandler()
|
| - opener = urllib2.build_opener(cookie_collector)
|
| - request = urllib2.Request(GOOGLE_ACCOUNTS_URL + url)
|
| - response = opener.open(request)
|
| -
|
| - cookie_headers = cookie_collector.cookie_headers
|
| - cookie_headers.extend(response.info().getallmatchingheaders('Set-Cookie'))
|
| - cookies = [s.replace('Set-Cookie: ', '') for s in cookie_headers]
|
| - return cookies
|
| -
|
| -def WriteToPipe(pipe_path, data):
|
| - if os.path.exists(pipe_path):
|
| - os.remove(pipe_path)
|
| - os.mkfifo(pipe_path)
|
| - f = open(pipe_path, 'w')
|
| - f.write(data)
|
| - f.close()
|
| -
|
| -def main():
|
| - usage = "usage: %prog [options]"
|
| - parser = OptionParser(usage)
|
| - parser.add_option('--email', dest='email',
|
| - help='email address used for login')
|
| - parser.add_option('--password', dest='password',
|
| - help='password used for login (will prompt if omitted)')
|
| - parser.add_option('--cookie-pipe', dest='cookiepipe',
|
| - default=DEFAULT_COOKIE_PIPE,
|
| - help='path of cookie pipe [default: %default]')
|
| - (options, args) = parser.parse_args()
|
| -
|
| - if options.email is None:
|
| - parser.error("You must supply an email address.")
|
| -
|
| - if options.password is None:
|
| - options.password = getpass.getpass()
|
| -
|
| - cookies = Authenticate(options.email, options.password)
|
| - data = ''.join(cookies)
|
| - print 'Writing to "%s":' % options.cookiepipe
|
| - print data
|
| - WriteToPipe(options.cookiepipe, data)
|
| -
|
| -if __name__ == '__main__':
|
| - main()
|
|
|