|
Lines 53-58
modrdn = '1'
Link Here
|
| 53 |
ucr = univention.config_registry.ConfigRegistry() |
53 |
ucr = univention.config_registry.ConfigRegistry() |
| 54 |
ucr.load() |
54 |
ucr.load() |
| 55 |
modified_default_names = [] |
55 |
modified_default_names = [] |
|
|
56 |
set_ucr_key__value_list = [] |
| 57 |
unset_ucr_key_list = [] |
| 56 |
|
58 |
|
| 57 |
|
59 |
|
| 58 |
def sidToName(sid): |
60 |
def sidToName(sid): |
|
Lines 65-70
def sidToName(sid):
Link Here
|
| 65 |
|
67 |
|
| 66 |
|
68 |
|
| 67 |
def checkAndSet(new, old): |
69 |
def checkAndSet(new, old): |
|
|
70 |
global set_ucr_key__value_list |
| 71 |
global unset_ucr_key_list |
| 72 |
|
| 68 |
obj = new or old |
73 |
obj = new or old |
| 69 |
if not obj: |
74 |
if not obj: |
| 70 |
return |
75 |
return |
|
Lines 115-136
def checkAndSet(new, old):
Link Here
|
| 115 |
ucr.load() |
120 |
ucr.load() |
| 116 |
ucr_value = ucr.get(unset_ucr_key) |
121 |
ucr_value = ucr.get(unset_ucr_key) |
| 117 |
if ucr_value: |
122 |
if ucr_value: |
| 118 |
ud.debug(ud.LISTENER, ud.PROCESS, "%s: ucr unset %s=%s" % (name, unset_ucr_key, ucr_value)) |
123 |
unset_ucr_key_list.append(unset_ucr_key) |
| 119 |
listener.setuid(0) |
124 |
modified_default_names.append(default_name) |
| 120 |
try: |
125 |
ud.debug(ud.LISTENER, ud.PROCESS, "%s: scheduling ucr unset %s=%s" % (name, unset_ucr_key, ucr_value)) |
| 121 |
univention.config_registry.handler_unset([unset_ucr_key]) |
|
|
| 122 |
return default_name |
| 123 |
finally: |
| 124 |
listener.unsetuid() |
| 125 |
else: |
126 |
else: |
| 126 |
ucr_key_value = "%s/%s=%s" % (ucr_base, default_name_lower, obj_name) |
127 |
ucr_key_value = "%s/%s=%s" % (ucr_base, default_name_lower, obj_name) |
| 127 |
ud.debug(ud.LISTENER, ud.PROCESS, "%s: ucr set %s" % (name, ucr_key_value)) |
128 |
modified_default_names.append(default_name) |
| 128 |
listener.setuid(0) |
129 |
ud.debug(ud.LISTENER, ud.PROCESS, "%s: scheduling ucr set %s" % (name, ucr_key_value)) |
| 129 |
try: |
130 |
set_ucr_key__value_list.append(ucr_key_value) |
| 130 |
univention.config_registry.handler_set([ucr_key_value]) |
|
|
| 131 |
return default_name |
| 132 |
finally: |
| 133 |
listener.unsetuid() |
| 134 |
|
131 |
|
| 135 |
|
132 |
|
| 136 |
def no_relevant_change(new, old): |
133 |
def no_relevant_change(new, old): |
|
Lines 157-164
def no_relevant_change(new, old):
Link Here
|
| 157 |
|
154 |
|
| 158 |
def handler(dn, new, old, command): |
155 |
def handler(dn, new, old, command): |
| 159 |
# type: (str, dict, dict, str) -> None |
156 |
# type: (str, dict, dict, str) -> None |
| 160 |
global modified_default_names |
|
|
| 161 |
|
| 162 |
if ucr.is_false("listener/module/wellknownsidnamemapping", False): |
157 |
if ucr.is_false("listener/module/wellknownsidnamemapping", False): |
| 163 |
ud.debug(ud.LISTENER, ud.INFO, '%s: deactivated by listener/module/wellknownsidnamemapping' % (name,)) |
158 |
ud.debug(ud.LISTENER, ud.INFO, '%s: deactivated by listener/module/wellknownsidnamemapping' % (name,)) |
| 164 |
return |
159 |
return |
|
Lines 209-239
def handler(dn, new, old, command):
Link Here
|
| 209 |
if new: |
204 |
if new: |
| 210 |
if not old: # add |
205 |
if not old: # add |
| 211 |
ud.debug(ud.LISTENER, ud.INFO, "%s: new %r" % (name, new.get("sambaSID"))) |
206 |
ud.debug(ud.LISTENER, ud.INFO, "%s: new %r" % (name, new.get("sambaSID"))) |
| 212 |
changed_default_name = checkAndSet(new, old) |
207 |
checkAndSet(new, old) |
| 213 |
if changed_default_name: |
|
|
| 214 |
modified_default_names.append(changed_default_name) |
| 215 |
|
208 |
|
| 216 |
else: # modify |
209 |
else: # modify |
| 217 |
if no_relevant_change(new, old): |
210 |
if no_relevant_change(new, old): |
| 218 |
return |
211 |
return |
| 219 |
|
212 |
checkAndSet(new, old) |
| 220 |
changed_default_name = checkAndSet(new, old) |
|
|
| 221 |
if changed_default_name: |
| 222 |
modified_default_names.append(changed_default_name) |
| 223 |
|
213 |
|
| 224 |
elif old: # delete |
214 |
elif old: # delete |
| 225 |
ud.debug(ud.LISTENER, ud.INFO, "%s: del %r" % (name, old.get("sambaSID"))) |
215 |
ud.debug(ud.LISTENER, ud.INFO, "%s: del %r" % (name, old.get("sambaSID"))) |
| 226 |
changed_default_name = checkAndSet(new, old) |
216 |
checkAndSet(new, old) |
| 227 |
if changed_default_name: |
|
|
| 228 |
modified_default_names.append(changed_default_name) |
| 229 |
|
217 |
|
| 230 |
|
218 |
|
| 231 |
def postrun(): |
219 |
def postrun(): |
| 232 |
# type: () -> None |
220 |
# type: () -> None |
| 233 |
global modified_default_names |
221 |
global modified_default_names |
|
|
222 |
global set_ucr_key__value_list |
| 223 |
global unset_ucr_key_list |
| 224 |
|
| 234 |
if not modified_default_names: |
225 |
if not modified_default_names: |
| 235 |
return |
226 |
return |
| 236 |
|
227 |
|
|
|
228 |
listener.setuid(0) |
| 229 |
try: |
| 230 |
if unset_ucr_key_list: |
| 231 |
ud.debug(ud.LISTENER, ud.INFO, "%s: Running ucs unset %s" % (name, unset_ucr_key_list)) |
| 232 |
univention.config_registry.handler_unset(unset_ucr_key_list) |
| 233 |
unset_ucr_key_list = [] |
| 234 |
if set_ucr_key__value_list: |
| 235 |
ud.debug(ud.LISTENER, ud.INFO, "%s: Running ucs set %s" % (name, set_ucr_key__value_list)) |
| 236 |
univention.config_registry.handler_set(set_ucr_key__value_list) |
| 237 |
set_ucr_key__value_list = [] |
| 238 |
finally: |
| 239 |
listener.unsetuid() |
| 240 |
|
| 237 |
hook_dir = '/usr/lib/univention-pam/well-known-sid-name-mapping.d' |
241 |
hook_dir = '/usr/lib/univention-pam/well-known-sid-name-mapping.d' |
| 238 |
if not os.path.isdir(hook_dir): |
242 |
if not os.path.isdir(hook_dir): |
| 239 |
return |
243 |
return |