source: n4d-server-plugins/trunk/fuentes/server-install-files/usr/share/n4d/python-plugins/PasswordManager.py @ 4994

Last change on this file since 4994 was 4994, checked in by hectorgh, 2 years ago

read changelog

File size: 3.0 KB
Line 
1# -*- coding: utf-8 -*-
2
3import os
4import shutil
5import sqlite3
6
7class PasswordManager:
8       
9        PASSWORD_FILE="/net/server-sync/var/lib/n4d/n4d.sqlite"
10        LOG_PATH="/net/server-sync/var/lib/n4d"
11       
12        def __init__(self):
13                       
14                if not os.path.exists("/lib/systemd/system/net-server\\x2dsync.mount"):
15                        self.create_database()
16               
17               
18        #def init
19       
20        def create_database(self):
21                if not os.path.exists(PasswordManager.PASSWORD_FILE):
22                        if not os.path.exists(PasswordManager.LOG_PATH):
23                                os.makedirs(PasswordManager.LOG_PATH)
24                        conn = sqlite3.connect(PasswordManager.PASSWORD_FILE)
25                        cursor = conn.cursor()
26                        cursor.execute('create table password (cn text, sn text, uid text, passwd text)')
27                        conn.commit()
28                        cursor.close()
29                        conn.close()
30                        prevmask = os.umask(0)
31                        os.chmod(PasswordManager.PASSWORD_FILE,0640)
32                        os.umask(prevmask)
33                       
34                try:
35                       
36                        conn = sqlite3.connect(PasswordManager.PASSWORD_FILE)
37                        cursor = conn.cursor()
38                        cursor.execute('select cn,sn,uid,passwd from password')
39                        result = cursor.fetchall()
40                        cursor.close()
41                        conn.close()
42                       
43                except:
44                       
45                        os.remove(PasswordManager.PASSWORD_FILE)
46                        self.create_database()
47               
48               
49               
50       
51        def add_password(self,user_name,cn,sn,password):
52               
53                self.create_database()
54               
55                conn = sqlite3.connect(PasswordManager.PASSWORD_FILE)
56                cursor = conn.cursor()
57                cursor.execute('select * from password where uid = "'+user_name+'"')
58                result = cursor.fetchall()
59                if len(result) > 0 :
60                        # user on database
61                        cursor.execute('update password set passwd = "'+password+'" where uid = "'+user_name+'"' )
62                else:
63                        cursor.execute('insert into password (cn,sn,uid,passwd) values ("'+cn+'","'+sn+'","'+user_name+'","'+password+'")')
64                       
65                conn.commit()
66                cursor.close()
67                conn.close()
68       
69               
70        #def add_password
71       
72        def remove_password(self,user_name):
73               
74                self.create_database()
75               
76                conn = sqlite3.connect(PasswordManager.PASSWORD_FILE)
77                cursor = conn.cursor()
78                cursor.execute('delete from password where uid = "'+user_name+'"')
79                conn.commit()
80                cursor.close()
81                conn.close()
82       
83        #def remove_password
84       
85        def get_passwords(self):
86               
87                self.create_database()
88               
89                list = []
90                conn = sqlite3.connect(PasswordManager.PASSWORD_FILE)
91                cursor = conn.cursor()
92                cursor.execute('select cn,sn,uid,passwd from password')
93                result = cursor.fetchall()
94                for user in result :
95                        a = {}
96                        a['cn'] = user[0].encode('utf-8')
97                        a['sn'] = user[1].encode('utf-8')
98                        a['uid'] = user[2]
99                        a['passwd'] = user[3]
100                        list.append(a)
101                conn.close()
102                return list
103               
104        #def get_passwords
105       
106        def is_user_in_database(self,uid):
107               
108               
109                for user in self.get_passwords():
110                        if user["uid"]==uid:
111                                return [True,user]
112                               
113                return [False,""]
114               
115        #def is_user_in_database
116       
117       
118        def set_externally_modified(self,uid):
119                ret,user=self.is_user_in_database(uid)
120                if ret:
121                        self.add_password(user["uid"],user["cn"],user["sn"],"#! CHANGED MANUALLY !#")
122                       
123        #def set_externally_modified   
124       
125       
126#class PasswordManager
127
128if __name__=="__main__":
129       
130        pm=PasswordManager()
131        pm.add_password("test","password2")
132        pm.add_password("test2","password2")
133        pm.remove_password("raul")
134       
135
Note: See TracBrowser for help on using the repository browser.