Menu

pycaravel: This module is designed to simplify continuous integration (CI) of data from multiple projects.

Source code for caravel.nextcloud.api_wrappers.user_ldap

import re

from ..base import WithRequester


[docs] class UserLDAP(WithRequester): API_URL = "/ocs/v2.php/apps/user_ldap/api/v1/config" SUCCESS_CODE = 200 CONFIG_KEYS = [ "ldapHost", "ldapPort", "ldapBackupHost", "ldapBackupPort", "ldapBase", "ldapBaseUsers", "ldapBaseGroups", "ldapAgentName", "ldapAgentPassword", "ldapTLS", "turnOffCertCheck", "ldapUserDisplayName", "ldapGidNumber", "ldapUserFilterObjectclass", "ldapUserFilterGroups", "ldapUserFilter", "ldapUserFilterMode", "ldapGroupFilter", "ldapGroupFilterMode", "ldapGroupFilterObjectclass", "ldapGroupFilterGroups", "ldapGroupMemberAssocAttr", "ldapGroupDisplayName", "ldapLoginFilter", "ldapLoginFilterMode", "ldapLoginFilterEmail", "ldapLoginFilterUsername", "ldapLoginFilterAttributes", "ldapQuotaAttribute", "ldapQuotaDefault", "ldapEmailAttribute", "ldapCacheTTL", "ldapUuidUserAttribute", "ldapUuidGroupAttribute", "ldapOverrideMainServer", "ldapConfigurationActive", "ldapAttributesForUserSearch", "ldapAttributesForGroupSearch", "ldapExperiencedAdmin", "homeFolderNamingRule", "hasPagedResultSupport", "hasMemberOfFilterSupport", "useMemberOfToDetectMembership", "ldapExpertUsernameAttr", "ldapExpertUUIDUserAttr", "ldapExpertUUIDGroupAttr", "lastJpegPhotoLookup", "ldapNestedGroups", "ldapPagingSize", "turnOnPasswordChange", "ldapDynamicGroupMemberURL", "ldapDefaultPPolicyDN", ]
[docs] def create_ldap_config(self): """ Create a new and empty LDAP configuration. """ return self.requester.post()
[docs] def get_ldap_config(self, config_id, show_password=None): """ Get all keys and values of the specified LDAP configuration. """ params = {"showPassword": show_password} return self.requester.get(config_id, params=params)
[docs] def edit_ldap_config(self, config_id, data): """ Update a configuration with the provided values. """ prepared_data = {f'configData[{key}]': value for key, value in data.items()} return self.requester.put(config_id, data=prepared_data)
[docs] def delete_ldap_config(self, config_id): """ Delete a given LDAP configuration. """ return self.requester.delete(config_id)
for ldap_key in UserLDAP.CONFIG_KEYS: key_name = ldap_key.replace('ldap', '') key_name = re.sub(r'([a-z0-9])([A-Z])', r'\1_\2', key_name).lower() # create and add getter method getter_name = f"get_ldap_{key_name}"
[docs] def getter_method(param): def getter(self, config_id): res = self.get_ldap_config(config_id) data = res.data return data[param] getter.__name__ = getter_name return getter
setattr(UserLDAP, getter_name, getter_method(ldap_key)) # create and add setter method setter_name = f"set_ldap_{key_name}"
[docs] def setter_method(param): def setter(self, config_id, value): res = self.edit_ldap_config(config_id, data={param: value}) return res setter.__name__ = setter_name return setter
setattr(UserLDAP, setter_name, setter_method(ldap_key))

Follow us

© 2025, Antoine Grigis