configurationengine/source/cone/storage/authenticate.py
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
permissions -rw-r--r--
ConE 1.2.11 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     1
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     3
# All rights reserved.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     4
# This component and the accompanying materials are made available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
# which accompanies this distribution, and is available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     8
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     9
# Initial Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    12
# Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    13
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    14
# Description:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    15
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    16
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    17
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
import getpass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
import urllib, urllib2
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
import urlparse
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
from HTMLParser import HTMLParser
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
import sys
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
import os
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
import logging
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
import re
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
class SSOHTMLParser(HTMLParser):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
    Simple html parser which understand what is needed to show the current
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
    version of the SSO login page. End parsing at <\html>, which is in
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
    current version of login page inside <noscript> before other stuff on page.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
    Asks form inputs of types text and password from the user.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
    The data is saved in varables inside class
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
    def __init__(self, *argv, **kwargs):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    41
        self.username_func = kwargs.pop('username_func',None)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    42
        self.password_func = kwargs.pop('password_func',None)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
        HTMLParser.__init__(self, *argv, **kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
        self.html_end = False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
        self.httpdata = {}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
        self.input_requested = False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
        self.input_entered = False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
        self.method = ''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
        self.action = ''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
    def handle_starttag(self, tag, attrs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
        attrs = dict(attrs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
        if self.html_end:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
            return
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
        if tag == 'br':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
            print
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
        elif tag == 'form':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
            self.action = attrs.get('action')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
            self.method = attrs.get('method')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
        elif tag == 'input':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
            inputtype = attrs.get('type', 'text')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
            if inputtype == 'hidden':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
                # Should the username be also overridable
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
                self.httpdata[attrs.get('name')] = attrs.get('value')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    65
            if inputtype == 'password':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    66
                self.input_requested = True
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    67
                data = self.password_func()
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
                if data:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
                    self.input_entered = True
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
                self.httpdata[attrs.get('name')] = data
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
            if inputtype == 'text':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
                self.input_requested = True
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    73
                data = self.username_func()
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
                if data:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
                    self.input_entered = True
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
                self.httpdata[attrs.get('name')] = data
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
            if inputtype == 'submit':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
                self.httpdata['submit'] = attrs.get('value')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
    def handle_endtag(self, tag):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
        if self.html_end:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
            return
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
        if tag == 'tr':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
            print
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
        if tag == 'title':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
            print
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
        if tag == 'html':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
            self.html_end = True
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
    def handle_data(self, data):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
        if self.html_end:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
            return
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
        if data.strip():
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
            print data.strip(),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
class CarbonAuthHandler(urllib2.AbstractHTTPHandler):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
    handler_order = 600
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    98
    def __init__(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    99
        urllib2.AbstractHTTPHandler.__init__(self)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   100
        self.auth_count = 0
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   101
        self.auth_max = 5
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   102
        self.username = ""
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   103
        self.password = ""
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   104
        self.username_func = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   105
        self.password_func = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   106
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
    
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   108
    def add_username_func(self, username_func):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   109
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   110
        Add password getting function
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   111
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   112
        self.username_func = username_func
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   113
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   114
    def add_password_func(self, password_func):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   115
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   116
        Add password getting function
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
        """
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   118
        self.password_func = password_func
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   119
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   120
    def get_username(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   121
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   122
        Add password getting function
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   123
        """
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   124
        if self.auth_count == 0  and self.username_func:            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   125
            return self.username_func()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   126
        else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   127
            self.username = raw_input("Username: ")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   128
            return self.username 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   129
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   130
    def get_password(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   131
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   132
        Add password getting function
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   133
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   134
        if self.auth_count == 0 and self.password_func:            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   135
            return self.password_func()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   136
        else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   137
            self.password = getpass.getpass()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   138
            return self.password
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   139
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
    def https_response(self, request, response):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
        Catches responses which are from sso login page and asks for the
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
        information from the command line and posts it.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
        After posting urllib2 takes care of following redirects back to
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
        original page.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
        if (re.match('login.*\.europe\.nokia\.com', request.get_host())):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   148
            if self.auth_count > self.auth_max:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   149
                print "Authentication failed!"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   150
                return response
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   151
            sso_parser = SSOHTMLParser(username_func=self.get_username, password_func=self.get_password)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
            sso_parser.feed(response.read())
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   153
            self.auth_count += 1
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   154
            
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
            # !sso_parser.input_requested when we have posted the form and
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
            # are reading the redirect back. We don't want to handle that
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
            if sso_parser.input_requested:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
                if not sso_parser.input_entered:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
                    # By entering empty username and password you get
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
                    # out of infinite invalid login loop
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
                    # Only bad thing that the SSO login page doesen't
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
                    # tell you that login failed, only shows the same text
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
                    # again
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
                    raise urllib2.URLError("No login data entered")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
                newurl = urlparse.urljoin(request.get_full_url(), sso_parser.action)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
                ssoreq = urllib2.Request(newurl,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
                                         urllib.urlencode(sso_parser.httpdata),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
                                         origin_req_host=request.get_origin_req_host(),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
                                         unverifiable=True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
                                         )
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
                return self.parent.open(ssoreq)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
        return response
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
    def http_response(self, request, response):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
        Catches responses which are from normal carbon authenticatoin page and uses set password if found
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
        or asks for the information from the command line and posts it.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
        After posting urllib2 takes care of following redirects back to
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
        original page.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
        """    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
        if response.code == 200 and (re.match('.*/extauth/login/?.*', request.get_full_url())):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   182
            if self.auth_count > self.auth_max:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   183
                raise urllib2.HTTPError("Authentication failed!")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   184
            
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
            loginreq = urllib2.Request(request.get_full_url(),
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   186
                                     urllib.urlencode({ 'username' : self.get_username(), 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   187
                                                        'password' : self.get_password(),
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
                                                        'submit' : 'login'}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
                                                      ),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   190
                                     origin_req_host=request.get_origin_req_host(),
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   191
                                     unverifiable=True,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
                                     )
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   193
            self.auth_count += 1
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
            return self.parent.open(loginreq)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
        else:            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
            return response