View | Details | Raw Unified | Return to bug 47106
Collapse All | Expand All

(-)a/management/univention-management-console/univention-management-console-web-server (-17 / +9 lines)
 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):

Return to bug 47106