source: export-web-sites/trunk/fuentes/export-web-sites-server.install/usr/share/n4d/python-plugins/ExportWebSites.py @ 7824

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

First version

File size: 8.3 KB
Line 
1import os
2import pwd
3import logging
4import shutil
5import commands
6
7class ExportWebSites:
8       
9        logging.basicConfig(format = '%(asctime)s %(message)s',datefmt = '%m/%d/%Y %I:%M:%S %p',filename = '/var/log/export-web-sites.log',level=logging.DEBUG)
10       
11        DEBUG=True
12       
13        moodle="moodle"
14        pmb="pmb"
15        jclic="jclic"
16        dir_export="/etc/apache2/lliurex-location"
17        mod_extensions=[".conf",".load"]
18        mod_files=["proxy_html","proxy_http"]
19        mod_available="/etc/apache2/mods-available/"
20        mod_enabled="/etc/apache2/mods-enabled/"
21        file_sites_configuration="/etc/apache2/sites-enabled/000-default.conf"
22       
23        #web_sites=[moodle,jclic,pmb]
24       
25       
26        def create_dict(self,web_sites_vector):
27               
28                try:
29                        self.dprint("Creating dictionary for web sites....")
30                        resume={}
31                        for sites in web_sites_vector:
32                                resume[sites]={}
33                                suffix='.conf'
34                                site_path=os.path.join(self.dir_export, sites + suffix)
35                                resume[sites]["file"]=site_path
36                                resume[sites]["install"]=False
37                                self.dprint("%s : %s"%(sites,resume[sites]))
38                        self.dprint("Creating dictionary for web sites: %s"%resume)
39                        return [True,resume]
40               
41                except Exception as e:
42                        print ("[ExportWebSitesServer] %s"%e)
43                        self.dprint(e)
44                        return [False,e]
45               
46        #def create_dict
47       
48        def lprint(self,arg):
49               
50                logging.debug(arg)
51               
52        #def_lprint
53       
54        def dprint(self,arg):
55               
56                self.lprint("[ExportWebSitesServer] %s"%arg)
57                if ExportWebSites.DEBUG:
58                        print("[ExportWebSitesServer] %s"%arg)
59               
60        #def dprint
61       
62        def export_moodle(self):
63               
64                try:
65                        self.dprint("Moodle is exporting....")
66                        if self.directory_exist(self.dir_export):
67                                suffix='.conf'
68                                site_path=os.path.join(self.dir_export, "moodle" + suffix)
69                                if not os.path.isfile(site_path):
70                                        os.mknod(site_path)
71                                        os.system('chmod 644 %s'%site_path)
72                                        with open(site_path,'w') as file:
73                                                file.write('<Location /moodle>\n')
74                                                file.write('    SetOutputFilter INFLATE;proxy-html;DEFLATE\n')
75                                                file.write('    ProxyHTMLExtended On\n')
76                                                file.write('    ProxyHTMLURLMap http://moodle/ http://server/moodle/moodle/\n')
77                                                file.write('    ProxyPass http://moodle/\n')
78                                                file.write('    ProxyPassReverse http://moodle/\n')
79                                                file.write('</Location>\n')
80                                               
81                                self.dprint("Moodle file is created to exported....")
82                        return [True]
83               
84                except Exception as e:
85                        print ("[ExportWebSitesServer] %s"%e)
86                        self.dprint(e)
87                        return [False,str(e)]
88               
89        #def export_moodle
90       
91        def export_jclic(self):
92               
93                try:
94                        self.dprint("JCLIC is exporting....")
95                        if self.directory_exist(self.dir_export):
96                                suffix='.conf'
97                                site_path=os.path.join(self.dir_export, "jclic" + suffix)
98                                if not os.path.isfile(site_path):
99                                        #os.mknod(site_path)
100                                        pass
101                                self.dprint("Jclic file is created to exported....")
102                        return [True]
103               
104                except Exception as e:
105                        print ("[ExportWebSitesServer] %s"%e)
106                        self.dprint(e)
107                        return [False,str(e)]
108               
109        #def export_jclic
110       
111        def export_pmb(self):
112               
113                try:
114                        self.dprint("PMB is exporting....")
115                        if self.directory_exist(self.dir_export):
116                                suffix='.conf'
117                                site_path=os.path.join(self.dir_export, "pmb" + suffix)
118                                if not os.path.isfile(site_path):
119                                        os.mknod(site_path)
120                                        os.system('chmod 644 %s'%site_path)
121                                        with open(site_path,'w') as file:
122                                                file.write('<Location /pmb/>\n')
123                                                file.write('    ProxyPass http://pmb:800/\n')
124                                                file.write('    ProxyPassReverse http://pmb:800/\n')
125                                                file.write('</Location>\n')
126                                self.dprint("PMB file is created to exported....")
127                        return [True]
128               
129                except Exception as e:
130                        print ("[ExportWebSitesServer] %s"%e)
131                        self.dprint(e)
132                        return [False,str(e)]
133               
134        #def export_pmb
135       
136        def un_export_moodle(self):
137               
138                try:
139                        self.dprint("Moodle is cancelling the exportation....")
140                        if self.directory_exist(self.dir_export):
141                                suffix='.conf'
142                                site_path=os.path.join(self.dir_export, "moodle" + suffix)
143                                if os.path.isfile(site_path):
144                                        os.remove(site_path)
145                                self.dprint("Moodle removed !!!")
146                        return [True]
147               
148                except Exception as e:
149                        print ("[ExportWebSitesServer] %s"%e)
150                        self.dprint(e)
151                        return [False,str(e)]
152               
153        #def export_moodle
154       
155        def un_export_jclic(self):
156               
157                try:
158                        self.dprint("JCLIC is cancelling the exportation....")
159                        if self.directory_exist(self.dir_export):
160                                suffix='.conf'
161                                site_path=os.path.join(self.dir_export, "jclic" + suffix)
162                                if os.path.isfile(site_path):
163                                        os.remove(site_path)
164                                self.dprint("Jclic removed !!!")
165                        return [True]
166               
167                except Exception as e:
168                        print ("[ExportWebSitesServer] %s"%e)
169                        self.dprint(e)
170                        return [False,str(e)]
171               
172        #def export_jclic
173       
174        def un_export_pmb(self):
175               
176                try:
177                        self.dprint("PMB is cancelling the exportation....")
178                        if self.directory_exist(self.dir_export):
179                                suffix='.conf'
180                                site_path=os.path.join(self.dir_export, "pmb" + suffix)
181                                if os.path.isfile(site_path):
182                                        os.remove(site_path)
183                                self.dprint("Pmb removed !!!")
184                        return [True]
185               
186                except Exception as e:
187                        print ("[ExportWebSitesServer] %s"%e)
188                        self.dprint(e)
189                        return [False,str(e)]
190               
191        #def export_pmb
192       
193        def read_export_sites(self,web_sites):
194               
195                try:
196                        self.dprint("READING export sites: %s"%web_sites)
197                        resume=self.create_dict(web_sites)
198                        if resume[0]:
199                                resume=resume[1]
200                                for service in resume:
201                                        if os.path.exists(resume[service]["file"]):
202                                                resume[service]["install"]=True
203                                self.dprint(resume)             
204                                return [True,resume]
205                        else:
206                                return [False]
207               
208                except Exception as e:
209                        print ("[ExportWebSitesServer] %s"%e)
210                        self.dprint(e)
211                        return [False,str(e)]
212               
213        #def read_export_sites
214       
215       
216        def directory_exist(self,directory):
217                try:
218                        self.dprint("Testing directory: %s"%directory)
219                        if not os.path.exists(directory):
220                                os.makedirs(directory)
221                        return [True]
222               
223                except Exception as e:
224                        print ("[ExportWebSitesServer] %s"%e)
225                        self.dprint(e)
226                        return [False,str(e)]
227               
228        #def directory_exist
229       
230        def export_active(self):
231                try:
232                        self.dprint("Activating Exportation.....")
233                        for filename in self.mod_files:
234                                for extension in self.mod_extensions:
235                                        if ( filename  == "proxy_http" ):
236                                                extension=".load"
237                                        self.dprint("Creating path file, Path: %s    Filename: %s    Extension: %s"%(self.mod_enabled,filename, extension))
238                                        path_mod_enabled=os.path.join(self.mod_enabled, filename + extension)
239                                        path_mod_available=os.path.join(self.mod_available, filename + extension)
240                                        if not os.path.exists(path_mod_enabled):
241                                                self.dprint("Creating link...")
242                                                os.symlink(path_mod_available,path_mod_enabled)
243                                        else:
244                                                self.dprint("Link exists, do nothing...")
245                        return [True]
246               
247                except Exception as e:
248                        print ("[ExportWebSitesServer] %s"%e)
249                        self.dprint(e)
250                        return [False,str(e)]
251        #def export_active
252       
253        def apache2_restart(self):
254                try:
255                        status, output = commands.getstatusoutput("systemctl restart apache2")
256                        self.dprint("*** APACHE2 Service ***")
257                        self.dprint("Status: %s"%status)
258                        self.dprint("Output: %s"%output)
259                        return [True,status,output]
260               
261                except Exception as e:
262                        print ("[ExportWebSitesServer] %s"%e)
263                        self.dprint(e)
264                        return [False,str(e)]
265        # def apache2_restart
266       
267        def sites_configuration(self):
268                try:
269                        modify=True
270                        path, dirs, files = next(os.walk(self.dir_export))
271                        number_files=len(files)
272                        self.dprint("*** Configuration File ***")
273                        if ( number_files > 0 ):
274                                self.dprint("Adding configuration line.....")
275                                if os.path.isfile(self.file_sites_configuration):
276                                        with open(self.file_sites_configuration, "r") as in_file:
277                                                buf = in_file.readlines()
278                                        with open(self.file_sites_configuration, "w") as out_file:
279                                                for line in buf:
280                                                        if  "lliurex-location" in line:
281                                                                modify=False
282                                                        else:
283                                                                if ( "<Directory /var/www/admin-center>" in line ) & (modify):
284                                                                        line = "include /etc/apache2/lliurex-location/*.conf\n" + line
285                                                        out_file.write(line)
286                        else:
287                                if os.path.isfile(self.file_sites_configuration):
288                                        self.dprint("Deleting configuration line.....")
289                                        self.dprint("Compare this lines:")
290                                        with open(self.file_sites_configuration, "r") as in_file:
291                                                buf = in_file.readlines()
292                                        with open(self.file_sites_configuration, "w") as out_file:
293                                                for line in buf:
294                                                        self.dprint(line)
295                                                        if "lliurex-location" in line:
296                                                                self.dprint("Deleting.......!!!!!!!!!!!!")
297                                                                line = "\n"
298                                                        out_file.write(line)
299                               
300                        return [True]
301               
302                except Exception as e:
303                        print ("[ExportWebSitesServer] %s"%e)
304                        self.dprint(e)
305                        return [False,str(e)]
306        #def sites_configuration
Note: See TracBrowser for help on using the repository browser.