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

Last change on this file since 144 was 144, checked in by hectorgh, 3 years ago

adding project files

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