~ubuntu-branches/ubuntu/maverick/gui-ufw/maverick

« back to all changes in this revision

Viewing changes to view/guiGufw.py

  • Committer: Bazaar Package Importer
  • Author(s): Devid Antonio Filoni
  • Date: 2010-03-15 22:19:04 UTC
  • mfrom: (1.1.15 upstream)
  • Revision ID: james.westby@ubuntu.com-20100315221904-bsiaax6ayc9j124o
Tags: 10.04.2-0ubuntu1
* New upstream release (LP: #538649).
* Do not install /etc/gufw/*.cfg anymore, only remove /etc/gufw/gufw.cfg if
  needed (remove debian/postinst).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Gufw  - http://gufw.tuxfamily.org
2
 
# Copyright (C) 2009 Marcos Alvarez Costales
3
 
#
4
 
# Gufw is free software; you can redistribute it and/or modify
5
 
# it under the terms of the GNU General Public License as published by
6
 
# the Free Software Foundation; either version 3 of the License, or
7
 
# (at your option) any later version.
8
 
9
 
# Gufw is distributed in the hope that it will be useful,
10
 
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
# GNU General Public License for more details.
13
 
14
 
# You should have received a copy of the GNU General Public License
15
 
# along with Gufw; if not, see http://www.gnu.org/licenses for more
16
 
# information.
17
 
 
18
 
 
19
 
import pygtk
20
 
import gtk, gtk.glade
21
 
import gobject
22
 
 
23
 
class Guigufw:
24
 
 
25
 
    def __init__(self, variable, firewall):
26
 
 
27
 
        self.variable = variable
28
 
        self.firewall = firewall
29
 
        
30
 
        self.glade = gtk.glade.XML(self.variable.get_path("glade"))
31
 
        self.model = gtk.ListStore (gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING,
32
 
                                    gobject.TYPE_STRING, gobject.TYPE_STRING)        
33
 
        self.render         = gtk.CellRendererText()
34
 
        self.serv_prog_type = self.variable.get_constant("service_disabled")
35
 
        
36
 
        self.set_objects_glade()
37
 
        
38
 
        self.rules = []
39
 
        self.log_txt_buffer = self.log_txt.get_buffer()
40
 
        
41
 
        self.set_rules_header()
42
 
        self.set_initial_values()
43
 
        self.set_window_values("")
44
 
        
45
 
        self.glade.signal_autoconnect(self)
46
 
        self.glade.get_widget("winMain").show()
47
 
 
48
 
        gtk.main()
49
 
 
50
 
 
51
 
# INITIALS SETS
52
 
 
53
 
    # Set references to objects
54
 
    def set_objects_glade(self):
55
 
        # Main Window
56
 
        self.win_main            = self.glade.get_widget("winMain")
57
 
        self.cb_enabled_firewall = self.glade.get_widget("cbEnabledFirewall")
58
 
        self.cb_policy_incoming  = self.glade.get_widget("cbPolicyIncoming")
59
 
        self.cb_policy_outgoing  = self.glade.get_widget("cbPolicyOutgoing")
60
 
        self.shield              = self.glade.get_widget("imgShield")
61
 
        self.tv_rules            = self.glade.get_widget("tvRules")
62
 
        self.btn_add_window      = self.glade.get_widget("btnAddWindow")
63
 
        self.btn_remove_rule     = self.glade.get_widget("btnRemove")
64
 
        self.status_bar          = self.glade.get_widget("statusBar")
65
 
        self.progress_bar        = self.glade.get_widget("progressBar")
66
 
        
67
 
        # Rules Window
68
 
        self.extended_actions = self.glade.get_widget("cbExtendedActions")
69
 
        
70
 
        self.insert_number_preconf     = self.glade.get_widget("sbInsertNumberPreconf")
71
 
        self.box_insert_number_preconf = self.glade.get_widget("boxInsertNumberPreconf")
72
 
        self.direction_preconf         = self.glade.get_widget("cbDirectionPreconf")
73
 
        self.action_preconf            = self.glade.get_widget("cbActionPreconf")
74
 
        self.direction_preconf         = self.glade.get_widget("cbDirectionPreconf")
75
 
        self.log_preconf               = self.glade.get_widget("cbLogPreconf")
76
 
        self.box_log_preconf           = self.glade.get_widget("boxLogPreconf")
77
 
        self.type_preconf              = self.glade.get_widget("cbTypePreconf")
78
 
        self.service_preconf           = self.glade.get_widget("cbServicePreconf")
79
 
        self.box_service_preconf       = self.glade.get_widget("boxServicePreconf")
80
 
        self.program_preconf           = self.glade.get_widget("cbProgramPreconf")
81
 
        self.box_program_preconf       = self.glade.get_widget("boxProgramPreconf")
82
 
 
83
 
        self.insert_number_simple      = self.glade.get_widget("sbInsertNumberSimple")
84
 
        self.box_insert_number_simple = self.glade.get_widget("boxInsertNumberSimple")
85
 
        self.direction_simple         = self.glade.get_widget("cbDirectionSimple")
86
 
        self.action_simple            = self.glade.get_widget("cbActionSimple")
87
 
        self.direction_simple         = self.glade.get_widget("cbDirectionSimple")
88
 
        self.log_simple               = self.glade.get_widget("cbLogSimple")
89
 
        self.box_log_simple           = self.glade.get_widget("boxLogSimple")
90
 
        self.port_simple              = self.glade.get_widget("entryPortSimple")
91
 
        self.proto_simple             = self.glade.get_widget("cbProtoSimple")
92
 
        
93
 
        self.insert_number_advanced     = self.glade.get_widget("sbInsertNumberAdvanced")
94
 
        self.box_insert_number_advanced = self.glade.get_widget("boxInsertNumberAdvanced")
95
 
        self.action_advanced            = self.glade.get_widget("cbActionAdvanced")
96
 
        self.direction_advanced         = self.glade.get_widget("cbDirectionAdvanced")
97
 
        self.direction_advanced         = self.glade.get_widget("cbDirectionAdvanced")
98
 
        self.log_advanced               = self.glade.get_widget("cbLogAdvanced")
99
 
        self.box_log_advanced           = self.glade.get_widget("boxLogAdvanced")
100
 
        self.proto_advanced             = self.glade.get_widget("cbProtoAdvanced")
101
 
        self.fromip_advanced            = self.glade.get_widget("entryFromIpAdvanced")
102
 
        self.portfrom_advanced          = self.glade.get_widget("entryPortFromAdvanced")
103
 
        self.toip_advanced              = self.glade.get_widget("entryToIpAdvanced")
104
 
        self.portto_advanced            = self.glade.get_widget("entryPortToAdvanced")
105
 
        self.rules_notebook             = self.glade.get_widget("rulesNotebook")
106
 
        self.add_btn_add                = self.glade.get_widget("btnAddRule")
107
 
        
108
 
        # Log Window
109
 
        self.winlog        = self.glade.get_widget("winLog")
110
 
        self.log_txt       = self.glade.get_widget("logTxt")
111
 
        self.log_btn_close = self.glade.get_widget("btnCloseLog")
112
 
        self.server_script = self.glade.get_widget("cbServerScript")
113
 
        
114
 
        
115
 
        # Preference Window
116
 
        self.winpreferences = self.glade.get_widget("winPreferences")
117
 
        self.cb_ufw_log     = self.glade.get_widget("cbUfwLog")
118
 
        self.lbl_ufw_level  = self.glade.get_widget("lblLogLevel")
119
 
        self.cb_ufw_level   = self.glade.get_widget("cbLogLevel")
120
 
        self.cb_gufw_log    = self.glade.get_widget("cbGufwLog") 
121
 
        self.pref_btn_close = self.glade.get_widget("btnClosePref")
122
 
        
123
 
        # Menu
124
 
        self.menu_log   = self.glade.get_widget("menuLog")
125
 
        self.menu_pref  = self.glade.get_widget("menuPreferences")
126
 
        
127
 
        # About Dialog
128
 
        self.winabout = self.glade.get_widget("winAbout")
129
 
        self.winabout.set_translator_credits(self.variable.get_constant("translators_credits"))
130
 
 
131
 
        
132
 
    # Set initial values
133
 
    def set_rules_header(self):
134
 
        # Mode
135
 
        self.tv_rules.set_model(self.model)
136
 
        self.tv_rules.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
137
 
 
138
 
        # Font
139
 
        self.render.set_property("font", self.variable.get_constant("font_rules"))
140
 
 
141
 
        # The format columns
142
 
        tree_header = gtk.TreeViewColumn (self.variable.get_text("001"), self.render, text=1, foreground=4)
143
 
        tree_header.set_resizable(True)
144
 
        self.tv_rules.append_column (tree_header)
145
 
        
146
 
        tree_header = gtk.TreeViewColumn (self.variable.get_text("002"), self.render, text=2, foreground=4)
147
 
        tree_header.set_resizable(True)
148
 
        self.tv_rules.append_column (tree_header)
149
 
        
150
 
        tree_header = gtk.TreeViewColumn (self.variable.get_text("003"), self.render, text=3, foreground=4)
151
 
        self.tv_rules.append_column (tree_header)
152
 
    
153
 
    
154
 
    # Set initial values in Interface
155
 
    def set_initial_values(self):
156
 
        # Restore previus size window
157
 
        self.get_old_size_window()
158
 
 
159
 
        # Set hide extended actions
160
 
        self.box_insert_number_preconf.hide()
161
 
        self.box_insert_number_simple.hide()
162
 
        self.box_insert_number_advanced.hide()
163
 
 
164
 
        self.box_log_preconf.hide()
165
 
        self.box_log_simple.hide()
166
 
        self.box_log_advanced.hide()
167
 
        
168
 
        self.box_service_preconf.hide()
169
 
        
170
 
        # ComboBoxs
171
 
        self.direction_simple.set_active(0)
172
 
        self.action_simple.set_active(0)     
173
 
        self.log_simple.set_active(0)
174
 
        self.proto_simple.set_active(0)    
175
 
          
176
 
        self.direction_preconf.set_active(0)
177
 
        self.action_preconf.set_active(0)    
178
 
        self.log_preconf.set_active(0)
179
 
        self.type_preconf.set_active(0)      
180
 
        self.service_preconf.set_active(0)   
181
 
        self.program_preconf.set_active(0)
182
 
        
183
 
        self.direction_advanced.set_active(0)
184
 
        self.action_advanced.set_active(0)   
185
 
        self.log_advanced.set_active(0)
186
 
        self.proto_advanced.set_active(0)    
187
 
        
188
 
        # Focus
189
 
        self.btn_add_window.grab_focus()
190
 
        
191
 
    
192
 
    # Set initials status to glade objects
193
 
    def set_window_values(self, status_bar):
194
 
        # Firewall Enabled
195
 
        self.cb_enabled_firewall.set_sensitive(1)
196
 
        if self.firewall.status == self.variable.get_constant("enabled"):
197
 
            self.cb_enabled_firewall.set_active(1)
198
 
 
199
 
        # Allow/Deny/Reject Incoming
200
 
        if self.firewall.default_incoming == self.variable.get_constant("deny"):
201
 
            self.cb_policy_incoming.set_active(0)
202
 
        elif self.firewall.default_incoming == self.variable.get_constant("reject"):
203
 
            self.cb_policy_incoming.set_active(1)
204
 
        elif self.firewall.default_incoming == self.variable.get_constant("allow"):
205
 
            self.cb_policy_incoming.set_active(2)
206
 
            
207
 
        # Allow/Deny/Reject Outgoing
208
 
        if self.firewall.default_outgoing == self.variable.get_constant("deny"):
209
 
            self.cb_policy_outgoing.set_active(0)
210
 
        elif self.firewall.default_outgoing == self.variable.get_constant("reject"):
211
 
            self.cb_policy_outgoing.set_active(1)
212
 
        elif self.firewall.default_outgoing == self.variable.get_constant("allow"):
213
 
            self.cb_policy_outgoing.set_active(2)
214
 
               
215
 
        # Status bar
216
 
        self.status_bar.push(1, status_bar)
217
 
        
218
 
        # Set values by status firewall
219
 
        if self.firewall.status == self.variable.get_constant("disabled"):
220
 
            # Sensitive values
221
 
            self.cb_policy_incoming.set_sensitive(0)
222
 
            self.cb_policy_outgoing.set_sensitive(0)
223
 
            self.add_btn_add.set_sensitive(0)
224
 
            self.btn_remove_rule.set_sensitive(0)
225
 
            # Shield
226
 
            if not self.variable.dev:
227
 
                self.shield.set_from_file(self.variable.get_path("shield_disable_disable"))
228
 
            else:
229
 
                self.shield.set_from_file(self.variable.get_path("shield_disable_disable_dev"))
230
 
            
231
 
        else:
232
 
            
233
 
            # Get actual rules
234
 
            self.rules = self.firewall.get_rules_list()
235
 
            
236
 
            # Sensitive values
237
 
            self.cb_policy_incoming.set_sensitive(1)
238
 
            self.cb_policy_outgoing.set_sensitive(1)
239
 
            self.add_btn_add.set_sensitive(1)
240
 
            if len(self.rules) == 0:
241
 
                self.btn_remove_rule.set_sensitive(0)
242
 
            else:
243
 
                self.btn_remove_rule.set_sensitive(1)
244
 
 
245
 
            # Shields
246
 
            if not self.variable.dev:
247
 
                shield = "shield_" + self.firewall.default_incoming + "_" + self.firewall.default_outgoing
248
 
                self.shield.set_from_file(self.variable.get_path(shield))
249
 
            else:
250
 
                shield_dev = "shield_" + self.firewall.default_incoming + "_" + self.firewall.default_outgoing + "_dev"
251
 
                self.shield.set_from_file(self.variable.get_path(shield_dev))
252
 
                
253
 
        # Menu
254
 
        self.menu_pref.set_sensitive(1)
255
 
        if self.firewall.gufw_log == self.variable.get_constant("gufw_log_on"):
256
 
            self.menu_log.set_sensitive(1)
257
 
        else:
258
 
            self.menu_log.set_sensitive(0)
259
 
           
260
 
        # Set actual rules
261
 
        self.set_rules_text()
262
 
 
263
 
        
264
 
    # View rules in GUI
265
 
    def set_rules_text(self):
266
 
        
267
 
        self.model.clear() 
268
 
 
269
 
        if self.firewall.status == self.variable.get_constant("disabled"):
270
 
            return
271
 
        
272
 
        row = 0
273
 
        
274
 
        for rule in self.rules:
275
 
        
276
 
            row += 1
277
 
            
278
 
            iterador = self.model.insert(row)
279
 
            
280
 
            # Values
281
 
            self.model.set_value(iterador, 0, row) # Row (use for remove rule)
282
 
            self.model.set_value(iterador, 1, rule[0])
283
 
            self.model.set_value(iterador, 2, rule[1])
284
 
            self.model.set_value(iterador, 3, rule[2])
285
 
            
286
 
            # Color Allow/Deny/Reject/Limit
287
 
            # IN mode (equal to normal mode, persist code for clear read)
288
 
            if rule[1] == self.variable.get_text("029"): 
289
 
                if self.firewall.default_incoming != self.variable.get_constant("allow"):
290
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_red")) 
291
 
                else:
292
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
293
 
                    
294
 
            # Deny?
295
 
            elif rule[1] == self.variable.get_text("028"):
296
 
                if self.firewall.default_incoming != self.variable.get_constant("deny"):
297
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_green"))
298
 
                else:
299
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
300
 
                    
301
 
            # Reject
302
 
            elif rule[1] == self.variable.get_text("031"):
303
 
                if self.firewall.default_incoming != self.variable.get_constant("reject"):
304
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_blue"))
305
 
                else:
306
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
307
 
            
308
 
            # Limit?
309
 
            elif rule[1] == self.variable.get_text("030"):
310
 
                self.model.set_value(iterador, 4, self.variable.get_constant("color_orange"))
311
 
            
312
 
            
313
 
            # OUT mode
314
 
            elif rule[1] == self.variable.get_text("033"): 
315
 
                if self.firewall.default_outgoing != self.variable.get_constant("allow"):
316
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_red")) 
317
 
                else:
318
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
319
 
                    
320
 
            # Deny?
321
 
            elif rule[1] == self.variable.get_text("032"):
322
 
                if self.firewall.default_outgoing != self.variable.get_constant("deny"):
323
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_green"))
324
 
                else:
325
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
326
 
                    
327
 
            # Reject
328
 
            elif rule[1] == self.variable.get_text("035"):
329
 
                if self.firewall.default_outgoing != self.variable.get_constant("reject"):
330
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_blue"))
331
 
                else:
332
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
333
 
            
334
 
            # Limit?
335
 
            elif rule[1] == self.variable.get_text("034"):
336
 
                self.model.set_value(iterador, 4, self.variable.get_constant("color_orange"))
337
 
                
338
 
                
339
 
            # Normal mode
340
 
            # Allow?
341
 
            elif rule[1] == self.variable.get_text("037"): 
342
 
                if self.firewall.default_incoming != self.variable.get_constant("allow"):
343
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_red")) 
344
 
                else:
345
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
346
 
                    
347
 
            # Deny?
348
 
            elif rule[1] == self.variable.get_text("036"):
349
 
                if self.firewall.default_incoming != self.variable.get_constant("deny"):
350
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_green"))
351
 
                else:
352
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
353
 
                    
354
 
            # Reject
355
 
            elif rule[1] == self.variable.get_text("039"):
356
 
                if self.firewall.default_incoming != self.variable.get_constant("reject"):
357
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_blue"))
358
 
                else:
359
 
                    self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
360
 
            
361
 
            # Limit?
362
 
            elif rule[1] == self.variable.get_text("038"):
363
 
                self.model.set_value(iterador, 4, self.variable.get_constant("color_orange"))
364
 
                
365
 
 
366
 
 
367
 
 
368
 
 
369
 
# EVENTS
370
 
 
371
 
 
372
 
# CLOSE WINDOWS
373
 
 
374
 
    # Close Windows
375
 
    def winMain_delete_event_cb(self, widget, event):
376
 
        self.save_size_window()
377
 
        gtk.main_quit()
378
 
 
379
 
    # Menu Quit
380
 
    def menuQuit_activate_cb(self, widget):
381
 
        self.save_size_window()
382
 
        gtk.main_quit()
383
 
 
384
 
    # Button Add
385
 
    def btnAddWindow_clicked_cb(self, widget):
386
 
        self.glade.get_widget("winAdd").show()
387
 
        self.add_btn_add.grab_focus()
388
 
        self.btn_add_window.set_sensitive(0)
389
 
 
390
 
    # Close Window Add Rules
391
 
    def winAdd_delete_event_cb(self, widget, event):
392
 
        self.glade.get_widget("winAdd").hide()
393
 
        self.btn_add_window.set_sensitive(1)
394
 
        return True
395
 
 
396
 
    # Button Close Add Rules
397
 
    def btnCloseAdd_clicked_cb(self, widget):
398
 
        self.glade.get_widget("winAdd").hide()
399
 
        self.btn_add_window.set_sensitive(1)
400
 
        return True
401
 
 
402
 
    # Close preferences Window
403
 
    def winPreferences_delete_event_cb(self, widget, event):
404
 
        self.glade.get_widget("winPreferences").hide()
405
 
        return True
406
 
 
407
 
    # Close preferences Button
408
 
    def btnClosePref_clicked_cb(self, widget):
409
 
        self.glade.get_widget("winPreferences").hide()
410
 
        return True
411
 
 
412
 
    # Close Log Window
413
 
    def winLog_delete_event_cb(self, widget, event):
414
 
        self.glade.get_widget("winLog").hide()
415
 
        return True
416
 
 
417
 
    # Close Log button
418
 
    def btnCloseLog_clicked_cb(self, widget):
419
 
        self.glade.get_widget("winLog").hide()
420
 
        return True
421
 
 
422
 
    # Press Scape Key Add Window
423
 
    def winAdd_key_press_event_cb(self, widget, event):
424
 
        if event.keyval == gtk.keysyms.Escape :
425
 
            self.glade.get_widget("winAdd").hide()
426
 
            self.btn_add_window.set_sensitive(1)
427
 
            return True    
428
 
            
429
 
    # Press Scape Key Preferences Window
430
 
    def winPreferences_key_press_event_cb(self, widget, event):
431
 
        if event.keyval == gtk.keysyms.Escape :
432
 
            self.glade.get_widget("winPreferences").hide()
433
 
            return True  
434
 
    
435
 
    # Press Scape Key Log Window
436
 
    def winLog_key_press_event_cb(self, widget, event):
437
 
        if event.keyval == gtk.keysyms.Escape :
438
 
            self.glade.get_widget("winLog").hide()
439
 
            return True  
440
 
    
441
 
 
442
 
    # Save Actual size window
443
 
    def get_old_size_window(self):    
444
 
        win_width,win_height = self.firewall.get_old_size_window()
445
 
        screen_width  = gtk.gdk.screen_width()
446
 
        screen_height = gtk.gdk.screen_height()
447
 
 
448
 
        # Maximize
449
 
        if ( win_width == screen_width ) and ( win_height == screen_height ):
450
 
            self.win_main.maximize()
451
 
            
452
 
        # Not Maximize
453
 
        else:
454
 
            if win_width > screen_width:
455
 
                win_width = screen_width
456
 
            if win_height > screen_height:
457
 
                win_height = screen_height
458
 
                
459
 
            self.win_main.resize(win_width,win_height)
460
 
 
461
 
 
462
 
    # Save Actual size window
463
 
    def save_size_window(self):
464
 
        win_width, win_height = self.win_main.get_size()
465
 
        screen_width  = gtk.gdk.screen_width()
466
 
        screen_height = gtk.gdk.screen_height()
467
 
        
468
 
        if not self.firewall.maximized:
469
 
            if win_width > screen_width:
470
 
                win_width = screen_width
471
 
            if win_height > screen_height:
472
 
                win_height = screen_height
473
 
                
474
 
            self.firewall.save_size_window(win_width, win_height)
475
 
        
476
 
        else:
477
 
            self.firewall.save_size_window(screen_width, screen_height)
478
 
 
479
 
 
480
 
    def winMain_window_state_event_cb(self, widget, event):
481
 
        if event.changed_mask & gtk.gdk.WINDOW_STATE_MAXIMIZED:
482
 
            self.firewall.maximized = not self.firewall.maximized
483
 
 
484
 
 
485
 
 
486
 
 
487
 
 
488
 
# MENU
489
 
 
490
 
    # Show Preferences
491
 
    def menuPreferences_activate_cb(self, widget):
492
 
        # Set initial values
493
 
        if self.firewall.ufw_log == self.variable.get_constant("ufw_log_off"):
494
 
            self.cb_ufw_log.set_active(0)
495
 
            self.cb_ufw_level.set_sensitive(0)
496
 
            self.lbl_ufw_level.set_sensitive(0)
497
 
            
498
 
        else:
499
 
            self.cb_ufw_log.set_active(1)
500
 
            self.cb_ufw_level.set_sensitive(1)
501
 
            self.lbl_ufw_level.set_sensitive(1)
502
 
            if self.firewall.ufw_log == self.variable.get_constant("ufw_log_low"):
503
 
                self.cb_ufw_level.set_active(0)
504
 
            elif self.firewall.ufw_log == self.variable.get_constant("ufw_log_medium"):
505
 
                self.cb_ufw_level.set_active(1)
506
 
            elif self.firewall.ufw_log == self.variable.get_constant("ufw_log_high"):
507
 
                self.cb_ufw_level.set_active(2)
508
 
            else:
509
 
                self.cb_ufw_level.set_active(3)
510
 
            
511
 
            
512
 
        if self.firewall.gufw_log != self.variable.get_constant("gufw_log_off"):
513
 
            self.cb_gufw_log.set_active(1)
514
 
        else:
515
 
            self.cb_gufw_log.set_active(0)
516
 
            
517
 
        # Show Window
518
 
        self.status_bar.push(1, "")
519
 
        self.winpreferences.show()
520
 
        self.pref_btn_close.grab_focus()
521
 
        
522
 
 
523
 
    # Change Logging Level
524
 
    def cbLogLevel_changed_cb(self, widget):
525
 
        if ( self.cb_ufw_level.get_active() == 0 ) and ( self.firewall.ufw_log != self.variable.get_constant("ufw_log_low") ):
526
 
            self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_low"))
527
 
        elif ( self.cb_ufw_level.get_active() == 1 ) and ( self.firewall.ufw_log != self.variable.get_constant("ufw_log_medium") ):
528
 
            self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_medium"))
529
 
        elif ( self.cb_ufw_level.get_active() == 2 ) and ( self.firewall.ufw_log != self.variable.get_constant("ufw_log_high") ):
530
 
            self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_high"))
531
 
        elif ( self.cb_ufw_level.get_active() == 3 ) and ( self.firewall.ufw_log != self.variable.get_constant("ufw_log_full") ):
532
 
            self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_full"))
533
 
 
534
 
 
535
 
    # Open About Dialog
536
 
    def menuAbout_activate_cb(self, widget):
537
 
        self.status_bar.push(1, "")
538
 
        self.winabout.show()
539
 
        self.winabout.run()
540
 
        self.winabout.hide()
541
 
        
542
 
    
543
 
    # Log Window
544
 
    def menuLog_activate_cb(self, widget):
545
 
        # Set Log Text
546
 
        log_strings = self.firewall.get_log(self.server_script.get_active())
547
 
        self.log_txt_buffer.set_text(log_strings)
548
 
        self.status_bar.push(1, "")
549
 
        
550
 
        # Show Window
551
 
        self.winlog.show()
552
 
        self.log_btn_close.grab_focus()
553
 
        
554
 
        
555
 
    # Reset all rules
556
 
    def menuReset_activate_cb(self, widget):
557
 
        reset_dialog = gtk.MessageDialog(parent=self.win_main,
558
 
                                         flags=0,
559
 
                                         type=gtk.MESSAGE_WARNING,
560
 
                                         buttons=gtk.BUTTONS_OK_CANCEL,
561
 
                                         message_format=self.variable.get_text("025"))
562
 
        reset_dialog.format_secondary_markup(self.variable.get_text("026"))
563
 
        reset_dialog.set_title(self.variable.get_text("027"))
564
 
        reset_dialog.set_default_response(gtk.RESPONSE_CANCEL)
565
 
        reset_answer = reset_dialog.run()
566
 
        reset_dialog.destroy()
567
 
        if reset_answer == gtk.RESPONSE_OK:
568
 
            self.firewall.reset_all_rules()
569
 
            self.cb_enabled_firewall.set_active(0)
570
 
            self.set_window_values(self.variable.get_text("024"))
571
 
        
572
 
 
573
 
       
574
 
# BUTTONS PREFERENCE WINDOW 
575
 
 
576
 
    # ufw Log CheckButton
577
 
    def cbUfwLog_toggled_cb(self, widget):
578
 
        if self.firewall.ufw_log != self.variable.get_constant("ufw_log_off") and self.cb_ufw_log.get_active() == 0:
579
 
            self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_off"))
580
 
            self.cb_ufw_log.set_active(0)
581
 
            self.cb_ufw_level.set_sensitive(0)
582
 
            self.lbl_ufw_level.set_sensitive(0)
583
 
            
584
 
        elif self.firewall.ufw_log == self.variable.get_constant("ufw_log_off") and self.cb_ufw_log.get_active() == 1:
585
 
            self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_on"))
586
 
            self.cb_ufw_log.set_active(1)
587
 
            self.cb_ufw_level.set_sensitive(1)
588
 
            self.cb_ufw_level.set_active(0)
589
 
            self.lbl_ufw_level.set_sensitive(1)
590
 
            
591
 
        self.status_bar.push(1, "")
592
 
 
593
 
       
594
 
    # Gufw Log CheckButton   
595
 
    def cbGufwLog_toggled_cb(self, widget):
596
 
        if self.firewall.gufw_log != self.variable.get_constant("gufw_log_on") and self.cb_gufw_log.get_active() == 1:
597
 
            self.firewall.set_gufw_log(self.variable.get_constant("gufw_log_on"))
598
 
        elif self.firewall.gufw_log != self.variable.get_constant("gufw_log_off") and self.cb_gufw_log.get_active() == 0:
599
 
            self.firewall.set_gufw_log(self.variable.get_constant("gufw_log_off"))
600
 
        
601
 
        self.set_window_values("")
602
 
 
603
 
 
604
 
 
605
 
 
606
 
 
607
 
 
608
 
 
609
 
# BUTTONS LOG WINDOW
610
 
 
611
 
    # Clear Log
612
 
    def btnClearLog_clicked_cb(self, widget):
613
 
        self.firewall.refresh_log()
614
 
        self.log_txt_buffer.set_text("")
615
 
        self.log_btn_close.grab_focus()
616
 
 
617
 
        
618
 
    # Server Script
619
 
    def cbServerScript_toggled_cb(self, widget):
620
 
        # Set Log Text
621
 
        log_strings  = self.firewall.get_log(self.server_script.get_active())
622
 
        self.log_txt_buffer.set_text(log_strings)
623
 
 
624
 
 
625
 
 
626
 
 
627
 
       
628
 
# BUTTONS MAIN WINDOW
629
 
       
630
 
    # Button Firewall Enabled
631
 
    def cbEnabledFirewall_clicked_cb(self, widget):
632
 
        if self.firewall.status == self.variable.get_constant("enabled"):
633
 
            self.firewall.set_status(self.variable.get_constant("disabled"))
634
 
            self.add_btn_add.set_sensitive(0)
635
 
            self.set_window_values(self.variable.get_text("009"))
636
 
        else:
637
 
            self.firewall.set_status(self.variable.get_constant("enabled"))
638
 
            self.add_btn_add.set_sensitive(1)
639
 
            self.set_window_values(self.variable.get_text("008"))
640
 
            
641
 
 
642
 
    # Policy (Deny/Allow/Reject All) Incoming
643
 
    def cbPolicyIncoming_changed_cb(self, widget):
644
 
        # Apply?
645
 
        if self.firewall.default_incoming == self.variable.get_constant("deny") and self.cb_policy_incoming.get_active() == 0:
646
 
            return
647
 
        if self.firewall.default_incoming == self.variable.get_constant("reject") and self.cb_policy_incoming.get_active() == 1:
648
 
            return
649
 
        if self.firewall.default_incoming == self.variable.get_constant("allow") and self.cb_policy_incoming.get_active() == 2:
650
 
            return
651
 
        
652
 
        if self.cb_policy_incoming.get_active() == 0:
653
 
            self.firewall.set_default("X", self.variable.get_constant("deny"))
654
 
            self.set_window_values(self.variable.get_text("006"))
655
 
            return
656
 
        elif self.cb_policy_incoming.get_active() == 1:
657
 
            self.firewall.set_default("X", self.variable.get_constant("reject"))
658
 
            self.set_window_values(self.variable.get_text("011"))
659
 
            return
660
 
        elif self.cb_policy_incoming.get_active() == 2:
661
 
            self.firewall.set_default("X", self.variable.get_constant("allow"))
662
 
            self.set_window_values(self.variable.get_text("007"))
663
 
            
664
 
            
665
 
    # Policy (Deny/Allow/Reject All) Outgoing
666
 
    def cbPolicyOutgoing_changed_cb(self, widget):
667
 
        # Apply?
668
 
        if self.firewall.default_outgoing == self.variable.get_constant("deny") and self.cb_policy_outgoing.get_active() == 0:
669
 
            return
670
 
        if self.firewall.default_outgoing == self.variable.get_constant("reject") and self.cb_policy_outgoing.get_active() == 1:
671
 
            return
672
 
        if self.firewall.default_outgoing == self.variable.get_constant("allow") and self.cb_policy_outgoing.get_active() == 2:
673
 
            return
674
 
        
675
 
        if self.cb_policy_outgoing.get_active() == 0:
676
 
            self.firewall.set_default("", self.variable.get_constant("deny"))
677
 
            self.set_window_values(self.variable.get_text("021"))
678
 
            return
679
 
        elif self.cb_policy_outgoing.get_active() == 1:
680
 
            self.firewall.set_default("", self.variable.get_constant("reject"))
681
 
            self.set_window_values(self.variable.get_text("023"))
682
 
            return
683
 
        elif self.cb_policy_outgoing.get_active() == 2:
684
 
            self.firewall.set_default("", self.variable.get_constant("allow"))
685
 
            self.set_window_values(self.variable.get_text("022"))
686
 
            
687
 
 
688
 
    # Button Remove Rules(s)
689
 
    def btnRemove_clicked_cb(self, widget):
690
 
        # Remove in 2 plan
691
 
        task = self.remove_rules()
692
 
        gobject.idle_add(task.next)
693
 
        
694
 
    
695
 
    # Remove Rules Method
696
 
    def remove_rules(self):
697
 
        tree,iter  = self.tv_rules.get_selection().get_selected_rows()
698
 
        removed    = 0
699
 
        actual_row = 0
700
 
        total_rows = len(iter)
701
 
           
702
 
        if total_rows == 0:
703
 
            self.set_window_values(self.variable.get_text("010"))
704
 
            yield None
705
 
            return
706
 
 
707
 
        # No sensitive buttons
708
 
        # Main Window
709
 
        self.progress_bar.show()
710
 
        self.cb_enabled_firewall.set_sensitive(0)
711
 
        self.cb_policy_incoming.set_sensitive(0)
712
 
        self.btn_remove_rule.set_sensitive(0)
713
 
        # Rules Window
714
 
        self.add_btn_add.set_sensitive(0)
715
 
        # Menus
716
 
        self.menu_pref.set_sensitive(0)
717
 
 
718
 
        # For one row selected
719
 
        iter.reverse() # Remove first the last rules for not overwrite rules
720
 
        for item in iter:
721
 
 
722
 
            # Get rule selected (row number)
723
 
            number_rule_row = tree.get_value(tree.get_iter(item),0)
724
 
            
725
 
            # Move Progress Bar
726
 
            actual_row += 1
727
 
            progress = float(actual_row) / float(total_rows)
728
 
            if progress > 1:
729
 
                progress = 1.0
730
 
            self.progress_bar.set_fraction(progress)
731
 
            yield True
732
 
 
733
 
            result = self.firewall.remove_rule(number_rule_row)
734
 
            if result.find(self.variable.get_constant("rule_deleted")) != -1:
735
 
                removed += 1
736
 
 
737
 
        # Clean Progress Bar
738
 
        self.progress_bar.set_fraction(0)
739
 
        self.progress_bar.hide()
740
 
        
741
 
        if removed == 1:
742
 
            self.set_window_values(self.variable.get_text("014"))
743
 
        elif removed > 1:
744
 
            self.set_window_values(self.variable.get_text("019"))
745
 
        else:
746
 
            self.set_window_values(self.variable.get_text("012"))
747
 
        
748
 
        yield None
749
 
 
750
 
 
751
 
        
752
 
 
753
 
# BUTTONS ADD WINDOW
754
 
    
755
 
    # Add rule Button
756
 
    def btnAddRule_clicked_cb(self, widget):
757
 
        # Add a simple rule
758
 
        if self.rules_notebook.get_current_page() == 0:
759
 
            self.add_rule_preconf()
760
 
        # Add a preconfigured rule
761
 
        elif self.rules_notebook.get_current_page() == 1:
762
 
            self.add_rule_simple()
763
 
        # Add an advanced rule
764
 
        elif self.rules_notebook.get_current_page() == 2:
765
 
            self.add_rule_advanced()
766
 
            
767
 
  
768
 
    # Add a simple rule
769
 
    def add_rule_simple(self):
770
 
        # Insert Number
771
 
        if self.extended_actions.get_active() != 0: # Visible?
772
 
            insert_number = str(self.insert_number_simple.get_value_as_int())
773
 
        else:
774
 
            insert_number = "0"
775
 
        
776
 
        # Allow|deny|Limit
777
 
        if self.action_simple.get_active() == 0:
778
 
            action = self.variable.get_constant("allow")
779
 
        elif self.action_simple.get_active() == 1:
780
 
            action = self.variable.get_constant("deny")
781
 
        elif self.action_simple.get_active() == 2:
782
 
            action = self.variable.get_constant("reject")
783
 
        else:
784
 
            action = self.variable.get_constant("limit")
785
 
            
786
 
        # IN/OUT
787
 
        if self.direction_simple.get_active() == 0:
788
 
            direction = self.variable.get_constant("in")
789
 
        else:
790
 
            direction = self.variable.get_constant("out")
791
 
        
792
 
        # Log
793
 
        if self.extended_actions.get_active() != 0: # Visible?
794
 
            if self.log_simple.get_active() == 0:
795
 
                log = self.variable.get_constant("log-default")
796
 
            elif self.log_simple.get_active() == 1:
797
 
                log = self.variable.get_constant("log")
798
 
            else:
799
 
                log = self.variable.get_constant("log-all")
800
 
        else:
801
 
            log = self.variable.get_constant("log-default")
802
 
            
803
 
        # Protocol
804
 
        if self.proto_simple.get_active() == 0:
805
 
            protocol = self.variable.get_constant("tcp")
806
 
        elif self.proto_simple.get_active() == 1:
807
 
            protocol = self.variable.get_constant("udp")
808
 
        else:
809
 
            protocol = self.variable.get_constant("both")
810
 
 
811
 
        # Port
812
 
        port = self.port_simple.get_text()
813
 
        
814
 
        # ? -> !
815
 
        if port == "asturian":
816
 
            dlg_egg = gtk.MessageDialog(parent=self.win_main, flags=0, type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_CLOSE, message_format="Asturian politicians are allowed to die the Asturian language!")
817
 
            dlg_egg.format_secondary_markup("http://acurti.es/2oa")
818
 
            dlg_egg.set_title("Asturian language")
819
 
            dlg_egg.run()
820
 
            dlg_egg.destroy()
821
 
            return
822
 
        
823
 
        # Validate port
824
 
        if port == "":
825
 
            self.set_window_values(self.variable.get_text("015"))
826
 
            return
827
 
            
828
 
        # Validate both and not range ports
829
 
        if ( port.find(":") != -1 ) and protocol == self.variable.get_constant("both"):
830
 
            self.set_window_values(self.variable.get_text("017"))
831
 
            return
832
 
            
833
 
        # Add rule
834
 
        result = self.firewall.add_rule(self.variable.get_constant("service_no"), insert_number, action, direction, log, protocol, "", "", "", port)
835
 
        if result.find(self.variable.get_constant("rule_added")) != -1 or \
836
 
            result.find(self.variable.get_constant("rule_updated")) != -1:
837
 
            self.set_window_values(self.variable.get_text("013"))
838
 
        else:
839
 
            self.set_window_values(self.variable.get_text("012"))
840
 
        
841
 
        
842
 
    # Add a preconfigured rule
843
 
    def add_rule_preconf(self):
844
 
        # Insert Number
845
 
        if self.extended_actions.get_active() != 0: # Visible?
846
 
            insert_number = str(self.insert_number_preconf.get_value_as_int())
847
 
        else:
848
 
            insert_number = "0"
849
 
        
850
 
        # Allow|deny|Limit
851
 
        if self.action_preconf.get_active() == 0:
852
 
            action = self.variable.get_constant("allow")
853
 
        elif self.action_preconf.get_active() == 1:
854
 
            action = self.variable.get_constant("deny")
855
 
        elif self.action_preconf.get_active() == 2:
856
 
            action = self.variable.get_constant("reject")
857
 
        else:
858
 
            action = self.variable.get_constant("limit")
859
 
            
860
 
        # IN/OUT
861
 
        if self.direction_preconf.get_active() == 0:
862
 
            direction = self.variable.get_constant("in")
863
 
        else:
864
 
            direction = self.variable.get_constant("out")
865
 
            
866
 
        # Log
867
 
        if self.extended_actions.get_active() != 0: # Visible?
868
 
            if self.log_preconf.get_active() == 0:
869
 
                log = self.variable.get_constant("log-default")
870
 
            elif self.log_preconf.get_active() == 1:
871
 
                log = self.variable.get_constant("log")
872
 
            else:
873
 
                log = self.variable.get_constant("log-all")
874
 
        else:
875
 
            log = self.variable.get_constant("log-default")
876
 
            
877
 
        # Service?
878
 
        if self.serv_prog_type == self.variable.get_constant("service_enabled"):
879
 
            service_txt = self.variable.get_service(self.service_preconf.get_active_text())
880
 
            
881
 
            all_ports = service_txt.split("|")
882
 
            for port_proto in all_ports:
883
 
            
884
 
                if port_proto.find(self.variable.get_constant("tcp")) != -1:
885
 
                    port     = port_proto.replace(self.variable.get_constant("tcp"), "")
886
 
                    protocol = self.variable.get_constant("tcp")
887
 
                    l_service = self.variable.get_constant("service_no")
888
 
                elif port_proto.find(self.variable.get_constant("udp")) != -1:
889
 
                    port     = port_proto.replace(self.variable.get_constant("udp"), "")
890
 
                    protocol = self.variable.get_constant("udp")
891
 
                    l_service = self.variable.get_constant("service_no")
892
 
                elif port_proto.find(self.variable.get_constant("both")) != -1:
893
 
                    port     = port_proto.replace(self.variable.get_constant("both"), "")
894
 
                    protocol = self.variable.get_constant("both")
895
 
                    l_service = self.variable.get_constant("service_no")
896
 
                else:
897
 
                    port     = port_proto
898
 
                    protocol = ""
899
 
                    l_service = self.variable.get_constant("service_yes")
900
 
                    
901
 
                # TODO Add rule service
902
 
                result = self.firewall.add_rule(l_service, insert_number, action, direction, log, protocol, "", "", "", port)
903
 
                if result.find(self.variable.get_constant("rule_added"))   != -1 or \
904
 
                   result.find(self.variable.get_constant("rule_updated")) != -1:
905
 
                    operation_done = 'X'
906
 
                    
907
 
            if operation_done == 'X':
908
 
                self.set_window_values(self.variable.get_text("013"))
909
 
            else:
910
 
                self.set_window_values(self.variable.get_text("012"))
911
 
              
912
 
        # Program?
913
 
        else:
914
 
            port_proto   = self.variable.get_program(self.program_preconf.get_active_text()) 
915
 
            ports_protos = port_proto.split("#")
916
 
            added        = 0
917
 
            
918
 
            for prog in ports_protos:
919
 
                if prog.find(self.variable.get_constant("tcp")) != -1:
920
 
                    port     = prog.replace(self.variable.get_constant("tcp"), "")
921
 
                    protocol = self.variable.get_constant("tcp")
922
 
                elif prog.find(self.variable.get_constant("udp")) != -1:
923
 
                    port     = prog.replace(self.variable.get_constant("udp"), "")
924
 
                    protocol = self.variable.get_constant("udp")
925
 
                elif prog.find(self.variable.get_constant("both")) != -1:
926
 
                    port     = prog.replace(self.variable.get_constant("both"), "")
927
 
                    protocol = self.variable.get_constant("both")
928
 
                    
929
 
                # TODO Add rule program
930
 
                result = self.firewall.add_rule(self.variable.get_constant("service_no"), insert_number, action, direction, log, protocol, "", "", "", port)
931
 
                if result.find(self.variable.get_constant("rule_added")) != -1 or \
932
 
                    result.find(self.variable.get_constant("rule_updated")) != -1:
933
 
                    added += 1
934
 
                    
935
 
            if added == 1: 
936
 
                self.set_window_values(self.variable.get_text("013"))
937
 
            elif added > 1:
938
 
                self.set_window_values(self.variable.get_text("020"))
939
 
            else:
940
 
                self.set_window_values(self.variable.get_text("012"))
941
 
                
942
 
    
943
 
    # Add an advanced rule
944
 
    def add_rule_advanced(self):
945
 
        # Insert Number
946
 
        if self.extended_actions.get_active() != 0: # Visible?
947
 
            insert_number = str(self.insert_number_advanced.get_value_as_int())
948
 
        else:
949
 
            insert_number = "0"
950
 
 
951
 
        # Deny|Reject|Allow|Limit
952
 
        if self.action_advanced.get_active() == 0:
953
 
            action = self.variable.get_constant("allow")
954
 
        elif self.action_advanced.get_active() == 1:
955
 
            action = self.variable.get_constant("deny")
956
 
        elif self.action_advanced.get_active() == 2:
957
 
            action = self.variable.get_constant("reject")
958
 
        else:
959
 
            action = self.variable.get_constant("limit")
960
 
            
961
 
        # IN/OUT
962
 
        if self.direction_advanced.get_active() == 0:
963
 
            direction = self.variable.get_constant("in")
964
 
        else:
965
 
            direction = self.variable.get_constant("out")
966
 
            
967
 
        # Log
968
 
        if self.extended_actions.get_active() != 0: # Visible?
969
 
            if self.log_advanced.get_active() == 0:
970
 
                log = self.variable.get_constant("log-default")
971
 
            elif self.log_advanced.get_active() == 1:
972
 
                log = self.variable.get_constant("log")
973
 
            else:
974
 
                log = self.variable.get_constant("log-all")
975
 
        else:
976
 
            log = self.variable.get_constant("log-default")
977
 
            
978
 
        # Protocol
979
 
        if self.proto_advanced.get_active() == 0:
980
 
            protocol = self.variable.get_constant("tcp")
981
 
        elif self.proto_advanced.get_active() == 1:
982
 
            protocol = self.variable.get_constant("udp")
983
 
        else:
984
 
            protocol = self.variable.get_constant("both")
985
 
                
986
 
        # From
987
 
        fromip   = self.fromip_advanced.get_text()
988
 
        fromport = self.portfrom_advanced.get_text()
989
 
        
990
 
        # To
991
 
        toip   = self.toip_advanced.get_text()
992
 
        toport = self.portto_advanced.get_text() 
993
 
        
994
 
        # Validate values
995
 
        if fromip == "" and fromport == "" and toip == "" and toport == "":
996
 
            self.set_window_values(self.variable.get_text("016"))
997
 
            return
998
 
 
999
 
        # Validate both and not range ports in FROM
1000
 
        if ( fromport != "" and fromport.find(":") != -1 ) and protocol == self.variable.get_constant("both"):
1001
 
            self.set_window_values(self.variable.get_text("017"))
1002
 
            return
1003
 
        # Validate both and not range ports in TO            
1004
 
        if ( toport != "" and toport.find(":") != -1 ) and protocol == self.variable.get_constant("both"):
1005
 
            self.set_window_values(self.variable.get_text("017"))
1006
 
            return
1007
 
                    
1008
 
        # Add rule program
1009
 
        result = self.firewall.add_rule(self.variable.get_constant("service_no"), insert_number, action, direction, log, protocol, fromip, fromport, toip, toport)
1010
 
        if result.find(self.variable.get_constant("rule_added")) != -1 or \
1011
 
           result.find(self.variable.get_constant("rule_updated")) != -1:
1012
 
            self.set_window_values(self.variable.get_text("013"))
1013
 
        else:
1014
 
            self.set_window_values(self.variable.get_text("012"))
1015
 
 
1016
 
        
1017
 
    # Change between Service/Program
1018
 
    def cbTypePreconf_changed_cb(self, widget):
1019
 
        if self.serv_prog_type == self.variable.get_constant("service_enabled"):
1020
 
            self.serv_prog_type = self.variable.get_constant("service_disabled")
1021
 
            self.box_service_preconf.hide()   
1022
 
            self.box_program_preconf.show()   
1023
 
        else:
1024
 
            self.serv_prog_type = self.variable.get_constant("service_enabled")
1025
 
            self.box_service_preconf.show()   
1026
 
            self.box_program_preconf.hide()   
1027
 
 
1028
 
 
1029
 
    # Clear values
1030
 
    def btnCleanAdvanced_clicked_cb(self, widget):
1031
 
        self.fromip_advanced.set_text("")
1032
 
        self.portfrom_advanced.set_text("")
1033
 
        self.toip_advanced.set_text("")
1034
 
        self.portto_advanced.set_text("")
1035
 
 
1036
 
 
1037
 
    # Extended actions
1038
 
    def cbExtendedActions_toggled_cb(self, widget):
1039
 
        # Set hide extended actions
1040
 
        if self.extended_actions.get_active() == 0:
1041
 
            self.box_insert_number_preconf.hide()
1042
 
            self.box_insert_number_simple.hide()
1043
 
            self.box_insert_number_advanced.hide()
1044
 
 
1045
 
            self.box_log_preconf.hide()
1046
 
            self.box_log_simple.hide()
1047
 
            self.box_log_advanced.hide()
1048
 
            
1049
 
        else:
1050
 
            self.box_insert_number_preconf.show()
1051
 
            self.box_insert_number_simple.show()
1052
 
            self.box_insert_number_advanced.show()
1053
 
 
1054
 
            self.box_log_preconf.show()
1055
 
            self.box_log_simple.show()
1056
 
            self.box_log_advanced.show()
1057