Example #1
0
	def get_object_real( self, module, dn ):
		if self._cached.has_key( dn ):
			return self._cached[ dn ]
		if isinstance( module, basestring ):
			if self._modules.has_key( module ):
				module = self._modules[ module ]
			else:
				name = module
				module = ua_modules.get( name )
				ua_modules.init( self._access, self._position, module )
				self._modules[ name ] = module
		elif module == None:
			module = self.identify( dn )
			if not module:
				return None
			ua_modules.init( self._access, self._position, module )
		new = ua_objects.get( module, self._config, self._access, position = self._position, dn = dn )
		# if the object is not valid it should be displayed as an empty object
		try:
			new.open()
		except Exception, e:
			# write the traceback in the logfile
			import traceback
			
			ud.debug( ud.ADMIN, ud.ERROR, 'The object %s could not be opened' % dn )
			try:
				tb = traceback.format_exc().encode( 'ascii', 'replace' ).replace( '%', '?' )
				# this might fail because of problems with univention.debug
				ud.debug( ud.ADMIN, ud.ERROR, 'Traceback: %s' % tb )
			except:
				pass
Example #2
0
def init_object(module, lo, pos, dn='', attrs=None):
    module = _get_module(module, lo, pos)
    obj = udm_objects.get(module, None, lo, pos, dn)
    udm_objects.open(obj)
    if attrs:
        if 'policies' in attrs:
            obj.policies = attrs.pop('policies')
        for key, value in attrs.iteritems():
            obj[key] = value
    return obj
def get_user_object(userdn, password):
	lo, po = get_user_connection(userdn, password)
	if not lo:
		return
	try:
		# try to open the user object
		user = udm_objects.get(users_module, None, lo, po, userdn)
		if not user:
			raise udm_errors.noObject()
		user.open()
		return user
	except (udm_errors.base, LDAPError) as exc:
		CORE.warn('Failed to open UDM user object %s: %s' % (userdn, exc))
    def get_object_real(self, module, dn):
        if dn in self._cached:
            return self._cached[dn]
        if isinstance(module, basestring):
            if module in self._modules:
                module = self._modules[module]
            else:
                name = module
                module = ua_modules.get(name)
                ua_modules.init(self._access, self._position, module)
                self._modules[name] = module
        elif module is None:
            module = self.identify(dn)
            if not module:
                return None
            ua_modules.init(self._access, self._position, module)
        new = ua_objects.get(module,
                             None,
                             self._access,
                             position=self._position,
                             dn=dn)
        # if the object is not valid it should be displayed as an empty object
        try:
            new.open()
        except Exception:
            # write the traceback in the logfile
            import traceback

            ud.debug(ud.ADMIN, ud.ERROR,
                     'The object %s could not be opened' % dn)
            try:
                tb = traceback.format_exc().encode('ascii', 'replace').replace(
                    '%', '?')
                # this might fail because of problems with univention.debug
                ud.debug(ud.ADMIN, ud.ERROR, 'Traceback: %s' % tb)
            except:
                pass
        for key, value in new.items():
            from univention.directory.reports.document import Document
            if self._format in (Document.TYPE_LATEX, Document.TYPE_RML):
                i, j = self.format_property(new.descriptions, key, value)
                new.info[i] = j
            else:
                new.info[key] = value

        self._get_policies(new)
        self._cached[dn] = new

        return new
Example #5
0
 def find(self, nameserver):
     filter_expression = nameserver.build_filter()
     for (dn, attr) in self.ldap_connection.search(filter_expression):
         if dn:
             for module in udm_modules.identify(dn, attr):
                 record = udm_objects.get(module,
                                          None,
                                          self.ldap_connection,
                                          self.position,
                                          dn,
                                          attr=attr,
                                          attributes=attr)
                 record.open()
                 return record
     raise RecordNotFound()
 def find(self, nameserver):
     filter_expression = nameserver.build_filter()
     MODULE.process("Trying to find nameserver %s in UDM/LDAP" %
                    (nameserver.fqdn()))
     MODULE.process("Similar to running: univention-ldapsearch '%s'" %
                    (filter_expression))
     for (dn, attr) in self.ldap_connection.search(filter_expression):
         if dn:
             for module in udm_modules.identify(dn, attr):
                 record = udm_objects.get(module,
                                          None,
                                          self.ldap_connection,
                                          self.position,
                                          dn,
                                          attr=attr,
                                          attributes=attr)
                 record.open()
                 return record
     raise RecordNotFound()
