source: lliurex-owncloud/trunk/fuentes/install-files/usr/sbin/lliurex-owncloud-setup @ 545

Last change on this file since 545 was 545, checked in by jrpelegrina, 4 years ago

Updated depends

  • Property svn:executable set to *
File size: 6.1 KB
Line 
1#!/usr/bin/env python
2# -*- coding: utf-8 -*
3
4import os
5import xmlrpclib
6import gi
7gi.require_version('Gtk','3.0')
8gi.require_version('PangoCairo','1.0')
9from gi.repository import Gtk, Gdk, GObject, GLib, PangoCairo, Pango
10import threading
11
12import signal
13signal.signal(signal.SIGINT, signal.SIG_DFL)
14
15import gettext
16gettext.textdomain('lliurex-owncloud')
17_ = gettext.gettext
18
19class OwnCloud:
20       
21        def __init__(self):
22               
23                self.executing=False
24                self.start_gui()
25               
26        #def __ini__
27       
28        def start_gui(self):
29               
30                builder=Gtk.Builder()
31                builder.set_translation_domain("lliurex-owncloud")
32                glade_path="/usr/share/lliurex-owncloud/rsrc/lliurex-owncloud-setup.glade"
33                builder.add_from_file(glade_path)
34               
35                self.window=builder.get_object("window1")
36                self.accept_button=builder.get_object("accept_button")
37                self.cancel_button=builder.get_object("cancel_button")
38                self.dbname_entry=builder.get_object("dbname_entry")
39                self.dbuser_entry=builder.get_object("dbuser_entry")
40                self.dbpwd_entry=builder.get_object("dbpwd_entry")
41                self.dbpwd_entry2=builder.get_object("dbpwd_entry2")
42                self.user_entry=builder.get_object("user_entry")
43                self.pwd_entry=builder.get_object("pwd_entry")
44                self.pwd_entry2=builder.get_object("pwd_entry2")
45                self.msg_label=builder.get_object("msg_label")
46               
47                self.window.connect("destroy",self.exit)
48                self.accept_button.connect("clicked",self.accept_clicked)
49                self.cancel_button.connect("clicked",self.exit)
50               
51                self.progress_window=builder.get_object("window2")
52                self.pbar=builder.get_object("progressbar")
53               
54
55                self.window.show()
56               
57                self.window.set_name("BLUE")
58                self.progress_window.set_name("BLACK")
59                label1=builder.get_object("label1")
60                label1.set_name("WHITE")
61                label2=builder.get_object("label2")
62                label2.set_name("WHITE")
63                label3=builder.get_object("label3")
64                label3.set_name("WHITE")
65                label4=builder.get_object("label4")
66                label4.set_name("WHITE")
67                label5=builder.get_object("label5")
68                label5.set_name("WHITE")
69                label6=builder.get_object("label6")
70                label6.set_name("WHITE")
71                label7=builder.get_object("label7")
72                label7.set_name("WHITE")
73                label8=builder.get_object("label8")
74                label8.set_name("WHITE")
75                label9=builder.get_object("label9")
76                label9.set_name("WHITE")
77                label9=builder.get_object("label10")
78                label9.set_name("WHITE")
79                self.msg_label.set_name("WHITE")
80               
81                self.set_defaults()
82                self.set_css_info()
83               
84                Gtk.main()
85               
86        #def start_gui
87       
88        def set_defaults(self):
89               
90                self.dbname_entry.set_text("owncloud")
91                self.dbuser_entry.set_text("owncloud_dbu")
92                self.user_entry.set_text("owncloud_admin")
93               
94        #def set_defaults
95       
96        def set_css_info(self):
97               
98
99                css = """
100               
101                #BLUE {
102                        background-image:-gtk-gradient (linear, left top, left bottom, from (#1d2d44),  to (#1d2d44));;
103               
104                }
105               
106                #BLACK{
107                        background-image:-gtk-gradient (linear, left top, left bottom, from (#000000),  to (#000000));;
108               
109                }
110               
111               
112                GtkFrame{
113                        background-image:-gtk-gradient (linear, left top, left bottom, from (#35537a),  to (#35537a));;
114                }
115               
116                #WHITE {
117                        color: white;
118                        text-shadow: 0px 1px black;
119                }               
120               
121                """
122               
123                self.style_provider=Gtk.CssProvider()
124                self.style_provider.load_from_data(css)
125               
126                Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),self.style_provider,Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
127               
128               
129        #def set_css_info
130       
131        def exit(self,widget):
132               
133                Gtk.main_quit()
134               
135        #def exit
136       
137        def get_values(self):
138               
139                self.template={}
140               
141                self.template["DB_NAME"]=self.dbname_entry.get_text()
142                self.template["DB_USER"]=self.dbuser_entry.get_text()
143                self.template["DB_PWD"]=self.dbpwd_entry.get_text()
144                self.template["DB_PWD2"]=self.dbpwd_entry2.get_text()
145               
146                self.template["ADMIN_USER"]=self.user_entry.get_text()
147                self.template["ADMIN_PWD"]=self.pwd_entry.get_text()
148                self.template["ADMIN_PWD2"]=self.pwd_entry2.get_text()
149               
150               
151        #def get_values
152       
153       
154        def accept_clicked(self,widget):
155               
156                self.get_values()
157                ret,msg=self.parse_values()
158                if not ret:
159                        self.msg_label.set_markup("<span foreground='red'>"+msg+"</span>")
160                        return
161                       
162                '''     
163                ip="server"
164                c=xmlrpclib.ServerProxy("https://%s:9779"%ip)
165                n4d_key=self.get_n4d_key()
166               
167                status,ret=c.initialize_owncloud(n4d_key,"LliurexOwncloud",self.template)
168               
169                if status:
170                        os.system("zero-center set-configured lliurex-owncloud")
171                        self.msg_label.set_markup("<b>"+"Initialization successful"+"</b>")
172                        self.accept_button.set_sensitive(False)
173                else:
174                        self.msg_label.set_markup("<span foreground='red'>"+ret+"</span>")
175                        os.system("zero-center set-failed lliurex-owncloud")
176                '''
177               
178                self.executing=True
179               
180                self.progress_window.show()
181               
182                GLib.timeout_add(50,self.pulsate)
183                self.ret_msg=""
184                self.ret_status=False
185                t=threading.Thread(target=self.execute,args=())
186                t.daemon=True
187                t.start()
188               
189               
190        #def accept_clicked
191       
192        def pulsate(self):
193               
194               
195                if self.executing:     
196                        self.pbar.pulse()
197                else:
198                       
199                        if self.ret_status:
200                                os.system("zero-center set-configured lliurex-owncloud")
201                                self.msg_label.set_markup("<b>"+_("Initialization successful")+"</b>")
202                                self.accept_button.set_sensitive(False)
203                        else:
204                                self.msg_label.set_markup("<span foreground='red'>"+self.ret_msg+"</span>")
205                                os.system("zero-center set-failed lliurex-owncloud")           
206
207                return self.executing
208               
209               
210        #def pulsate
211       
212        def execute(self):
213               
214               
215                ip="server"
216                c=xmlrpclib.ServerProxy("https://%s:9779"%ip)
217                n4d_key=self.get_n4d_key()
218               
219                self.ret_status,self.ret_msg=c.initialize_owncloud(n4d_key,"LliurexOwncloud",self.template)
220               
221               
222                self.executing=False
223                self.progress_window.hide()
224               
225                return False
226               
227        #def execute
228       
229       
230        def get_n4d_key(self):
231               
232                try:
233                        f=open("/etc/n4d/key")
234                        key=f.readline().strip("\n")
235                        f.close()
236                        return key
237                except:
238                        return None
239               
240        #def get_n4d_key
241       
242        def parse_values(self):
243               
244                for item in self.template:
245                        if self.template[item]=="" or self.template[item]==None:
246                                return [False,"There are empty fields to be completed"]
247                               
248                if self.template["DB_PWD"]!=self.template["DB_PWD2"]:
249                        return [False,"DB Passwords do not match"]
250                       
251                if self.template["ADMIN_PWD"]!=self.template["ADMIN_PWD2"]:
252                        return [False,"Administrator passwords do not match"]
253                       
254                return [True,""]
255               
256        #def parse_values
257       
258#class owncloud
259
260if __name__=="__main__":
261       
262        o=OwnCloud()
263       
Note: See TracBrowser for help on using the repository browser.