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

Collapse All | Expand All

(-)a/services/univention-s4-connector/conffiles/etc/univention/s4connector/s4/mapping.py (-43 / +29 lines)
 Lines 40-45   import univention.s4connector.s4.dc Link Here 
40
import univention.s4connector.s4.computer
40
import univention.s4connector.s4.computer
41
41
42
@!@
42
@!@
43
43
global_ignore_subtree=['cn=univention,@%@ldap/base@%@','cn=policies,@%@ldap/base@%@',
44
global_ignore_subtree=['cn=univention,@%@ldap/base@%@','cn=policies,@%@ldap/base@%@',
44
			'cn=shares,@%@ldap/base@%@','cn=printers,@%@ldap/base@%@',
45
			'cn=shares,@%@ldap/base@%@','cn=printers,@%@ldap/base@%@',
45
			'cn=networks,@%@ldap/base@%@', 'cn=kerberos,@%@ldap/base@%@',
46
			'cn=networks,@%@ldap/base@%@', 'cn=kerberos,@%@ldap/base@%@',
 Lines 102-113   else: Link Here 
102
			con_search_filter='(&(objectClass=user)(!(objectClass=computer))(userAccountControl:1.2.840.113556.1.4.803:=512))',
103
			con_search_filter='(&(objectClass=user)(!(objectClass=computer))(userAccountControl:1.2.840.113556.1.4.803:=512))',
103
			match_filter='(&(|(&(objectClass=posixAccount)(objectClass=krb5Principal))(objectClass=user))(!(objectClass=univentionHost)))',
104
			match_filter='(&(|(&(objectClass=posixAccount)(objectClass=krb5Principal))(objectClass=user))(!(objectClass=univentionHost)))',
104
@!@
105
@!@
105
ignore_filter = ''
106
from univention.s4connector.s4.mapping import ignore_filter_parts_from_tmpl
106
for user in configRegistry.get('connector/s4/mapping/user/ignorelist', '').split(','):
107
ignore_filter = ignore_filter_parts_from_tmpl('(uid={0!e})(CN={0!e})', 'connector/s4/mapping/user/ignorelist')
107
	if user:
108
		ignore_filter += '(uid=%s)(CN=%s)' % (user, user)
109
if ignore_filter:
108
if ignore_filter:
110
	print "			ignore_filter='(|%s)'," % ignore_filter
109
	print "			ignore_filter='%s'," % ignore_filter
111
@!@
110
@!@
112
			ignore_subtree = global_ignore_subtree,
111
			ignore_subtree = global_ignore_subtree,
113
			
112
			
 Lines 313-325   else: Link Here 
313
			scope='sub',
312
			scope='sub',
314
313
315
@!@
314
@!@
316
ignore_filter = ''
315
from univention.s4connector.s4.mapping import ignore_filter_parts_from_attr
316
ignore_filter = ignore_filter_parts_from_attr('cn', 'connector/s4/mapping/group/ignorelist')
317
if configRegistry.is_false('connector/s4/mapping/group/grouptype', False):
317
if configRegistry.is_false('connector/s4/mapping/group/grouptype', False):
318
	ignore_filter += '(sambaGroupType=5)(groupType=5)'
318
	ignore_filter = '(|{}{})'.format('(sambaGroupType=5)(groupType=5)', ignore_filter)
319
for group in configRegistry.get('connector/s4/mapping/group/ignorelist', '').split(','):
319
if ignore_filter:
320
	if group:
320
	print "			ignore_filter='%s'," % ignore_filter
321
		ignore_filter += '(cn=%s)' % (group)
322
print "			ignore_filter='(|%s)'," % ignore_filter
323
@!@
321
@!@
324
322
325
			ignore_subtree = global_ignore_subtree,
323
			ignore_subtree = global_ignore_subtree,
 Lines 431-442   if group_map: Link Here 
431
			# and this subobject would avoid a deletion of this DC in S4
429
			# and this subobject would avoid a deletion of this DC in S4
432
			con_subtree_delete_objects = [ 'cn=rid set' ],
430
			con_subtree_delete_objects = [ 'cn=rid set' ],
433
@!@
431
@!@
434
ignore_filter = ''
432
from univention.s4connector.s4.mapping import ignore_filter_parts_from_attr
435
for dc in configRegistry.get('connector/s4/mapping/dc/ignorelist', '').split(','):
433
ignore_filter = ignore_filter_parts_from_attr('cn', 'connector/s4/mapping/dc/ignorelist')
436
	if dc:
437
		ignore_filter += '(cn=%s)' % (dc)
438
if ignore_filter:
434
if ignore_filter:
439
	print "			ignore_filter='(|%s)'," % ignore_filter
435
	print "			ignore_filter='%s'," % ignore_filter
440
@!@
436
@!@
441
	
437
	
442
			@!@
438
			@!@
 Lines 533-544   else: Link Here 
533
529
534
			ignore_subtree = global_ignore_subtree,
530
			ignore_subtree = global_ignore_subtree,
535
@!@
531
@!@
536
ignore_filter = ''
532
from univention.s4connector.s4.mapping import ignore_filter_parts_from_attr
537
for computer in configRegistry.get('connector/s4/mapping/windowscomputer/ignorelist', '').split(','):
533
ignore_filter = ignore_filter_parts_from_attr('cn', 'connector/s4/mapping/windowscomputer/ignorelist')
538
	if computer:
539
		ignore_filter += '(cn=%s)' % (computer)
540
if ignore_filter:
534
if ignore_filter:
541
	print "			ignore_filter='(|%s)'," % ignore_filter
535
	print "			ignore_filter='%s'," % ignore_filter
542
@!@
536
@!@
543
537
544
			con_create_objectclass=['top', 'computer' ],
538
			con_create_objectclass=['top', 'computer' ],
 Lines 653-664   if ignore_filter: Link Here 
653
647
654
print dns_section
648
print dns_section
655
649
650
from univention.s4connector.s4.mapping import ignore_filter_parts_from_attr
656
651
657
if configRegistry.is_true('connector/s4/mapping/gpo', True):
652
if configRegistry.is_true('connector/s4/mapping/gpo', True):
658
	ignore_filter = ''
653
	ignore_filter = ignore_filter_parts_from_attr('cn', 'connector/s4/mapping/gpo/ignorelist')
659
	for gpo in configRegistry.get('connector/s4/mapping/gpo/ignorelist', '').split(','):
660
		if gpo:
661
			ignore_filter += '(cn=%s)' % (gpo)
662
	if configRegistry.get('connector/s4/mapping/ou/syncmode'):
654
	if configRegistry.get('connector/s4/mapping/ou/syncmode'):
663
		sync_mode_ou=configRegistry.get('connector/s4/mapping/ou/syncmode')
655
		sync_mode_ou=configRegistry.get('connector/s4/mapping/ou/syncmode')
664
	else:
656
	else:
 Lines 772-782   if configRegistry.is_true('connector/s4/mapping/gpo', True): Link Here 
772
'''
764
'''
773
	print section
765
	print section
774
766
767
from univention.s4connector.s4.mapping import ignore_filter_parts_from_attr
768
775
if configRegistry.is_true('connector/s4/mapping/wmifilter', False):
769
if configRegistry.is_true('connector/s4/mapping/wmifilter', False):
776
	ignore_filter = ''
770
	ignore_filter = ignore_filter_parts_from_attr('cn', 'connector/s4/mapping/wmifilter/ignorelist')
777
	for wmifilter in configRegistry.get('connector/s4/mapping/wmifilter/ignorelist', '').split(','):
778
		if wmifilter:
779
			ignore_filter += '(cn=%s)' % (wmifilter)
780
	if configRegistry.get('connector/s4/mapping/ou/syncmode'):
771
	if configRegistry.get('connector/s4/mapping/ou/syncmode'):
781
		sync_mode_ou=configRegistry.get('connector/s4/mapping/ou/syncmode')
772
		sync_mode_ou=configRegistry.get('connector/s4/mapping/ou/syncmode')
782
	else:
773
	else:
 Lines 901-911   if configRegistry.is_true('connector/s4/mapping/wmifilter', False): Link Here 
901
		),
892
		),
