source: n4d-network/trunk/fuentes/n4d-nat-frontend.install/usr/share/n4d-nat-frontend/nat-manager.py @ 2369

Last change on this file since 2369 was 2369, checked in by jrpelegrina, 3 years ago

WIP in i18n support in nat-manager gui

File size: 4.4 KB
Line 
1import gi
2gi.require_version('Gtk','3.0')
3
4from gi.repository import Gtk
5import xmlrpclib
6import sys
7import os
8import os.path
9
10import signal
11
12signal.signal(signal.SIGINT, signal.SIG_DFL)
13
14import gettext
15gettext.textdomain('n4d-nat-frontend')
16_ = gettext.gettext
17
18class NatManager:
19       
20        def __init__(self,ip="localhost"):
21                status=self.read_key()
22                #hack for testing
23                #ip="server"
24                #self.key="oua470v052tt1os1H8mpW8HhwUqqELGzEn40GUqdWKTpBsg67F"
25                #
26                self.client=xmlrpclib.ServerProxy("https://"+ip+":9779")
27               
28                if not status:
29                        print("[!] You need root privileges to run this program [!]")
30                        label = Gtk.Label(_("You need root privileges to run nat-manager"))
31                        dialog = Gtk.Dialog("Warning", None, Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, (Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT))
32                        dialog.vbox.pack_start(label,True,True,10)
33                        label.show()
34                        dialog.set_border_width(6)
35                        response = dialog.run()
36                        dialog.destroy()
37                        sys.exit(0)
38                self.status={}
39                self.get_status_list()
40                self.build_gui()
41       
42        def read_key(self):
43               
44                try:
45                        f=open("/etc/n4d/key")
46                        self.key=f.readline().strip("\n")
47                        f.close()
48                        #hack
49                        return True
50                except:
51                        return False
52
53        #def check_perms
54       
55        def get_status_list(self):
56               
57               
58               
59                try:
60                       
61                        ret=self.client.get_nat("","NetworkManager")
62                       
63                        self.status["nat"]=ret["status"]
64                        ret=self.client.get_routing("","NetworkManager")
65                        self.status["routing"]=ret["status"]
66                        self.status["nat_persistence"]=True
67                        self.status["routing_persistence"]=True
68                       
69                       
70                except Exception as e:
71                        self.msg_label.set_text(_("N4D error: ") + str(e))
72                        #set msg error
73               
74                #print self.status
75               
76        #def get_status_list
77       
78        def build_gui(self):
79               
80                builder=Gtk.Builder()
81                builder.set_translation_domain('n4d-nat-frontend')
82                if os.path.exists("/srv/svn/pandora/n4d-network/trunk/n4d-nat-frontend.install/usr/share/n4d-nat-frontend/rsrc/nat-manager.glade"):
83                        builder.add_from_file("/srv/svn/pandora/n4d-network/trunk/n4d-nat-frontend.install/usr/share/n4d-nat-frontend/rsrc/nat-manager.glade")
84                else:
85                        builder.add_from_file("/usr/share/n4d-nat-frontend/rsrc/nat-manager.ui")
86                       
87                self.window=builder.get_object("window")
88               
89                self.routing_enabled_rbutton=builder.get_object("routing_enabled_radiobutton")
90                self.routing_disabled_rbutton=builder.get_object("routing_disabled_radiobutton")
91               
92                self.routing_enabled_rbutton.set_active(self.status["routing"])
93                self.routing_disabled_rbutton.set_active(not self.status["routing"])
94               
95                self.nat_enabled_rbutton=builder.get_object("nat_enabled_radiobutton")
96                self.nat_disabled_rbutton=builder.get_object("nat_disabled_radiobutton")
97               
98                self.nat_enabled_rbutton.set_active(self.status["nat"])
99                self.nat_disabled_rbutton.set_active(not self.status["nat"])
100
101               
102                #self.nat_persistence_cbutton=builder.get_object("nat_persistence_checkbutton")
103                #self.nat_persistence_cbutton.set_active(self.status["nat_persistence"])
104               
105                #self.routing_persistence_cbutton=builder.get_object("routing_persistence_checkbutton")
106                #self.routing_persistence_cbutton.set_active(self.status["routing_persistence"])
107               
108                self.msg_label=builder.get_object("msg_label")
109               
110                self.apply_button=builder.get_object("apply_button")
111                self.close_button=builder.get_object("close_button")
112               
113                self.apply_button.connect("clicked",self.apply_changes)
114                self.close_button.connect("clicked",self.close_window)
115                self.window.connect("destroy",self.close_window)
116               
117                self.window.show_all()
118                Gtk.main()
119               
120               
121               
122        #def build_gui
123       
124       
125        def apply_changes(self,widget):
126               
127                self.status["routing"]=self.routing_enabled_rbutton.get_active()
128                self.status["nat"]=self.nat_enabled_rbutton.get_active()
129                #self.status["routing_persiscence"]=self.routing_persistence_cbutton.get_active()
130                #self.status["nat_persiscente"]=self.nat_persistence_cbutton.get_active()
131               
132               
133               
134               
135                try:
136                        self.client.set_nat(self.key,"NetworkManager",self.status["nat"],self.status["nat_persistence"])
137                        self.client.set_routing(self.key,"NetworkManager",self.status["routing"],self.status["routing_persistence"])
138                        self.msg_label.set_text(_("Changes saved successfuly"))
139                except Exception as e:
140                        self.msg_label.set_text(_("Operation failed because: ") + str(e))
141               
142               
143        #def apply_changes
144       
145        def close_window(self,widget):
146               
147                Gtk.main_quit()
148                sys.exit(0)
149               
150        #def close_window
151       
152       
153#class NatManager
154
155def usage():
156        print("USAGE:")
157        print("\tnat-manager [ -ip TEMPLATE_FILE -u USER -p PASSWORD ]")
158
159if __name__=="__main__":
160       
161        nm=NatManager()
162       
Note: See TracBrowser for help on using the repository browser.