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

Last change on this file since 7563 was 7563, checked in by daduve, 20 months ago

Adding logging window

File size: 5.4 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("*********** APPLY **********")
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                        self.dprint ("[HomeEraserServer] %s"%e)
88                        return [False,str(e)]
89                       
90        #def_delete_home
91               
92               
93               
94               
95        def insert_to_delete (self,uid=0,groups_delete=[]):
96               
97                try:           
98                        for group in groups_delete:
99                                self.dprint(group)
100                                if ( str(group) == "students" ):
101                                        self.dprint("testing group students.....")
102                                        arg1=20000
103                                        arg2=50000
104                                        if self.test_user(uid,arg1,arg2)[0]:
105                                                return[True]
106                                       
107                                elif ( str(group) == "teachers" ):
108                                        self.dprint("testing group teachers.....")
109                                        arg1=5000
110                                        arg2=10000
111                                        if self.test_user(uid,arg1,arg2)[0]:
112                                                return[True]
113                                       
114                                elif ( str(group) == "admins" ):
115                                        self.dprint("testing group admins.....")
116                                        arg1=1042
117                                        arg2=5000
118                                        if self.test_user(uid,arg1,arg2)[0]:
119                                                return[True]
120                                else:
121                                        self.dprint("....this group cannot be deleted")
122                                       
123                        return[False]
124                       
125               
126                except Exception as e:
127                        print ("[HomeEraserServer] %s"%e)
128                        self.dprint ("[HomeEraserServer] %s"%e)
129                        return [False,str(e)]
130                       
131        #def_insert_to_delete
132
133
134       
135       
136        def test_user(self,uid=0,arg1=0,arg2=0):
137               
138                try:
139                        if (  uid >= arg1 ) & ( uid  < arg2  ):
140                                self.dprint("....is include in selected groups to delete")
141                                return [True]
142                        else:
143                                return [False]
144                       
145                except Exception as e:
146                        print ("[HomeEraserServer] %s"%e)
147                        self.dprint ("[HomeEraserServer] %s"%e)
148                        return [False,str(e)]
149                       
150        #def_test_user
151
152
153
154
155        def delete_home_local(self, home_list={}):
156               
157                deleted=[]
158               
159                try:
160                        for delete in home_list:
161                                        #INSTRUCCION PARA EL BORRADO DEL DIRECTORIO
162                                        self.dprint("Path deleted: %s"%home_list[delete]["path"] )
163                                        deleted.append(home_list[delete]["path"])
164                                       
165                        self.dprint("Deleted this paths: %s"%deleted)
166                        return [True, deleted]
167               
168                except Exception as e:
169                        print ("[HomeEraserServer] %s"%e)
170                        self.dprint ("[HomeEraserServer] %s"%e)
171                        return [False,str(e)]
172                       
173        #def_delete_home_local
174       
175       
176       
177       
178       
179       
180        def delete_net_home(self,groups_delete=[]):
181               
182                net_dir="/net/server-sync/home/"
183                net_list={}
184                deleted=[]
185               
186                try:
187                        self.dprint("*********************")
188                        self.dprint("*********** DELETING /NET DIRECTORIES **********")
189                        self.dprint("")
190                        self.dprint("Groups to deleted: %s"%groups_delete)
191
192                        if ( len(groups_delete) > 0 ):
193                               
194                                for group in groups_delete:
195                                       
196                                        self.dprint("-----------------------------")
197                                        dir_delete_path=os.path.join(net_dir,group)
198                                        self.dprint("Deleting users from: %s"%(dir_delete_path))
199                                       
200                                        for dirname in os.listdir(dir_delete_path):
201                                               
202                                                dir_path=os.path.join(dir_delete_path,dirname)
203                                                self.dprint("")
204                                                self.dprint("Discover in net: %s"%dir_path)
205                                                if ( os.path.islink(dir_path) == False) & ( os.path.isfile(dir_path) == False ):
206                                                        self.dprint("Adding to to delete.....")
207                                                        net_list[dirname]={}
208                                                        net_list[dirname]["path"]=dir_path
209                                #self.dprint("------------RESUME-------------")                 
210                                #self.dprint("Deleting this paths: %s"%net_list)       
211                                ret=self.delete_home_local(net_list)
212                                if ret[0]:
213                                        deleted=deleted+ret[1]
214
215                       
216               
217                        return [True, deleted]
218               
219                except Exception as e:
220                        print ("[HomeEraserServer] %s"%e)
221                        self.dprint ("[HomeEraserServer] %s"%e)
222                        return [False,str(e)]
223        #def_delete_net_home
224               
225#class HomeEraserServer
Note: See TracBrowser for help on using the repository browser.