Skip to content

Commit 69caea9

Browse files
committed
delete et activation
1 parent f0043f2 commit 69caea9

File tree

8 files changed

+86
-16
lines changed

8 files changed

+86
-16
lines changed

src/bin/activation.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import sys
2+
sys.path.append('../lib')
3+
import backend_ldap_utils as u
4+
import ldap
5+
import argparse
6+
7+
def main():
8+
parser = argparse.ArgumentParser()
9+
parser.add_argument('--active', help='0 | 1 ', default='1')
10+
args = parser.parse_args()
11+
json=u.readjsoninput()
12+
u.readconfig('../etc/config.conf')
13+
if u.is_backend_concerned(json) == False:
14+
print(u.returncode(0, "Not concerned"))
15+
exit(0)
16+
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
17+
if u.config('disabledAttribute','') == '':
18+
print(u.returncode(1,'attribut non trouvé : disabledAttribute'))
19+
exit(1)
20+
r=u.search_entity(l,json)
21+
if len(r) ==0:
22+
print(u.returncode(1,'Entrée LDAP non trouvée'))
23+
exit(1)
24+
ldif=[]
25+
#verification si l object class est present
26+
add_obj_class=u.config('additionnalObjectClass').encode()
27+
present= False
28+
objectclass=r[0][1]['objectClass']
29+
for obj in objectclass:
30+
if obj == add_obj_class:
31+
present=True
32+
if not present:
33+
objectclass.append(add_obj_class)
34+
ldif.append((ldap.MOD_REPLACE,'objectClass',objectclass))
35+
message=""
36+
if args.active == "1" :
37+
attribute=u.config('disabledAttribute')
38+
v=u.config('enableValue')
39+
ldif.append((ldap.MOD_REPLACE, u.config('disabledAttribute'), u.config('enableValue').encode('utf-8')))
40+
message="OK compte actif"
41+
else:
42+
ldif.append((ldap.MOD_REPLACE, u.config('disabledAttribute'), u.config('disableValue').encode('utf-8')))
43+
message = "OK compte inactif"
44+
try:
45+
l.modify_s(r[0][0], ldif)
46+
except ldap.LDAPError as e:
47+
e_dict = e.args[0]
48+
print(u.returncode(1, str(e_dict.get("result")) + ' ' + e_dict.get("desc")))
49+
exit(1)
50+
51+
print(u.returncode(0, message))
52+
if __name__ == '__main__':
53+
main()

src/bin/changepwd.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
def main():
88
json=u.readjsoninput()
99
config= u.readconfig('../etc/config.conf')
10-
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
11-
print(u.change_entity_password(l,json))
12-
10+
if u.is_backend_concerned(json):
11+
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
12+
print(u.change_entity_password(l,json))
13+
else:
14+
print(u.returncode(0,'not concerned'))
1315

1416
if __name__ == '__main__':
1517
main()

src/bin/delentity.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
def main():
77
json=u.readjsoninput()
88
u.readconfig('../etc/config.conf')
9-
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
10-
print(u.delete_entry(l,json))
11-
9+
if u.is_backend_concerned(json):
10+
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
11+
print(u.delete_entity(l,json))
12+
else:
13+
print(u.returncode(0, "Not concerned"))
1214

1315
if __name__ == '__main__':
1416
main()

src/bin/resetpwd.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
def main():
88
json=u.readjsoninput()
99
u.readconfig('../etc/config.conf')
10-
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
11-
print(u.reset_entity_password(l,json))
10+
if u.is_backend_concerned(json):
11+
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
12+
print(u.reset_entity_password(l,json))
13+
else:
14+
print(u.returncode(0,'not concerned'))
1215

1316

1417
if __name__ == '__main__':

src/bin/upsertidentity.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,11 @@
66
def main():
77
json=u.readjsoninput()
88
u.readconfig('../etc/config.conf')
9-
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
10-
print(u.upsert_entry(l,json))
9+
if u.is_backend_concerned(json):
10+
l=u.connect_ldap(u.config('host'),u.config('dn'),u.config('password'))
11+
print(u.upsert_entry(l,json))
12+
else:
13+
print(u.returncode(0,'not concerned'))
1114

1215

1316
if __name__ == '__main__':

src/config.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ actions:
1919
IDENTITY_DELETE:
2020
script: 'delentity.py'
2121
onError: 'stop'
22+
IDENTITY_ENABLE:
23+
script: 'activation.py --active 1'
24+
IDENTITY_DISABLE:
25+
script: 'activation.py --active 0'
2226
PING_TARGET:
2327
script: 'ping.py'
2428
onError: 'stop'

src/etc/config.conf.exemple

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,6 @@ branchForAdm=ou=Administratifs
1010
branchForEsn=ou=Enseignants
1111
branchAttr=supannTypeEntiteAffectation
1212
backendFor=adm,etd,esn
13+
disabledAttribute=sogxdisableflag
14+
disableValue=1
15+
enableValue=0

src/lib/backend_ldap_utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@ def returncode(code,message):
4343

4444
def is_backend_concerned(entity):
4545
peopleType=find_key(entity,config('branchAttr'))
46-
listBackend=config('backendFor')
4746
if type(peopleType) is list:
48-
peopleType=peopleType[0]
49-
if (listBackend.find(peopleType) == -1):
50-
return False
47+
listBackend=config('backendFor')
48+
for v in peopleType:
49+
peopleType=v
50+
if (listBackend.find(peopleType) == -1):
51+
return False
5152
return True
52-
5353
def find_key(element, key):
5454
'''
5555
Check if *keys (nested) exists in `element` (dict).
@@ -268,7 +268,7 @@ def delete_entity(l,entity):
268268
# trouvé
269269
try:
270270
l.delete_s(r[0][0])
271-
return returncode(0, "Password for " + r[0][0] + " deleted")
271+
return returncode(0, "user : " + r[0][0] + " deleted")
272272
except ldap.LDAPError as e:
273273
e_dict = e.args[0]
274274
print(returncode(1, str(e_dict.get("result")) + ' ' + e_dict.get("desc")))

0 commit comments

Comments
 (0)