source: home-eraser/trunk/fuentes/home-eraser-server.install/usr/share/n4d/python-plugins/HomeEraserServer.py @ 7554

Last change on this file since 7554 was 7554, checked in by daduve, 2 years ago

Adding log

File size: 5.2 KB
Line 
1import os
2import pwd
3import logging
4
5
6class HomeEraserServer:
7       
8        logging.basicConfig(format = '%(asctime)s %(message)s',datefmt = '%m/%d/%Y %I:%M:%S %p',filename = '/var/log/home-eraser.log',level=logging.DEBUG)
9       
10        DEBUG=True
11       
12        def lprint(self,arg):
13               
14                logging.debug(arg)
15               
16        #def_lprint
17       
18        def dprint(self,arg):
19               
20                self.lprint("[HomeEraserServer] %s"%arg)
21                if HomeEraserServer.DEBUG:
22                        print("[HomeEraserServer] %s"%arg)
23               
24        #def dprint
25       
26        def delete_home(self,groups_delete=[]):
27               
28                home_dir="/home"
29                home_list={}
30                deleted=[]
31               
32                try:
33                        self.dprint("*********************")
34                        self.dprint("*********** START **********")
35                        self.dprint("")
36                        self.dprint("Groups to deleted: %s"%groups_delete)
37
38                        if ( len(groups_delete) > 0 ):
39
40                                for dirname in os.listdir(home_dir):
41                                         
42                                        dir_path=os.path.join(home_dir,dirname)
43                                        self.dprint("")
44                                        self.dprint("Discover in home: %s"%dir_path)
45                                               
46                                        if ( os.path.islink(dir_path) == False) & ( os.path.isfile(dir_path) == False ):
47
48                                                self.dprint("-----------------------------")   
49                                                self.dprint("Directory can be deleted: %s"%(dirname))
50                                                try:
51                                                        ownername= pwd.getpwuid(os.stat(dir_path).st_uid).pw_name
52                                                except:
53                                                        ownername="unknow"
54                                                        self.dprint("Ownername is unknow for %s"%dir_path)
55                                               
56                                                #uid=pwd.getpwuid(os.stat(dir_path).st_uid).pw_uid
57                                                try:
58                                                        uid=os.stat(dir_path).st_uid
59                                                       
60                                                except:
61                                                        uid="0"
62                                                        self.dprint("UID is unknow for %s"%dir_path)
63                                                       
64                                                self.dprint("Testing group for: %s    with uid: %s"%(dir_path,uid))
65                                                self.dprint("In groups: %s"%groups_delete)
66                                                if self.insert_to_delete(uid, groups_delete)[0]:
67                                                        self.dprint("RESUME: +++++...ADDED to delete list")
68                                                        home_list[dirname]={}
69                                                        home_list[dirname]["path"]=dir_path
70                                                        home_list[dirname]["owner"]=ownername
71                                                        home_list[dirname]["uid"]=uid
72                                                else:
73                                                        self.dprint("RESUME: Cannot be deleted because is not in group allowed")
74                               
75                               
76                                self.dprint("------------------")
77                                self.dprint("Resume paths to delete: %s"%home_list)
78       
79                               
80                                if ( len(home_list) > 0 ):
81                                        deleted=self.delete_home_local(home_list)[1]
82
83                        return [True, deleted]
84               
85                except Exception as e:
86                        print ("[HomeEraserServer] %s"%e)
87                        return [False,str(e)]
88                       
89        #def_delete_home
90               
91               
92               
93               
94        def insert_to_delete (self,uid=0,groups_delete=[]):
95               
96                try:           
97                        for group in groups_delete:
98                                self.dprint(group)
99                                if ( str(group) == "students" ):
100                                        self.dprint("testing group students.....")
101                                        arg1=20000
102                                        arg2=50000
103                                        if self.test_user(uid,arg1,arg2)[0]:
104                                                return[True]
105                                       
106                                elif ( str(group) == "teachers" ):
107                                        self.dprint("testing group teachers.....")
108                                        arg1=5000
109                                        arg2=10000
110                                        if self.test_user(uid,arg1,arg2)[0]:
111                                                return[True]
112                                       
113                                elif ( str(group) == "admins" ):
114                                        self.dprint("testing group admins.....")
115                                        arg1=1042
116                                        arg2=5000
117                                        if self.test_user(uid,arg1,arg2)[0]:
118                                                return[True]
119                                else:
120                                        self.dprint("....this group cannot be deleted")
121                                       
122                        return[False]
123                       
124               
125                except Exception as e:
126                        print ("[HomeEraserServer] %s"%e)
127                        return [False,str(e)]
128                       
129        #def_insert_to_delete
130
131
132       
133       
134        def test_user(self,uid=0,arg1=0,arg2=0):
135               
136                try:
137                        if (  uid >= arg1 ) & ( uid  < arg2  ):
138                                self.dprint("....is include in selected groups to delete")
139                                return [True]
140                        else:
141                                return [False]
142                       
143                except Exception as e:
144                        print ("[HomeEraserServer] %s"%e)
145                        return [False,str(e)]
146                       
147        #def_test_user
148
149
150
151
152        def delete_home_local(self, home_list={}):
153               
154                deleted=[]
155               
156                try:
157                        for delete in home_list:
158                                        #INSTRUCCION PARA EL BORRADO DEL DIRECTORIO
159                                        self.dprint("Path deleted: %s"%home_list[delete]["path"] )
160                                        deleted.append(home_list[delete]["path"])
161                                       
162                        self.dprint("Deleted this paths: %s"%deleted)
163                        return [True, deleted]
164               
165                except Exception as e:
166                        print ("[HomeEraserServer] %s"%e)
167                        return [False,str(e)]
168                       
169        #def_delete_home_local
170       
171       
172       
173       
174       
175       
176        def delete_net_home(self,groups_delete=[]):
177               
178                net_dir="/net/server-sync/home/"
179                net_list={}
180                deleted=[]
181               
182                try:
183                        self.dprint("*********************")
184                        self.dprint("*********** DELETING /NET DIRECTORIES **********")
185                        self.dprint("")
186                        self.dprint("Groups to deleted: %s"%groups_delete)
187
188                        if ( len(groups_delete) > 0 ):
189                               
190                                for group in groups_delete:
191                                       
192                                        self.dprint("-----------------------------")
193                                        dir_delete_path=os.path.join(net_dir,group)
194                                        self.dprint("Deleting users from: %s"%(dir_delete_path))
195                                       
196                                        for dirname in os.listdir(dir_delete_path):
197                                               
198                                                dir_path=os.path.join(dir_delete_path,dirname)
199                                                self.dprint("")
200                                                self.dprint("Discover in net: %s"%dir_path)
201                                                if ( os.path.islink(dir_path) == False) & ( os.path.isfile(dir_path) == False ):
202                                                        self.dprint("Adding to to delete.....")
203                                                        net_list[dirname]={}
204                                                        net_list[dirname]["path"]=dir_path
205                                #self.dprint("------------RESUME-------------")                 
206                                #self.dprint("Deleting this paths: %s"%net_list)       
207                                ret=self.delete_home_local(net_list)
208                                if ret[0]:
209                                        deleted=deleted+ret[1]
210
211                       
212               
213                        return [True, deleted]
214               
215                except Exception as e:
216                        print ("[HomeEraserServer] %s"%e)
217                        return [False,str(e)]
218        #def_delete_net_home
219               
220#class HomeEraserServer
Note: See TracBrowser for help on using the repository browser.