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

Collapse All | Expand All

(-)a/branches/ucs-4.1/ucs-4.1-3/management/univention-directory-logger/debian/changelog (+1 lines)
 Lines 2-7   univention-directory-logger (7.0.1-2) unstable; urgency=low Link Here 
2
2
3
  * Bug #25404: Fix old LDAP parsing
3
  * Bug #25404: Fix old LDAP parsing
4
  * Bug #34739: Switch md5 implementation
4
  * Bug #34739: Switch md5 implementation
5
  * Bug #34420: Fix base64 encoding
5
6
6
 -- Philipp Hahn <hahn@univention.de>  Mon, 10 Oct 2016 18:26:27 +0200
7
 -- Philipp Hahn <hahn@univention.de>  Mon, 10 Oct 2016 18:26:27 +0200
7
8
(-)a/branches/ucs-4.1/ucs-4.1-3/management/univention-directory-logger/directory_logger.py (-16 / +9 lines)
 Lines 32-43    Link Here 
32
32
33
__package__ = ''  # workaround for PEP 366
33
__package__ = ''  # workaround for PEP 366
34
import listener
34
import listener
35
import string
36
import time
35
import time
37
import syslog
36
import syslog
38
import re
37
import re
39
from hashlib import md5 as digest
38
from hashlib import md5 as digest
40
import base64
41
import grp
39
import grp
42
import subprocess
40
import subprocess
43
import os
41
import os
 Lines 68-89   gidNumber = 0 # fallback Link Here 
68
filemode = '0640'
66
filemode = '0640'
69
cleanupDellog = True  # remove missed dellog entries (after reporting about them)
67
cleanupDellog = True  # remove missed dellog entries (after reporting about them)
70
68
71
69
SAFE_STRING_PATTERN = '(^(\000|\n|\r| |:|<)|[\000\n\r\200-\377]+|[ ]+$)'
72
def needsConversion(char):
70
safe_string_re = re.compile(SAFE_STRING_PATTERN)
73
	return char > '\x7f'
74
75
76
def base64Filter(str):
77
	if [char for char in str if needsConversion(char)]:
78
		str = string.rstrip(base64.encodestring(str))
79
	return str
80
71
81
72
82
def ldapEntry2string(entry):
73
def ldapEntry2string(entry):
83
	str = ''
74
	return ''.join(
84
	for (key, valuelist) in entry.iteritems():
75
		'%s:: %s\n' % (key, value.encode('base64'))
85
		str += ''.join(['%s: %s\n' % (key, base64Filter(value)) for value in valuelist])
76
		if safe_string_re.search(value) else
86
	return str
77
		'%s: %s\n' % (key, value)
78
		for key, values in entry.iteritems()
79
		for value in values
80
	)
87
81
88
82
89
def ldapTime2string(timestamp):
83
def ldapTime2string(timestamp):
90
- 

Return to bug 34420