def get_machine_connection(): # TODO: find out and make a comment why ldap_master is False try: # get LDAP connection with machine account return udm_uldap.getMachineConnection(ldap_master=False) except (LDAPError, IOError) as exc: # problems connection to LDAP server or the server is not joined (machine.secret is missing) CORE.warn('An error occurred connecting to the LDAP server: %s' % exc) return None, None
def __set_users_module(): global users_module if users_module: return try: # get the users/user UDM module udm_modules.update() users_module = udm_modules.get('users/user') except udm_errors.base as e: # UDM error, user module coule not be initiated CORE.warn('An error occurred getting the UDM users/user module: %s' % e)
def set_locale(locale): try: locale = str(Locale(locale)) setlocale(LC_MESSAGES, locale) CORE.info("Successful load specified locale (%s)" % (locale,)) except LocaleError: CORE.warn("Specified locale is not available (%s)" % (locale,)) CORE.warn("Falling back to C") setlocale(LC_MESSAGES, 'C') return False else: return True
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 set_language(self, language): success = True for language in [language, 'C']: CORE.info('Setting language: %s' % (language,)) try: self.core_i18n.set_language(language) self.i18n.set_locale(language) except (I18N_Error, AttributeError, TypeError): CORE.warn('Setting locale to specified locale failed (%s)' % (language,)) success = False else: break return success
def __init_users_module(): __set_users_module() 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') global __udm_users_module_initialised if not __udm_users_module_initialised: # initiate the users/user UDM module lo, po = get_machine_connection() udm_modules.init(lo, po, users_module) __udm_users_module_initialised = True except (udm_errors.base, LDAPError) as exc: CORE.warn('%s' % (exc,))
def get_user_connection(userdn, password): __init_users_module() ucr.load() try: # open an LDAP connection with the user password and credentials return udm_uldap.access( host=ucr.get('ldap/server/name'), base=ucr.get('ldap/base'), port=int(ucr.get('ldap/server/port', 7389)), binddn=userdn, bindpw=password, follow_referral=True ), udm_uldap.position(ucr.get('ldap/base')) except (udm_errors.base, LDAPError) as exc: CORE.warn('Failed to get ldap connection for UDM user object %s: %s' % (userdn, exc)) return None, None