summaryrefslogtreecommitdiffstats
path: root/ipa_server
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-10-15 12:24:15 -0600
committerJason Gerard DeRose <jderose@redhat.com>2008-10-15 12:24:15 -0600
commitaf7c0ee595bf522a7f52e5e1b6515a3a27292846 (patch)
treecc9822e5cf636d4d3f979c6a66f8696e618bad9b /ipa_server
parente5d0bfa86bdf6ba1ad72241fc135a3fb065578ef (diff)
parent789a248daa71d5d1377e0dc9f0cd3afe107d4f2a (diff)
downloadfreeipa-af7c0ee595bf522a7f52e5e1b6515a3a27292846.tar.gz
freeipa-af7c0ee595bf522a7f52e5e1b6515a3a27292846.tar.xz
freeipa-af7c0ee595bf522a7f52e5e1b6515a3a27292846.zip
Resolved conficts in Rob's merge
Diffstat (limited to 'ipa_server')
-rw-r--r--ipa_server/plugins/b_ldap.py52
1 files changed, 50 insertions, 2 deletions
diff --git a/ipa_server/plugins/b_ldap.py b/ipa_server/plugins/b_ldap.py
index 600f1c86f..c48230382 100644
--- a/ipa_server/plugins/b_ldap.py
+++ b/ipa_server/plugins/b_ldap.py
@@ -29,7 +29,6 @@ from ipalib import errors
from ipalib.crud import CrudBackend
from ipa_server import servercore
from ipa_server import ipaldap
-import ldap
class ldap(CrudBackend):
@@ -39,7 +38,7 @@ class ldap(CrudBackend):
dn = _ldap.dn
- def get_user_dn(self, uid):
+ def make_user_dn(self, uid):
"""
Construct user dn from uid.
"""
@@ -49,6 +48,34 @@ class ldap(CrudBackend):
self.api.env.basedn,
)
+ def find_entry_dn(self, key_attribute, primary_key, object_type=None):
+ """
+ Find an existing entry's dn from an attribute
+ """
+ key_attribute = key_attribute.lower()
+ if not object_type:
+ if key_attribute == "uid": # User
+ filter = "posixAccount"
+ elif key_attribute == "cn": # Group
+ object_type = "posixGroup"
+ elif key_attribute == "krbprincipal": # Service
+ object_type = "krbPrincipal"
+
+ if not object_type:
+ return None
+
+ filter = "(&(%s=%s)(objectclass=%s))" % (
+ key_attribute,
+ self.dn.escape_dn_chars(primary_key),
+ object_type
+ )
+
+ search_base = "%s, %s" % (self.api.env.container_accounts, self.api.env.basedn)
+
+ entry = servercore.get_sub_entry(search_base, filter, ['dn', 'objectclass'])
+
+ return entry['dn']
+
def create(self, **kw):
if servercore.entry_exists(kw['dn']):
raise errors.DuplicateEntry("entry already exists")
@@ -64,4 +91,25 @@ class ldap(CrudBackend):
return servercore.add_entry(entry)
+ def retrieve(self, dn, attributes=None):
+ return servercore.get_entry_by_dn(dn, attributes)
+
+ def update(self, dn, **kw):
+ result = self.retrieve(dn, ["*"])
+
+ entry = ipaldap.Entry((dn, servercore.convert_scalar_values(result)))
+
+ for k in kw:
+ entry.setValues(k, kw[k])
+
+ return servercore.update_entry(entry.toDict())
+
+ def delete(self, dn):
+ return servercore.delete_entry(dn)
+
+api.register(ldap)
+
+ def delete(self, dn):
+ return servercore.delete_entry(dn)
+
api.register(ldap)