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

Last change on this file since 544 was 544, checked in by jrpelegrina, 5 years ago

First release to xenial

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