View | Details | Raw Unified | Return to bug 46790 | Differences between
and this patch

Collapse All | Expand All

(-)a/base/univention-system-activation/src/wsgi.py (-4 / +11 lines)
 Lines 70-75   def clean_license_output(out): Link Here 
70
70
71
71
72
def application(environ, start_response):
72
def application(environ, start_response):
73
74
	class LdapLicenceFetchError(Exception):
75
		pass
76
73
	def _error(message, trace=None):
77
	def _error(message, trace=None):
74
		return {
78
		return {
75
			'status': 500,
79
			'status': 500,
 Lines 92-104   def application(environ, start_response): Link Here 
92
96
93
	# output the license upon GET request
97
	# output the license upon GET request
94
	if environ.get('REQUEST_METHOD') == 'GET':
98
	if environ.get('REQUEST_METHOD') == 'GET':
99
		cmd = ['usr/bin/sudo', '/usr/bin/univention-ldapsearch', '-LLL', 'objectClass=univentionLicense']
100
		proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
95
		try:
101
		try:
96
			out = subprocess.check_output(['/usr/bin/sudo', '/usr/bin/univention-ldapsearch', '-LLL', 'objectClass=univentionLicense'])
102
			out, err = proc.communicate()
103
			if proc.returncode:
104
				raise LdapLicenceFetchError('cmd: {}\nreturn code: {}\nstdout: {}\nstderr: {}'.format(cmd, proc.returncode, out, err))
97
			out = clean_license_output(out)
105
			out = clean_license_output(out)
98
			return _finish(data=out)
106
			return _finish(data=out)
99
		except subprocess.CalledProcessError as exc:
107
		except LdapLicenceFetchError as exc:
100
			_log('Failed to read license data from LDAP:\n%s' % exc)
108
			return _finish('500 Internal Server Error', data=_error('Could not fetch licence from ldap', traceback.format_exc()))
101
			return _finish('500 Internal Server Error', _error('Failed to read license data from LDAP:\n%s' % exc))
102
		except Exception as exc:
109
		except Exception as exc:
103
			return _finish('500 Internal Server Error', data=_error(str(exc), traceback.format_exc()))
110
			return _finish('500 Internal Server Error', data=_error(str(exc), traceback.format_exc()))
104
111

Return to bug 46790