|
Lines 135-141
class SessionClient(object):
Link Here
|
| 135 |
CORE.warn('SessionClient(0x%x): connection to UMC server failed' % (id(self),)) |
135 |
CORE.warn('SessionClient(0x%x): connection to UMC server failed' % (id(self),)) |
| 136 |
raise NoSocketError('Connection failed') |
136 |
raise NoSocketError('Connection failed') |
| 137 |
self._auth_response = None |
137 |
self._auth_response = None |
| 138 |
self._auth_response_queue = None |
|
|
| 139 |
self._requestid2response_queue = {} |
138 |
self._requestid2response_queue = {} |
| 140 |
self._lock = threading.Lock() |
139 |
self._lock = threading.Lock() |
| 141 |
self.ip = ip |
140 |
self.ip = ip |
|
Lines 143-162
class SessionClient(object):
Link Here
|
| 143 |
def _authenticated(self, success, response): |
142 |
def _authenticated(self, success, response): |
| 144 |
"""Callback function for 'authenticated' from UMCP-Server.""" |
143 |
"""Callback function for 'authenticated' from UMCP-Server.""" |
| 145 |
CORE.process('SessionClient(0x%x): _authenticated: success=%s status=%s message=%s result=%r' % (id(self), success, response.status, response.message, response.result)) |
144 |
CORE.process('SessionClient(0x%x): _authenticated: success=%s status=%s message=%s result=%r' % (id(self), success, response.status, response.message, response.result)) |
| 146 |
self._auth_response = self._auth_response_in |
145 |
self._auth_response = response |
| 147 |
self._auth_response.status = response.status |
146 |
self._response(response) |
| 148 |
self._auth_response.result = response.result |
|
|
| 149 |
self._auth_response.message = response.message |
| 150 |
self._auth_response_queue.put(self._auth_response) |
| 151 |
# release queue object |
| 152 |
self._auth_response_queue = None |
| 153 |
|
147 |
|
| 154 |
def authenticate_user(self, request, response_queue): |
148 |
def authenticate_user(self, request, response_queue): |
| 155 |
"""Send authentication request to UMC server.""" |
149 |
"""Send authentication request to UMC server.""" |
| 156 |
CORE.info('SessionClient(0x%x): authenticate_user: sending authentication request for user %r' % (id(self), request.body.get('username'))) |
150 |
CORE.info('SessionClient(0x%x): authenticate_user: sending authentication request for user %r' % (id(self), request.body.get('username'))) |
| 157 |
self._auth_response_in = Response(request) |
151 |
self.send_request(request, response_queue) |
| 158 |
self._auth_response_queue = response_queue |
|
|
| 159 |
self.client.authenticate(request) |
| 160 |
|
152 |
|
| 161 |
def _response(self, response): |
153 |
def _response(self, response): |
| 162 |
"""Queue response from UMC server.""" |
154 |
"""Queue response from UMC server.""" |
|
Lines 182-188
class SessionClient(object):
Link Here
|
| 182 |
finally: |
174 |
finally: |
| 183 |
self._lock.release() |
175 |
self._lock.release() |
| 184 |
try: |
176 |
try: |
| 185 |
self.client.request(request) |
177 |
if request.command == 'AUTH': |
|
|
178 |
self.client.authenticate(request) |
| 179 |
else: |
| 180 |
self.client.request(request) |
| 186 |
except IOError: |
181 |
except IOError: |
| 187 |
CORE.error(traceback.format_exc()) |
182 |
CORE.error(traceback.format_exc()) |
| 188 |
self.client.disconnect() |
183 |
self.client.disconnect() |
|
Lines 196-211
class SessionClient(object):
Link Here
|
| 196 |
' * service univention-management-console-web-server restart', |
191 |
' * service univention-management-console-web-server restart', |
| 197 |
'Otherwise please contact an administrator or try again later.' |
192 |
'Otherwise please contact an administrator or try again later.' |
| 198 |
)) |
193 |
)) |
| 199 |
if self._auth_response_queue is not None: |
|
|
| 200 |
self._auth_response.status = SERVICE_UNAVAILABLE |
| 201 |
self._auth_response.message = message |
| 202 |
self._auth_response_queue.put(self._auth_response) |
| 203 |
self._auth_response_queue = None |
| 204 |
for id, (queue, request) in self._requestid2response_queue.items(): |
194 |
for id, (queue, request) in self._requestid2response_queue.items(): |
| 205 |
self._requestid2response_queue.pop(id) |
195 |
self._requestid2response_queue.pop(id) |
| 206 |
response = Response(request) |
196 |
response = Response(request) |
| 207 |
response.status = SERVICE_UNAVAILABLE |
197 |
response.status = SERVICE_UNAVAILABLE |
| 208 |
response.message = message |
198 |
response.message = message |
|
|
199 |
if request.command == 'AUTH': |
| 200 |
self._auth_response = response |
| 209 |
queue.put(response) |
201 |
queue.put(response) |
| 210 |
|
202 |
|
| 211 |
def cleanup_request(self, request): |
203 |
def cleanup_request(self, request): |