SSSDConfig.py revision 2a2f642aae37e3f41cbbda162a74c2b946a4521f
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel BřezinaCreated on Sep 18, 2009
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina@author: sgallagh
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass AlreadyInitializedError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass NotInitializedError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass NoOutputFileError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass NoServiceError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass NoSectionError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass ServiceNotRecognizedError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass ServiceAlreadyExists(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass DomainNotRecognized(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass DomainAlreadyExistsError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass NoSuchProviderError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass NoSuchProviderSubtypeError(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinaclass ProviderSubtypeInUse(SSSDConfigException): pass
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březinatranslation = gettext.translation(PACKAGE, LOCALEDIR, fallback=True)
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina# TODO: This needs to be made external
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'debug_level' : _('Set the verbosity of the debug logging'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'debug_timestamps' : _('Include timestamps in debug logs'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'debug_to_files' : _('Write debug messages to logfiles'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'timeout' : _('Ping timeout before restarting service'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'reconnection_retries' : _('Number of times to attempt connection to Data Providers'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'sbus_timeout' : _('Timeout for messages sent over the SBUS'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 're_expression' : _('Regex to parse username and domain'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'full_name_format' : _('Printf-compatible format for displaying fully-qualified names'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'enum_cache_timeout' : _('Enumeration cache timeout length (seconds)'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'entry_cache_no_wait_timeout' : _('Entry cache background update timeout length (seconds)'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'entry_negative_timeout' : _('Negative cache timeout length (seconds)'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'filter_users' : _('Users that SSSD should explicitly ignore'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'filter_groups' : _('Groups that SSSD should explicitly ignore'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'filter_users_in_groups' : _('Should filtered users appear in groups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'pwfield' : _('The value of the password field the NSS provider should return'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'offline_credentials_expiration' : _('How long to allow cached logins between online logins (days)'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'offline_failed_login_attempts' : _('How many failed logins attempts are allowed when offline'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'offline_failed_login_delay' : _('How long (minutes) to deny login after offline_failed_login_attempts has been reached'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'pam_verbosity' : _('What kind of messages are displayed to the user during authentication'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'auth_provider' : _('Authentication provider'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'access_provider' : _('Access control provider'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'chpass_provider' : _('Password change provider'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'enumerate' : _('Enable enumerating all users/groups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'cache_credentials' : _('Cache credentials for offline login'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'store_legacy_passwords' : _('Store password hashes'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'use_fully_qualified_names' : _('Display users/groups in fully-qualified form'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'entry_cache_timeout' : _('Entry cache timeout length (seconds)'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'lookup_family_order' : _('Restrict or prefer a specific address family when performing DNS lookups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'account_cache_expiration' : _('How long to keep cached entries after last successful login (days)'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'dns_resolver_timeout' : _('How long to wait for replies from DNS when resolving servers (seconds)'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'dns_discovery_domain' : _('The domain part of service discovery DNS query'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ipa_dyndns_update' : _("Whether to automatically update the client's DNS entry in FreeIPA"),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ipa_dyndns_iface' : _("The interface whose IP should be used for dynamic DNS updates"),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_auth_timeout' : _('Authentication timeout'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_ccachedir' : _('Directory to store credential caches'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_ccname_template' : _("Location of the user's credential cache"),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_keytab' : _("Location of the keytab to validate credentials"),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_validate' : _("Enable credential validation"),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_store_password_if_offline' : _("Store password if offline for later online authentication"),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_renewable_lifetime' : _("Renewable lifetime of the TGT"),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_renew_interval' : _("Time between two checks for renewal"),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'krb5_kpasswd' : _('Server where the change password service is running if not on the KDC'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_uri' : _('ldap_uri, The URI of the LDAP server'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_search_base' : _('The default base DN'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_schema' : _('The Schema Type in use on the LDAP server, rfc2307'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_default_bind_dn' : _('The default bind DN'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_default_authtok_type' : _('The type of the authentication token of the default bind DN'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_default_authtok' : _('The authentication token of the default bind DN'),
35fa5a83ce8badf6bc868937047f44c3f32b7c28Sumit Bose 'ldap_network_timeout' : _('Length of time to attempt connection'),
35fa5a83ce8badf6bc868937047f44c3f32b7c28Sumit Bose 'ldap_opt_timeout' : _('Length of time to attempt synchronous LDAP operations'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_offline_timeout' : _('Length of time between attempts to reconnect while offline'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_force_upper_case_realm' : _('Use only the upper case for realm names'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_tls_cacert' : _('File that contains CA certificates'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_tls_cacertdir' : _('Path to CA certificate directory'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_tls_reqcert' : _('Require TLS certificate verification'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_sasl_mech' : _('Specify the sasl mechanism to use'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_sasl_authid' : _('Specify the sasl authorization id to use'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_krb5_keytab' : _('Kerberos service keytab'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_krb5_init_creds' : _('Use Kerberos auth for LDAP connection'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_referrals' : _('Follow LDAP referrals'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_krb5_ticket_lifetime' : _('Lifetime of TGT for LDAP connection'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_deref' : _('How to dereference aliases'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_dns_service_name' : _('Service name for DNS service lookups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_rootdse_last_usn' : _('lastUSN attribute'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_search_timeout' : _('Length of time to wait for a search request'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_enumeration_refresh_timeout' : _('Length of time between enumeration updates'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_purge_cache_timeout' : _('Length of time between cache cleanups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_id_use_start_tls' : _('Require TLS for ID lookups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_search_base' : _('Base DN for user lookups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_search_scope' : _('Scope of user lookups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_search_filter' : _('Filter for user lookups'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_object_class' : _('Objectclass for users'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina #not used # 'ldap_user_pwd' :_('Password attribute'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_gid_number' : _('Primary GID attribute'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_home_directory' : _('Home directory attribute'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_principal' : _('User principal attribute (for Kerberos)'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_member_of' : _('memberOf attribute'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_modify_timestamp' : _('Modification time attribute'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina #replaced by ldap_entry_usn# 'ldap_user_entry_usn' : _('entryUSN attribute'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_shadow_last_change' : _('shadowLastChange attribute'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_user_shadow_min' : _('shadowMin attribute'),
b3ee4be9e1794fa823696d70d4958f3b0269939cJakub Hrozek 'ldap_user_shadow_max' : _('shadowMax attribute'),
b3ee4be9e1794fa823696d70d4958f3b0269939cJakub Hrozek 'ldap_user_shadow_warning' : _('shadowWarning attribute'),
b3ee4be9e1794fa823696d70d4958f3b0269939cJakub Hrozek 'ldap_user_shadow_inactive' : _('shadowInactive attribute'),
b3ee4be9e1794fa823696d70d4958f3b0269939cJakub Hrozek 'ldap_user_shadow_expire' : _('shadowExpire attribute'),
b3ee4be9e1794fa823696d70d4958f3b0269939cJakub Hrozek 'ldap_user_shadow_flag' : _('shadowFlag attribute'),
af28fa659f7ffcd12ecf8bda64e79cf5dd225651Jakub Hrozek 'ldap_user_authorized_service' : _('Attribute listing authorized PAM services'),
af28fa659f7ffcd12ecf8bda64e79cf5dd225651Jakub Hrozek 'ldap_user_krb_last_pwd_change' : _('krbLastPwdChange attribute'),
af28fa659f7ffcd12ecf8bda64e79cf5dd225651Jakub Hrozek 'ldap_user_krb_password_expiration' : _('krbPasswordExpiration attribute'),
af28fa659f7ffcd12ecf8bda64e79cf5dd225651Jakub Hrozek 'ldap_pwd_attribute' : _('Attribute indicating that server side password policies are active'),
d3dee2a07f1a8ee9ae6f94e149ced754ef76c248Pavel Březina 'ldap_group_search_base' : _('Base DN for group lookups'),
'ldap_account_expire_policy' : _('Which attributes shall be used to evaluate if an account is expired'),
def striplist(l):
return([x.strip() for x in l])
overlap = []
return overlap
if not schemafile:
if not schemaplugindir:
except IOError:
raise ParsingError
raise NoSectionError
parsed_options = {}
desc = None
desc,
desc,
desc,
desc,
desc,
raise ParsingError
desc,
desc,
raise ParsingError
raise ParsingError
fixed_options = []
raise ParsingError
desc,
raise ParsingError
return parsed_options
return defaults
return service_list
providers = {}
return providers
raise TypeError
options = {}
return options
filtered_options = {}
return filtered_options
filtered_options = {}
return filtered_options
if value == None:
except ValueError:
except KeyError:
if raise_error:
newvalue = []
for x in value:
except ValueError:
except KeyError:
if raise_error:
raise TypeError
options = {}
% provider)
return options
filtered_options = {}
return filtered_options
filtered_options = {}
return filtered_options
if(provider_type):
return options
if value == None:
except ValueError:
except KeyError:
if raise_error:
newvalue = []
for x in value:
except ValueError:
except KeyError:
if raise_error:
except NoSuchProviderError:
raise NoOptionError
raise TypeError
raise NoSuchProviderError
raise ProviderSubtypeInUse
provider))
(provider,
provider = None
provider = None
if not provider:
Usually /etc/sssd/sssd.api.d
raise AlreadyInitializedError
if not configfile:
raise ParsingError
raise AlreadyInitializedError
raise NotInitializedError
if outputfile == None:
raise NoOutputFileError
raise NotInitializedError
return service_list
raise NotInitializedError
raise NoServiceError
except NoOptionError:
return service
raise NotInitializedError
return service
raise NotInitializedError
raise NotInitializedError
raise TypeError
addkw = []
raise NotInitializedError
active_domains = []
return active_domains
raise NotInitializedError
active_domains = []
if x not in active_domains]
return domains
raise NotInitializedError
return domains
raise NotInitializedError
providers = [ (x['name'],x['value']) for x in self.strip_comments_empty(self.options('domain/%s' % name))
except NoOptionError:
except NoOptionError:
return domain
raise NotInitializedError
raise DomainAlreadyExistsError
return domain
raise NotInitializedError
raise NoDomainError
raise NotInitializedError
raise NoDomainError
if not item:
raise NotInitializedError
raise NoDomainError
if not item:
raise NotInitializedError
raise NotInitializedError
raise TypeError
oldindex = None
addkw = []
if oldindex: