source: home-eraser/trunk/fuentes/home-eraser-client.install/usr/share/n4d/python-plugins/HomeEraserClient.py @ 7586

Last change on this file since 7586 was 7586, checked in by daduve, 17 months ago

Debug false in n4d client

File size: 3.8 KB
Line 
1import os
2import pwd
3import shutil
4
5class HomeEraserClient:
6       
7        DEBUG=False
8       
9        def dprint(self,arg):
10               
11                if HomeEraserClient.DEBUG:
12                        print("[HomeEraserClient] %s"%arg)
13               
14        #def dprint
15       
16        def delete_home(self,groups_delete=[]):
17               
18                home_dir="/home"
19                home_list={}
20                deleted=[]
21               
22                try:
23                        self.dprint("*********************")
24                        self.dprint("*********** START **********")
25                        self.dprint("")
26                        self.dprint("Groups to deleted: %s"%groups_delete)
27
28                        if ( len(groups_delete) > 0 ):
29
30                                for dirname in os.listdir(home_dir):
31                                         
32                                        dir_path=os.path.join(home_dir,dirname)
33                                        self.dprint("")
34                                        self.dprint("Discover in home: %s"%dir_path)
35                                               
36                                        if ( os.path.islink(dir_path) == False) & ( os.path.isfile(dir_path) == False ):
37
38                                                self.dprint("-----------------------------")   
39                                                self.dprint("Directory can be deleted: %s"%(dirname))
40                                                try:
41                                                        ownername= pwd.getpwuid(os.stat(dir_path).st_uid).pw_name
42                                                except:
43                                                        ownername="unknow"
44                                                        self.dprint("Ownername is unknow for %s"%dir_path)
45                                               
46                                                #uid=pwd.getpwuid(os.stat(dir_path).st_uid).pw_uid
47                                                try:
48                                                        uid=os.stat(dir_path).st_uid
49                                                       
50                                                except:
51                                                        uid="0"
52                                                        self.dprint("UID is unknow for %s"%dir_path)
53                                                       
54                                                self.dprint("Testing group for: %s    with uid: %s"%(dir_path,uid))
55                                                self.dprint("In groups: %s"%groups_delete)
56                                                if self.insert_to_delete(uid, groups_delete)[0]:
57                                                        self.dprint("RESUME: +++++...ADDED to delete list")
58                                                        home_list[dirname]={}
59                                                        home_list[dirname]["path"]=dir_path
60                                                        home_list[dirname]["owner"]=ownername
61                                                        home_list[dirname]["uid"]=uid
62                                                else:
63                                                        self.dprint("RESUME: Cannot be deleted because is not in group allowed")
64                               
65                               
66                                self.dprint("------------------")
67                                self.dprint("Resume paths to delete: %s"%home_list)
68       
69                               
70                                if ( len(home_list) > 0 ):
71                                        deleted=self.delete_home_local(home_list)[1]
72
73                        return [True, deleted]
74               
75                except Exception as e:
76                        print ("[HomeEraserClient] %s"%e)
77                        return [False,str(e)]
78                       
79        #def_delete_home
80               
81               
82               
83               
84        def insert_to_delete (self,uid=0,groups_delete=[]):
85               
86                try:           
87                        for group in groups_delete:
88                                self.dprint(group)
89                                if ( str(group) == "students" ):
90                                        self.dprint("testing group students.....")
91                                        arg1=20000
92                                        arg2=50000
93                                        if self.test_user(uid,arg1,arg2)[0]:
94                                                return[True]
95                                       
96                                elif ( str(group) == "teachers" ):
97                                        self.dprint("testing group teachers.....")
98                                        arg1=5000
99                                        arg2=10000
100                                        if self.test_user(uid,arg1,arg2)[0]:
101                                                return[True]
102                                       
103                                elif ( str(group) == "admins" ):
104                                        self.dprint("testing group admins.....")
105                                        arg1=1042
106                                        arg2=5000
107                                        if self.test_user(uid,arg1,arg2)[0]:
108                                                return[True]
109                                else:
110                                        self.dprint("....this group cannot be deleted")
111                                       
112                        return[False]
113                       
114               
115                except Exception as e:
116                        print ("[HomeEraserClient] %s"%e)
117                        return [False,str(e)]
118                       
119        #def_insert_to_delete
120
121
122       
123       
124        def test_user(self,uid=0,arg1=0,arg2=0):
125               
126                try:
127                        if (  uid >= arg1 ) & ( uid  < arg2  ):
128                                self.dprint("....is include in selected groups to delete")
129                                return [True]
130                        else:
131                                return [False]
132                       
133                except Exception as e:
134                        print ("[HomeEraserClient] %s"%e)
135                        return [False,str(e)]
136                       
137        #def_test_user
138
139
140
141
142        def delete_home_local(self, home_list={}):
143               
144                deleted=[]
145               
146                try:
147                        for delete in home_list:
148                                        #INSTRUCCION PARA EL BORRADO DEL DIRECTORIO
149                                        self.dprint("Path deleted: %s"%home_list[delete]["path"] )
150                                        deleted.append(home_list[delete]["path"])
151                                        try:
152                                                shutil.rmtree(home_list[delete]["path"])
153                                        except Exception as r_ex:
154                                                self.dprint("[HomeEraserClient] %s"%r_ex)
155                                       
156                        self.dprint("Deleted this paths: %s"%deleted)
157                        return [True, deleted]
158               
159                except Exception as e:
160                        print ("[HomeEraserClient] %s"%e)
161                        return [False,str(e)]
162                       
163        #def_delete_home_local
164               
165#class HomeEraserClient
Note: See TracBrowser for help on using the repository browser.