LILiK login and user managment web interface
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

50 lines
1.8 KiB

def rremove(origin, match):
if origin.endswith(match):
return origin[:-len(match)]
return origin
def ldap_path(entry, *arg):
if arg:
return "%s,%s"%(ldap_path(entry), ldap_path(arg))
else:
if type(entry) == tuple:
return ldap_path(*entry)
if entry.find(',') != -1:
print(entry)
raise Exception('Warning: ldap query injection detected')
return entry
def clean_user_name(user_name):
return clean_value(rremove(user_name, '@lilik.it'))
def clean_value(value):
'''
TODO:
search_filter: the filter of the search request. It must conform to the LDAP
filter syntax specified in RFC4515. If the search filter contains the
following characters you must use the relevant escape ASCII sequence, as per
RFC4515 (section 3):
‘*’ -> ‘\\2A’, ‘(‘ -> ‘\\28’, ‘)’ -> ‘\\29’, ‘\’ -> ‘\\5C’, chr(0) -> ‘\\00’.
'''
return value
class DictDiffer(object):
"""
Calculate the difference between two dictionaries as:
(1) items added
(2) items removed
(3) keys same in both but changed values
(4) keys same in both and unchanged values
"""
def __init__(self, current_dict, past_dict):
self.current_dict, self.past_dict = current_dict, past_dict
self.set_current, self.set_past = set(current_dict.keys()), set(past_dict.keys())
self.intersect = self.set_current.intersection(self.set_past)
def added(self):
return self.set_current - self.intersect
def removed(self):
return self.set_past - self.intersect
def changed(self):
return set(o for o in self.intersect if self.past_dict[o] != self.current_dict[o])
def unchanged(self):
return set(o for o in self.intersect if self.past_dict[o] == self.current_dict[o])