From 7eff4cc07db9518b59e8fc12fe999d8c6015d416 Mon Sep 17 00:00:00 2001 From: Josue Kouka Date: Wed, 20 Jan 2016 01:14:34 +0100 Subject: [PATCH] build cookies from page.cookies (#9702) --- mandayejs/do_login.js | 13 +------------ mandayejs/mandaye/utils.py | 22 ++++++++++++++-------- mandayejs/mandaye/views.py | 4 ++-- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/mandayejs/do_login.js b/mandayejs/do_login.js index 3fd4b26..e0f3c60 100644 --- a/mandayejs/do_login.js +++ b/mandayejs/do_login.js @@ -20,17 +20,6 @@ var system = require('system'); var input = JSON.parse(system.stdin.read(2000)); // no .readAll()... -headers_list = [] - -page.onResourceReceived = function(response){ - for (var i=0; i < response.headers.length; i++){ - var c_header = response.headers[i]; - if (c_header['name'] === 'Set-Cookie'){ - headers_list.push(c_header); - } - } -} - page.open(input.address, function() { page.onLoadFinished = function() { if (page.injectJs(input.auth_checker)){ @@ -44,7 +33,7 @@ page.open(input.address, function() { phantom.exit(); } page.render('login.png'); - console.log(JSON.stringify({'result': 'ok', 'cookies': page.cookies, 'headers': headers_list, 'url': page.frameUrl})); + console.log(JSON.stringify({'result': 'ok', 'cookies': page.cookies, 'url': page.frameUrl})); phantom.exit(); } page.evaluate(function(input) { diff --git a/mandayejs/mandaye/utils.py b/mandayejs/mandaye/utils.py index 25e5aa2..e21df9c 100644 --- a/mandayejs/mandaye/utils.py +++ b/mandayejs/mandaye/utils.py @@ -35,14 +35,20 @@ def exec_phantom(data): result = json.loads(stdout) return result -def cookie_builder(headers): - """Build Cookies from list of headers - """ - cookie = SimpleCookie() - for header in headers: - cookie.load('; '.join(header.values()).encode('ascii')) - - return cookie +def cookie_builder(cookies): + ck = SimpleCookie() + for cookie in cookies: + raw_cookie = ';'.join([ + '{}={}'.format(k,v) for k,v in cookie.items() + if k not in ('name','value') + ]) + raw_cookie = '{}={};{}'.format( + cookie['name'], + cookie['value'], + raw_cookie + ) + ck.load(raw_cookie) + return ck def get_password_field(): """Return name of the password field diff --git a/mandayejs/mandaye/views.py b/mandayejs/mandaye/views.py index 656995a..a755b4f 100644 --- a/mandayejs/mandaye/views.py +++ b/mandayejs/mandaye/views.py @@ -167,7 +167,7 @@ def post_login_do(request, *args, **kwargs): window.top.location = "{{url}}";') context = RequestContext(request, {'url': url}) response = HttpResponse(template.render(context)) - if result.get('headers',None): - response.cookies = cookie_builder(result.get('headers')) + if result.get('cookies',None): + response.cookies = cookie_builder(result.get('cookies')) return response -- 2.7.0.rc3