|
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 |
- |
|
|