Example #7
0
	def _get_user_obj(self):
		try:
			# make sure that the UDM users/user module could be initiated
			if not users_module:
				raise udm_errors.base('UDM module users/user could not be initiated')

			# open an LDAP connection with the user password and credentials
			lo = udm_uldap.access(host = ucr.get('ldap/server/name'), base = ucr.get('ldap/base'), port = int(ucr.get('ldap/server/port', '7389')), binddn = self.__user_dn, bindpw = self.__password, follow_referral=True)

			# try to open the user object
			userObj = udm_objects.get(users_module, None, lo, self.po, self.__user_dn)
			if not userObj:
				raise udm_errors.noObject()
			userObj.open()
			return userObj
		except udm_errors.noObject as e:
			CORE.warn('Failed to open UDM user object for user %s' % (self.__username))
		except (udm_errors.base, ldap.LDAPError) as e:
			CORE.warn('Failed to open UDM user object %s: %s' % (self.__user_dn, e))
		return None
Example #8
0
    def groups_assign(self, request, ldap_user_read=None, ldap_position=None):
        """Assigns default rules to groups:
		request.options = [ { 'group': <groupDN>, 'rule': <ruleName> }, ... ]
		"""
        MODULE.info('internetrules.groups_assign: options: %s' %
                    str(request.options))

        # try to load all group rules
        newRules = {}
        rmRules = []
        for ientry in request.options:
            # make sure the group exists
            igrp = udm_objects.get(udm_modules.get('groups/group'), None,
                                   ldap_user_read, ldap_position,
                                   ientry['group'])
            if not igrp:
                raise UMC_Error('unknown group object')
            igrp.open()

            # check the rule name
            irule = ientry['rule']
            if irule == '$default$':
                # remove the rule
                rmRules.append(igrp['name'])
            else:
                try:
                    # make sure the rule name is valid
                    self._parseRule(dict(name=irule))
                except ValueError as exc:
                    raise UMC_Error(str(exc))

                # add new rule
                newRules[igrp['name']] = irule

        # assign default filter rules to groups
        rules.setGroupRuleName(newRules)
        rules.unsetGroupRuleName(rmRules)

        MODULE.info('internetrules.groups_assign: finished')
        self.finished(request.id, True)
Example #9
0
    def get_object_real(self, module, dn):
        if self._cached.has_key(dn):
            return self._cached[dn]
        if isinstance(module, basestring):
            if self._modules.has_key(module):
                module = self._modules[module]
            else:
                name = module
                module = ua_modules.get(name)
                ua_modules.init(self._access, self._position, module)
                self._modules[name] = module
        elif module == None:
            module = self.identify(dn)
            if not module:
                return None
            ua_modules.init(self._access, self._position, module)
        new = ua_objects.get(module,
                             self._config,
                             self._access,
                             position=self._position,
                             dn=dn)
        # if the object is not valid it should be displayed as an empty object
        try:
            new.open()
        except Exception, e:
            # write the traceback in the logfile
            import traceback

            ud.debug(ud.ADMIN, ud.ERROR,
                     'The object %s could not be opened' % dn)
            try:
                tb = traceback.format_exc().encode('ascii', 'replace').replace(
                    '%', '?')
                # this might fail because of problems with univention.debug
                ud.debug(ud.ADMIN, ud.ERROR, 'Traceback: %s' % tb)
            except:
                pass