summaryrefslogtreecommitdiffstats
path: root/account.py
blob: 76e3bf87c724a106e4e618ebbc4bf39ba035f786 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# -*- coding: utf-8 -*-
import ldap
import sys

#LDAP_HOST = 'ldaps://bernd:6336'
LDAP_HOST = 'ldap://bernd:3889'
LDAP_BASE_DN = 'dc=nodomain'
USER = 'cn=admin,dc=nodomain'
PASS = 'blubb'


class Account(object):
    def __init__(self, ldap_host, base_dn, 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):
        return self.con.search_s(
            self.base_dn, ldap.SCOPE_SUBTREE, *args, **kwargs
        )


    def register(self, name, attr):
        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):
        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):
        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())