902
''' % {'ignore_filter': ignore_filter, 'sync_mode_ou': sync_mode_ou}
893
''' % {'ignore_filter': ignore_filter, 'sync_mode_ou': sync_mode_ou}
903
894
895
from univention.s4connector.s4.mapping import ignore_filter_parts_from_attr
896
904
if configRegistry.is_true('connector/s4/mapping/msprintconnectionpolicy', False):
897
if configRegistry.is_true('connector/s4/mapping/msprintconnectionpolicy', False):
905
	ignore_filter = ''
898
	ignore_filter = ignore_filter_parts_from_attr('cn', 'connector/s4/mapping/msprintconnectionpolicy/ignorelist')
906
	for cfilter in configRegistry.get('connector/s4/mapping/msprintconnectionpolicy/ignorelist', '').split(','):
907
		if cfilter:
908
			ignore_filter += '(cn=%s)' % (cfilter)
909
	if configRegistry.get('connector/s4/mapping/ou/syncmode'):
899
	if configRegistry.get('connector/s4/mapping/ou/syncmode'):
910
		sync_mode_ou=configRegistry.get('connector/s4/mapping/ou/syncmode')
900
		sync_mode_ou=configRegistry.get('connector/s4/mapping/ou/syncmode')
911
	else:
901
	else:
 Lines 984-995   else: Link Here 
