View | Details | Raw Unified | Return to bug 28059
Collapse All | Expand All

(-)src/univention/management/console/acl.py (-37 / +9 lines)
 Lines 135-184    Link Here 
135
		if self.__ldap_base is None:
135
		if self.__ldap_base is None:
136
			self.__ldap_base = ucr.get( 'ldap/base', None )
136
			self.__ldap_base = ucr.get( 'ldap/base', None )
137
137
138
		servers = []
139
		for host in hostlist:
138
		for host in hostlist:
140
			if host.startswith( 'systemrole:' ):
139
			if host.startswith( 'systemrole:' ):
141
				host = host[ len( 'systemrole:' ) : ]
140
				role = host[ len( 'systemrole:' ) : ]
142
				if host == 'domaincontroller_master':
141
				if role.lower() == ucr.get('system/role').lower():
143
					servers = dc_master.lookup( None, self.lo, None, base=self.__ldap_base )
142
					hosts.append(ucr['hostname'])
144
				elif host == 'domaincontroller_backup':
145
					servers = dc_backup.lookup( None, self.lo, None, base=self.__ldap_base )
146
				elif host == 'domaincontroller_slave':
147
					servers = dc_slave.lookup( None, self.lo, None, base=self.__ldap_base )
148
				elif host == 'memberserver':
149
					servers = memberserver.lookup( None, self.lo, None, base=self.__ldap_base )
150
151
				hosts.extend( filter( lambda server: 'name' in server, servers ) )
152
153
			elif host.startswith( 'service:' ):
143
			elif host.startswith( 'service:' ):
154
				host = host[ len( 'service:' ) : ]
144
				service = host[ len( 'service:' ) : ]
155
				for role in ACLs._systemroles:
145
				for role in ACLs._systemroles:
156
					servers += role.lookup( None, self.lo, 'univentionService=%s' % host, base=self.__ldap_base )
146
					servers = role.lookup( None, self.lo, 'univentionService=%s' % service, base=self.__ldap_base )
157
147
					for server in servers:
158
				hosts.extend( filter( lambda server: 'name' in server, servers ) )
148
						hosts.append(server.get('name'))
159
160
			elif host == '*':
149
			elif host == '*':
161
				if not self.__ldap_base in self.__cache:
150
				hosts.append(ucr['hostname'])
162
					self.__cache[ self.__ldap_base ] = [ ]
163
151
164
					for role in ACLs._systemroles:
152
		return hosts
165
						servers += role.lookup( None, self.lo, None, base=self.__ldap_base )
166
153
167
						new_hosts = filter( lambda server: 'name' in server, servers )
168
169
					hosts.extend( new_hosts )
170
					self.__cache[ self.__ldap_base ].extend( new_hosts )
171
				else:
172
					hosts += self.__cache[ self.__ldap_base ]
173
174
			else:
175
				for role in ACLs._systemroles:
176
					servers += role.lookup( None, self.lo, 'cn=%s' % host, base=self.__ldap_base )
177
178
				hosts.extend( filter( lambda server: 'name' in server, servers ) )
179
180
		return map( lambda server: server[ 'name' ], hosts )
181
182
	def __parse_command( self, command ):
154
	def __parse_command( self, command ):
183
		if command.find( ':' ) != -1:
155
		if command.find( ':' ) != -1:
184
			data = command.split( ':' )[ 1 ]
156
			data = command.split( ':' )[ 1 ]

Return to bug 28059