summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico von Geyso <Nico.Geyso@FU-Berlin.de>2012-09-14 00:10:02 +0200
committerNico von Geyso <Nico.Geyso@FU-Berlin.de>2012-09-14 00:10:02 +0200
commitd7e62d1166991c0c4c9fa1385ead2bd2058b5b86 (patch)
tree5a9b1e779203f34493570c68496387a33d0dc77e
parentf91792eb6d5a9a36ef961f03890e3780049a9f3d (diff)
downloadweb-d7e62d1166991c0c4c9fa1385ead2bd2058b5b86.tar.gz
web-d7e62d1166991c0c4c9fa1385ead2bd2058b5b86.tar.bz2
web-d7e62d1166991c0c4c9fa1385ead2bd2058b5b86.zip
added rudimentary ldap account class
-rw-r--r--account.py77
1 files changed, 57 insertions, 20 deletions
diff --git a/account.py b/account.py
index 1c764a5..76e3bf8 100644
--- a/account.py
+++ b/account.py
@@ -2,46 +2,83 @@
import ldap
import sys
-LDAP_HOST = 'localhost'
+#LDAP_HOST = 'ldaps://bernd:6336'
+LDAP_HOST = 'ldap://bernd:3889'
LDAP_BASE_DN = 'dc=nodomain'
-USER = 'cn=admin'
+USER = 'cn=admin,dc=nodomain'
PASS = 'blubb'
class Account(object):
def __init__(self, ldap_host, base_dn, user, password):
- self.con = ldap.open(ldap_host)
- self.con.simple_bind(user, password)
+
+ self.con = ldap.initialize(ldap_host)
+
self.base_dn = base_dn
+
+ self.con.version = ldap.VERSION3
+ self.con.start_tls_s()
+ self.con.simple_bind(user, password)
- def list(self, *args, **kwargs):
- entries = self.con.search_s(self.base_dn, ldap.SCOPE_SUBTREE, *args, **kwargs)
- for entry in entries:
- print(entry)
+ def list(self, *args, **kwargs):
+ return self.con.search_s(
+ self.base_dn, ldap.SCOPE_SUBTREE, *args, **kwargs
+ )
def register(self, name, attr):
- dn = 'cn=%s,%s' % (name, self.base_dn)
- name = self.con.add_s(dn, attr)
- print('Added ' % name)
+ dn = 'uid=%s,%s' % (name, self.base_dn)
+ try:
+ self.con.add_s(dn, attr)
+ except:
+ return False
+
+ return True
def modify(self, name, attr):
- dn = 'cn=%s,%s' % (name, self.base_dn)
- name = self.con.modify_s(dn, attr)
- print('Modify ' % name)
+ try:
+ dn = self.find(name)[0]
+ self.con.modify_s(dn, attr)
+ except:
+ return False
+
+ return True
+
+
+ def find(self, name, *args, **kwargs):
+ try:
+ dn = 'uid=%s,%s' % (name, self.base_dn)
+ return self.con.search_s(
+ dn, ldap.SCOPE_SUBTREE, *args, **kwargs
+ )[0]
+ except:
+ pass
+
+ return None
+
def delete(self, name):
- dn = 'cn=%s,%s' % (name, self.base_dn)
- name = self.con.delete_s(dn, attr)
- print('Delete ' % name)
+ try:
+ dn = self.find(name)[0]
+ self.con.delete_s(dn)
+ except:
+ return False
+ return True
a = Account(LDAP_HOST, LDAP_BASE_DN, USER, PASS)
+#print(a.register('test6',
+# [('objectClass', 'account'),('uid','test6')]
+#))
+#print(a.list())
+#a.delete('test3')
+#print(a.find('test3'))
+#print(a.list())
+#print("--")
+a.modify('test2', [(ldap.MOD_ADD, 'description','ldap ist_scheisse')])
+print(a.list())
-class _Missing(object):
- pass
-_missing = _Missing()