Projet

Général

Profil

0001-build-cookies-from-page.cookies-9702.patch

Josué Kouka, 20 janvier 2016 09:32

Télécharger (3,65 ko)

Voir les différences:

Subject: [PATCH] build cookies from page.cookies (#9702)

 mandayejs/do_login.js      | 35 ++++++++++++-----------------------
 mandayejs/mandaye/utils.py | 22 ++++++++++++++--------
 mandayejs/mandaye/views.py |  4 ++--
 3 files changed, 28 insertions(+), 33 deletions(-)
mandayejs/do_login.js
20 20

  
21 21
var input = JSON.parse(system.stdin.read(2000)); // no .readAll()...
22 22

  
23
headers_list = []
24

  
25
page.onResourceReceived = function(response){
26
    for (var i=0; i < response.headers.length; i++){
27
        var c_header = response.headers[i];
28
        if (c_header['name'] === 'Set-Cookie'){
29
            headers_list.push(c_header);
30
        }
31
    }
32
}
33

  
34 23
page.open(input.address, function() {
35 24
  page.onLoadFinished = function() {
36
     if (page.injectJs(input.auth_checker)){
37
         input.auth_success = page.evaluate(function(){
38
             return auth_success();
39
         });
40
     }
25
      if (page.injectJs(input.auth_checker)){
26
          input.auth_success = page.evaluate(function(){
27
              return auth_success();
28
          });
29
      }
41 30
    
42
    if (!input.auth_success){
43
        console.log(JSON.stringify({'result': 'failure', 'reason': 'authentication failed'}));
44
        phantom.exit();
45
    }
46
    page.render('login.png');
47
    console.log(JSON.stringify({'result': 'ok', 'cookies': page.cookies, 'headers': headers_list, 'url': page.frameUrl}));
48
    phantom.exit();
31
      if (!input.auth_success){
32
          console.log(JSON.stringify({'result': 'failure', 'reason': 'authentication failed'}));
33
          phantom.exit();
34
      }
35
      page.render('login.png');
36
      console.log(JSON.stringify({'result': 'ok', 'cookies': page.cookies, 'url': page.frameUrl}));
37
      phantom.exit();
49 38
  }
50 39
  page.evaluate(function(input) {
51 40
      var locators = input.locators;
mandayejs/mandaye/utils.py
35 35
    result = json.loads(stdout)
36 36
    return result
37 37

  
38
def cookie_builder(headers):
39
    """Build Cookies from list of headers
40
    """
41
    cookie = SimpleCookie()
42
    for header in headers:
43
        cookie.load('; '.join(header.values()).encode('ascii'))
44

  
45
    return cookie
38
def cookie_builder(cookies):
39
    ck = SimpleCookie()
40
    for cookie in cookies:
41
        raw_cookie = ';'.join([
42
            '{}={}'.format(k,v) for k,v in cookie.items() 
43
            if k not in ('name','value')
44
        ])
45
        raw_cookie = '{}={};{}'.format(
46
            cookie['name'],
47
            cookie['value'],
48
            raw_cookie
49
        )
50
        ck.load(raw_cookie)
51
    return ck
46 52

  
47 53
def get_password_field():
48 54
    """Return name of the password field
mandayejs/mandaye/views.py
167 167
                window.top.location = "{{url}}";</script>')
168 168
    context = RequestContext(request, {'url': url})
169 169
    response = HttpResponse(template.render(context))
170
    if result.get('headers',None):
171
        response.cookies = cookie_builder(result.get('headers'))
170
    if result.get('cookies',None):
171
        response.cookies = cookie_builder(result.get('cookies'))
172 172

  
173 173
    return response
174
-