984
			con_search_filter='(&(|(objectClass=container)(objectClass=builtinDomain))(!(objectClass=groupPolicyContainer)))', # builtinDomain is cn=builtin (with group cn=Administrators)
974
			con_search_filter='(&(|(objectClass=container)(objectClass=builtinDomain))(!(objectClass=groupPolicyContainer)))', # builtinDomain is cn=builtin (with group cn=Administrators)
985
975
986
@!@
976
@!@
987
ignore_filter = ''
977
from univention.s4connector.s4.mapping import ignore_filter_parts_from_attr
988
for cn in configRegistry.get('connector/s4/mapping/container/ignorelist', 'mail,kerberos,MicrosoftDNS').split(','):
978
ignore_filter = ignore_filter_parts_from_attr('cn', 'connector/s4/mapping/container/ignorelist', 'mail,kerberos,MicrosoftDNS')
989
	if cn:
990
		ignore_filter += '(cn=%s)' % (cn)
991
if ignore_filter:
979
if ignore_filter:
992
	print "			ignore_filter='(|%s)'," % ignore_filter
980
	print "			ignore_filter='%s'," % ignore_filter
993
@!@
981
@!@
994
982
995
			ignore_subtree = global_ignore_subtree,
983
			ignore_subtree = global_ignore_subtree,
 Lines 1041-1052   else: Link Here 
1041
			con_search_filter='objectClass=organizationalUnit',
1029
			con_search_filter='objectClass=organizationalUnit',
1042
1030
1043
@!@
1031
@!@
1044
ignore_filter = ''
1032
from univention.s4connector.s4.mapping import ignore_filter_parts_from_attr
1045
for ou in configRegistry.get('connector/s4/mapping/ou/ignorelist', '').split(','):
1033
ignore_filter = ignore_filter_parts_from_attr('ou', 'connector/s4/mapping/ou/ignorelist')
1046
	if ou:
1047
		ignore_filter += '(ou=%s)' % (ou)
1048
if ignore_filter:
1034
if ignore_filter:
1049
	print "			ignore_filter='(|%s)'," % ignore_filter
1035
	print "			ignore_filter='%s'," % ignore_filter
1050
@!@
1036
@!@
1051
1037
1052
			ignore_subtree = global_ignore_subtree,
1038
			ignore_subtree = global_ignore_subtree,
(-)a/services/univention-s4-connector/modules/univention/s4connector/s4/mapping.py (-1 / +37 lines)
 Lines 36-45   import univention.config_registry as ucr Link Here 
36
import univention.debug2 as ud
36
import univention.debug2 as ud
37
import univention.s4connector.s4
37
import univention.s4connector.s4
38
38
39
from univention.s4connector.s4 import format_escaped
40
39
configRegistry = ucr.ConfigRegistry()
41
configRegistry = ucr.ConfigRegistry()
40
configRegistry.load()
42
configRegistry.load()
41
43
42
44
45
def ignore_filter_parts_from_tmpl(template, ucr_key, default=''):
46
	"""
47
	Construct an `ignore_filter` from a `ucr_key`
48
	(`connector/s4/mapping/*/ignorelist`, a comma delimited list of values), as
49
	specified by `template` while correctly escaping the filter-expression.
50
51
	`template` must be formatted as required by `format_escaped`.
52
53
	>>> ignore_filter_parts_from_tmpl('(cn={0!e})',
54
	... 'connector/s4/mapping/nonexistend/ignorelist',
55
	... 'one,two,three')
56
	'(|(cn=one)(cn=two)(cn=three))'
57
	"""
58
	variables = [v for v in configRegistry.get(ucr_key, default).split(',') if v]
59
	filter_parts = [format_escaped(template, v) for v in variables]
60
	if filter_parts:
61
		return '(|{})'.format(''.join(filter_parts))
62
	return ''
63
64
65
def ignore_filter_parts_from_attr(attribute, ucr_key, default=''):
66
	"""
67
	Convenience-wrapper arround `ignore_filter_from_tmpl()`.
68
69
	This expects a single `attribute` instead of a `template` argument.
70
71
	>>> ignore_filter_parts_from_attr('cn',
72
	... 'connector/s4/mapping/nonexistend/ignorelist',
73
	... 'one,two,three')
74
	'(|(cn=one)(cn=two)(cn=three))'
75
	"""
76
	template = '({}={{0!e}})'.format(attribute)
77
	return ignore_filter_parts_from_tmpl(template, ucr_key, default)
78
79
43
def ucs2s4_sid(s4connector, key, object):
80
def ucs2s4_sid(s4connector, key, object):
44
	_d = ud.function('mapping.ucs2s4_sid -- not implemented')
81
	_d = ud.function('mapping.ucs2s4_sid -- not implemented')
45
82
46
- 

Return to bug 32086