1
# Gufw 9.10.2 - http://gufw.tuxfamily.org
2
# Copyright (C) 2009 Marcos Alvarez Costales
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.
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.
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
25
def __init__(self, variable, firewall):
27
self.variable = variable
28
self.firewall = firewall
30
self.glade = gtk.glade.XML(self.variable.get_path("glade"))
31
self.model = gtk.ListStore (gobject.TYPE_INT, 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")
36
self.set_objects_glade()
39
self.log_txt_buffer = self.log_txt.get_buffer()
41
self.set_rules_header()
42
self.set_initial_values()
43
self.set_window_values("")
45
self.glade.signal_autoconnect(self)
46
self.glade.get_widget("winMain").show()
53
# Set references to objects
54
def set_objects_glade(self):
56
self.win_main = self.glade.get_widget("winMain")
57
self.cb_enabled_firewall = self.glade.get_widget("cbEnabledFirewall")
58
self.cb_policy = self.glade.get_widget("cbPolicy")
59
self.lbl_policy = self.glade.get_widget("lblDefaultPolicy")
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")
68
self.action_simple = self.glade.get_widget("cbActionSimple")
69
self.port_simple = self.glade.get_widget("entryPortSimple")
70
self.proto_simple = self.glade.get_widget("cbProtoSimple")
71
self.action_preconf = self.glade.get_widget("cbActionPreconf")
72
self.type_preconf = self.glade.get_widget("cbTypePreconf")
73
self.service_preconf = self.glade.get_widget("cbServicePreconf")
74
self.program_preconf = self.glade.get_widget("cbProgramPreconf")
75
self.action_advanced = self.glade.get_widget("cbActionAdvanced")
76
self.proto_advanced = self.glade.get_widget("cbProtoAdvanced")
77
self.fromip_advanced = self.glade.get_widget("entryFromIpAdvanced")
78
self.portfrom_advanced = self.glade.get_widget("entryPortFromAdvanced")
79
self.toip_advanced = self.glade.get_widget("entryToIpAdvanced")
80
self.portto_advanced = self.glade.get_widget("entryPortToAdvanced")
81
self.rules_notebook = self.glade.get_widget("rulesNotebook")
82
self.add_btn_add = self.glade.get_widget("btnAddRule")
85
self.winlog = self.glade.get_widget("winLog")
86
self.log_txt = self.glade.get_widget("logTxt")
87
self.log_btn_close = self.glade.get_widget("btnCloseLog")
91
self.winpreferences = self.glade.get_widget("winPreferences")
92
self.cb_ufw_log = self.glade.get_widget("cbUfwLog")
93
self.lbl_ufw_level = self.glade.get_widget("lblLogLevel")
94
self.cb_ufw_level = self.glade.get_widget("cbLogLevel")
95
self.cb_gufw_log = self.glade.get_widget("cbGufwLog")
96
self.pref_btn_close = self.glade.get_widget("btnClosePref")
99
self.menu_log = self.glade.get_widget("menuLog")
100
self.menu_pref = self.glade.get_widget("menuPreferences")
103
self.winabout = self.glade.get_widget("winAbout")
104
self.winabout.set_translator_credits(self.variable.get_constant("translators_credits"))
108
def set_rules_header(self):
110
self.tv_rules.set_model(self.model)
111
self.tv_rules.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
114
self.render.set_property("font", self.variable.get_constant("font_rules"))
117
tree_header = gtk.TreeViewColumn (self.variable.get_text("001"), self.render, text=1, foreground=4)
118
tree_header.set_resizable(True)
119
self.tv_rules.append_column (tree_header)
121
tree_header = gtk.TreeViewColumn (self.variable.get_text("002"), self.render, text=2, foreground=4)
122
tree_header.set_resizable(True)
123
self.tv_rules.append_column (tree_header)
125
tree_header = gtk.TreeViewColumn (self.variable.get_text("003"), self.render, text=3, foreground=4)
126
self.tv_rules.append_column (tree_header)
129
# Set initial values in Interface
130
def set_initial_values(self):
131
# Restore previus size window
132
self.get_old_size_window()
135
self.action_simple.set_active(0)
136
self.proto_simple.set_active(0)
138
self.action_preconf.set_active(0)
139
self.type_preconf.set_active(0)
140
self.service_preconf.set_active(0)
141
self.program_preconf.set_active(0)
143
self.action_advanced.set_active(0)
144
self.proto_advanced.set_active(0)
147
self.btn_add_window.grab_focus()
150
# Set initials status to glade objects
151
def set_window_values(self, status_bar):
153
self.cb_enabled_firewall.set_sensitive(1)
154
if self.firewall.status == self.variable.get_constant("enabled"):
155
self.cb_enabled_firewall.set_active(1)
158
if self.firewall.default == self.variable.get_constant("deny"):
159
self.cb_policy.set_active(0)
160
elif self.firewall.default == self.variable.get_constant("reject"):
161
self.cb_policy.set_active(1)
162
elif self.firewall.default == self.variable.get_constant("allow"):
163
self.cb_policy.set_active(2)
166
self.status_bar.push(1, status_bar)
168
# Set values by status firewall
169
if self.firewall.status == self.variable.get_constant("disabled"):
171
self.cb_policy.set_sensitive(0)
172
self.lbl_policy.set_sensitive(0)
173
self.add_btn_add.set_sensitive(0)
174
self.btn_remove_rule.set_sensitive(0)
176
if not self.variable.dev:
177
self.shield.set_from_file(self.variable.get_path("shield_disabled"))
179
self.shield.set_from_file(self.variable.get_path("shield_disabled_dev"))
184
self.rules = self.firewall.get_rules_list()
187
self.cb_policy.set_sensitive(1)
188
self.lbl_policy.set_sensitive(1)
189
self.add_btn_add.set_sensitive(1)
190
if len(self.rules) == 0:
191
self.btn_remove_rule.set_sensitive(0)
193
self.btn_remove_rule.set_sensitive(1)
196
if not self.variable.dev:
197
if self.firewall.default == self.variable.get_constant("allow"):
198
self.shield.set_from_file(self.variable.get_path("shield_allow"))
199
elif self.firewall.default == self.variable.get_constant("deny"):
200
self.shield.set_from_file(self.variable.get_path("shield_deny"))
201
elif self.firewall.default == self.variable.get_constant("reject"):
202
self.shield.set_from_file(self.variable.get_path("shield_reject"))
204
if self.firewall.default == self.variable.get_constant("allow"):
205
self.shield.set_from_file(self.variable.get_path("shield_allow_dev"))
206
elif self.firewall.default == self.variable.get_constant("deny"):
207
self.shield.set_from_file(self.variable.get_path("shield_deny_dev"))
208
elif self.firewall.default == self.variable.get_constant("reject"):
209
self.shield.set_from_file(self.variable.get_path("shield_reject_dev"))
212
self.menu_pref.set_sensitive(1)
213
if self.firewall.gufw_log == self.variable.get_constant("gufw_log_on"):
214
self.menu_log.set_sensitive(1)
216
self.menu_log.set_sensitive(0)
219
self.set_rules_text()
223
def set_rules_text(self):
227
if self.firewall.status == self.variable.get_constant("disabled"):
232
for rule in self.rules:
236
iterador = self.model.insert(row)
237
self.model.set_value(iterador, 0, row)
240
self.model.set_value(iterador, 1, rule[0])
241
self.model.set_value(iterador, 2, rule[1])
242
self.model.set_value(iterador, 3, rule[2])
244
# Color Allow/Deny/Limit
246
if rule[1] == self.variable.get_constant("allow_upper"):
247
if self.firewall.default != self.variable.get_constant("allow"):
248
self.model.set_value(iterador, 4, self.variable.get_constant("color_red"))
250
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
253
elif rule[1] == self.variable.get_constant("deny_upper"):
254
if self.firewall.default != self.variable.get_constant("deny"):
255
self.model.set_value(iterador, 4, self.variable.get_constant("color_green"))
257
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
260
elif rule[1] == self.variable.get_constant("reject_upper"):
261
if self.firewall.default != self.variable.get_constant("reject"):
262
self.model.set_value(iterador, 4, self.variable.get_constant("color_blue"))
264
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
267
elif rule[1] == self.variable.get_constant("limit_upper"):
268
self.model.set_value(iterador, 4, self.variable.get_constant("color_orange"))
280
def winMain_delete_event_cb(self, widget, event):
281
self.save_size_window()
285
def menuQuit_activate_cb(self, widget):
286
self.save_size_window()
290
def btnAddWindow_clicked_cb(self, widget):
291
self.glade.get_widget("winAdd").show()
292
self.add_btn_add.grab_focus()
293
self.btn_add_window.set_sensitive(0)
295
# Close Window Add Rules
296
def winAdd_delete_event_cb(self, widget, event):
297
self.glade.get_widget("winAdd").hide()
298
self.btn_add_window.set_sensitive(1)
301
# Button Close Add Rules
302
def btnCloseAdd_clicked_cb(self, widget):
303
self.glade.get_widget("winAdd").hide()
304
self.btn_add_window.set_sensitive(1)
307
# Close preferences Window
308
def winPreferences_delete_event_cb(self, widget, event):
309
self.glade.get_widget("winPreferences").hide()
312
# Close preferences Button
313
def btnClosePref_clicked_cb(self, widget):
314
self.glade.get_widget("winPreferences").hide()
318
def winLog_delete_event_cb(self, widget, event):
319
self.glade.get_widget("winLog").hide()
323
def btnCloseLog_clicked_cb(self, widget):
324
self.glade.get_widget("winLog").hide()
327
# Press Scape Key Add Window
328
def winAdd_key_press_event_cb(self, widget, event):
329
if event.keyval == gtk.keysyms.Escape :
330
self.glade.get_widget("winAdd").hide()
331
self.btn_add_window.set_sensitive(1)
334
# Press Scape Key Preferences Window
335
def winPreferences_key_press_event_cb(self, widget, event):
336
if event.keyval == gtk.keysyms.Escape :
337
self.glade.get_widget("winPreferences").hide()
340
# Press Scape Key Log Window
341
def winLog_key_press_event_cb(self, widget, event):
342
if event.keyval == gtk.keysyms.Escape :
343
self.glade.get_widget("winLog").hide()
347
# Save Actual size window
348
def get_old_size_window(self):
349
win_width,win_height = self.firewall.get_old_size_window()
350
screen_width = gtk.gdk.screen_width()
351
screen_height = gtk.gdk.screen_height()
354
if ( win_width == screen_width ) and ( win_height == screen_height ):
355
self.win_main.maximize()
359
if win_width > screen_width:
360
win_width = screen_width
361
if win_height > screen_height:
362
win_height = screen_height
364
self.win_main.resize(win_width,win_height)
367
# Save Actual size window
368
def save_size_window(self):
369
win_width, win_height = self.win_main.get_size()
370
screen_width = gtk.gdk.screen_width()
371
screen_height = gtk.gdk.screen_height()
373
if not self.firewall.maximized:
374
if win_width > screen_width:
375
win_width = screen_width
376
if win_height > screen_height:
377
win_height = screen_height
379
self.firewall.save_size_window(win_width, win_height)
382
self.firewall.save_size_window(screen_width, screen_height)
385
def winMain_window_state_event_cb(self, widget, event):
386
if event.changed_mask & gtk.gdk.WINDOW_STATE_MAXIMIZED:
387
self.firewall.maximized = not self.firewall.maximized
396
def menuPreferences_activate_cb(self, widget):
398
if self.firewall.ufw_log == self.variable.get_constant("ufw_log_off"):
399
self.cb_ufw_log.set_active(0)
400
self.cb_ufw_level.set_sensitive(0)
401
self.lbl_ufw_level.set_sensitive(0)
404
self.cb_ufw_log.set_active(1)
405
self.cb_ufw_level.set_sensitive(1)
406
self.lbl_ufw_level.set_sensitive(1)
407
if self.firewall.ufw_log == self.variable.get_constant("ufw_log_low"):
408
self.cb_ufw_level.set_active(0)
409
elif self.firewall.ufw_log == self.variable.get_constant("ufw_log_medium"):
410
self.cb_ufw_level.set_active(1)
412
self.cb_ufw_level.set_active(2)
415
if self.firewall.gufw_log != self.variable.get_constant("gufw_log_off"):
416
self.cb_gufw_log.set_active(1)
418
self.cb_gufw_log.set_active(0)
421
self.status_bar.push(1, "")
422
self.winpreferences.show()
423
self.pref_btn_close.grab_focus()
426
# Change Logging Level
427
def cbLogLevel_changed_cb(self, widget):
428
if ( self.cb_ufw_level.get_active() == 0 ) and ( self.firewall.ufw_log != self.variable.get_constant("ufw_log_low") ):
429
self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_low"))
430
elif ( self.cb_ufw_level.get_active() == 1 ) and ( self.firewall.ufw_log != self.variable.get_constant("ufw_log_medium") ):
431
self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_medium"))
432
elif ( self.cb_ufw_level.get_active() == 2 ) and ( self.firewall.ufw_log != self.variable.get_constant("ufw_log_high") ):
433
self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_high"))
437
def menuAbout_activate_cb(self, widget):
438
self.status_bar.push(1, "")
445
def menuLog_activate_cb(self, widget):
447
log_strings = self.firewall.get_log()
450
for string in log_strings:
451
txt = "".join([txt, string, "\n"])
453
self.log_txt_buffer.set_text(txt)
455
self.status_bar.push(1, "")
459
self.log_btn_close.grab_focus()
465
# BUTTONS PREFERENCE WINDOW
467
# ufw Log CheckButton
468
def cbUfwLog_toggled_cb(self, widget):
469
if self.firewall.ufw_log != self.variable.get_constant("ufw_log_off") and self.cb_ufw_log.get_active() == 0:
470
self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_off"))
471
self.cb_ufw_log.set_active(0)
472
self.cb_ufw_level.set_sensitive(0)
473
self.lbl_ufw_level.set_sensitive(0)
475
elif self.firewall.ufw_log == self.variable.get_constant("ufw_log_off") and self.cb_ufw_log.get_active() == 1:
476
self.firewall.set_ufw_log(self.variable.get_constant("ufw_log_on"))
477
self.cb_ufw_log.set_active(1)
478
self.cb_ufw_level.set_sensitive(1)
479
self.cb_ufw_level.set_active(0)
480
self.lbl_ufw_level.set_sensitive(1)
483
self.status_bar.push(1, "")
485
# Gufw Log CheckButton
486
def cbGufwLog_toggled_cb(self, widget):
487
if self.firewall.gufw_log != self.variable.get_constant("gufw_log_on") and self.cb_gufw_log.get_active() == 1:
488
self.firewall.set_gufw_log(self.variable.get_constant("gufw_log_on"))
489
elif self.firewall.gufw_log != self.variable.get_constant("gufw_log_off") and self.cb_gufw_log.get_active() == 0:
490
self.firewall.set_gufw_log(self.variable.get_constant("gufw_log_off"))
492
self.set_window_values("")
503
def btnClearLog_clicked_cb(self, widget):
504
self.firewall.refresh_log()
505
self.log_txt_buffer.set_text("")
509
def cbWrapping_toggled_cb(self, widget):
510
if self.firewall.wrap == self.variable.get_constant("wrap_on"):
511
self.firewall.set_wrap(self.variable.get_constant("wrap_off"))
512
self.log_txt.set_wrap_mode(gtk.WRAP_NONE)
514
self.firewall.set_wrap(self.variable.get_constant("wrap_on"))
515
self.log_txt.set_wrap_mode(gtk.WRAP_WORD)
524
# BUTTONS MAIN WINDOW
526
# Button Firewall Enabled
527
def cbEnabledFirewall_clicked_cb(self, widget):
528
if self.firewall.status == self.variable.get_constant("enabled"):
529
self.firewall.set_status(self.variable.get_constant("disabled"))
530
self.add_btn_add.set_sensitive(0)
531
self.set_window_values(self.variable.get_text("009"))
533
self.firewall.set_status(self.variable.get_constant("enabled"))
534
self.add_btn_add.set_sensitive(1)
535
self.set_window_values(self.variable.get_text("008"))
538
# Policy (Deny/Allow/Reject All)
539
def cbPolicy_changed_cb(self, widget):
541
if self.firewall.default == self.variable.get_constant("deny") and self.cb_policy.get_active() == 0:
543
if self.firewall.default == self.variable.get_constant("reject") and self.cb_policy.get_active() == 1:
545
if self.firewall.default == self.variable.get_constant("allow") and self.cb_policy.get_active() == 2:
548
if self.cb_policy.get_active() == 0:
549
self.firewall.set_default(self.variable.get_constant("deny"))
550
self.set_window_values(self.variable.get_text("006"))
551
elif self.cb_policy.get_active() == 1:
552
self.firewall.set_default(self.variable.get_constant("reject"))
553
self.set_window_values(self.variable.get_text("011"))
554
elif self.cb_policy.get_active() == 2:
555
self.firewall.set_default(self.variable.get_constant("allow"))
556
self.set_window_values(self.variable.get_text("007"))
559
# Button Remove Rules(s)
560
def btnRemove_clicked_cb(self, widget):
562
task = self.remove_rules()
563
gobject.idle_add(task.next)
566
# Remove Rules Method
567
def remove_rules(self):
568
tree,iter = self.tv_rules.get_selection().get_selected_rows()
571
total_rows = len(iter)
574
self.set_window_values(self.variable.get_text("010"))
578
# No sensitive buttons
580
self.cb_enabled_firewall.set_sensitive(0)
581
self.cb_policy.set_sensitive(0)
582
self.btn_remove_rule.set_sensitive(0)
584
self.add_btn_add.set_sensitive(0)
586
self.menu_pref.set_sensitive(0)
588
# For one row: Selected
591
# Get rule selected (To/Action/From)
592
actual_rule_to = tree.get_value(tree.get_iter(item),1)
593
actual_rule = tree.get_value(tree.get_iter(item),2)
594
actual_rule_from = tree.get_value(tree.get_iter(item),3)
598
progress = float(actual_row) / float(total_rows)
601
self.progress_bar.set_fraction(progress)
604
result = self.firewall.remove_rule(actual_rule_to, actual_rule, actual_rule_from)
605
if result.find(self.variable.get_constant("rule_deleted")) != -1:
609
self.progress_bar.set_fraction(0)
612
self.set_window_values(self.variable.get_text("014"))
614
self.set_window_values(self.variable.get_text("019"))
616
self.set_window_values(self.variable.get_text("012"))
626
def btnAddRule_clicked_cb(self, widget):
628
if self.rules_notebook.get_current_page() == 0:
629
self.add_rule_preconf()
630
# Add a preconfigured rule
631
elif self.rules_notebook.get_current_page() == 1:
632
self.add_rule_simple()
633
# Add an advanced rule
634
elif self.rules_notebook.get_current_page() == 2:
635
self.add_rule_advanced()
639
def add_rule_simple(self):
641
if self.action_simple.get_active() == 0:
642
action = self.variable.get_constant("allow")
643
elif self.action_simple.get_active() == 1:
644
action = self.variable.get_constant("deny")
645
elif self.action_simple.get_active() == 2:
646
action = self.variable.get_constant("reject")
648
action = self.variable.get_constant("limit")
651
if self.proto_simple.get_active() == 0:
652
protocol = self.variable.get_constant("tcp")
653
elif self.proto_simple.get_active() == 1:
654
protocol = self.variable.get_constant("udp")
656
protocol = self.variable.get_constant("both")
659
port = self.port_simple.get_text()
662
if port == "asturianu":
663
dlg_egg = gtk.MessageDialog(None, buttons=gtk.BUTTONS_CLOSE, message_format="Tamos fartos de glayar...\nl'asturianu llingua OFICIAL!")
670
self.set_window_values(self.variable.get_text("015"))
673
# Validate both and not range ports
674
if ( port.find(":") != -1 ) and protocol == self.variable.get_constant("both"):
675
self.set_window_values(self.variable.get_text("017"))
679
result = self.firewall.add_rule(self.variable.get_constant("service_no"), action, protocol, "", "", "", port)
680
if result.find(self.variable.get_constant("rule_added")) != -1 or \
681
result.find(self.variable.get_constant("rule_updated")) != -1:
682
self.set_window_values(self.variable.get_text("013"))
684
self.set_window_values(self.variable.get_text("012"))
687
# Add a preconfigured rule
688
def add_rule_preconf(self):
690
if self.action_preconf.get_active() == 0:
691
action = self.variable.get_constant("allow")
692
elif self.action_preconf.get_active() == 1:
693
action = self.variable.get_constant("deny")
694
elif self.action_preconf.get_active() == 2:
695
action = self.variable.get_constant("reject")
697
action = self.variable.get_constant("limit")
700
if self.serv_prog_type == self.variable.get_constant("service_enabled"):
701
port_proto = self.variable.get_service(self.service_preconf.get_active_text())
702
if port_proto.find(self.variable.get_constant("tcp")) != -1:
703
port = port_proto.replace(self.variable.get_constant("tcp"), "")
704
protocol = self.variable.get_constant("tcp")
705
elif port_proto.find(self.variable.get_constant("udp")) != -1:
706
port = port_proto.replace(self.variable.get_constant("udp"), "")
707
protocol = self.variable.get_constant("udp")
708
elif port_proto.find(self.variable.get_constant("both")) != -1:
709
port = port_proto.replace(self.variable.get_constant("both"), "")
710
protocol = self.variable.get_constant("both")
715
# TODO Add rule service
716
result = self.firewall.add_rule(self.variable.get_constant("service_yes"), action, protocol, "", "", "", port)
717
if result.find(self.variable.get_constant("rule_added")) != -1 or \
718
result.find(self.variable.get_constant("rule_updated")) != -1:
719
self.set_window_values(self.variable.get_text("013"))
721
self.set_window_values(self.variable.get_text("012"))
725
port_proto = self.variable.get_program(self.program_preconf.get_active_text())
726
ports_protos = port_proto.split("#")
729
for prog in ports_protos:
730
if prog.find(self.variable.get_constant("tcp")) != -1:
731
port = prog.replace(self.variable.get_constant("tcp"), "")
732
protocol = self.variable.get_constant("tcp")
733
elif prog.find(self.variable.get_constant("udp")) != -1:
734
port = prog.replace(self.variable.get_constant("udp"), "")
735
protocol = self.variable.get_constant("udp")
736
elif prog.find(self.variable.get_constant("both")) != -1:
737
port = prog.replace(self.variable.get_constant("both"), "")
738
protocol = self.variable.get_constant("both")
740
# TODO Add rule program
741
result = self.firewall.add_rule(self.variable.get_constant("service_no"), action, protocol, "", "", "", port)
742
if result.find(self.variable.get_constant("rule_added")) != -1 or \
743
result.find(self.variable.get_constant("rule_updated")) != -1:
747
self.set_window_values(self.variable.get_text("013"))
749
self.set_window_values(self.variable.get_text("020"))
751
self.set_window_values(self.variable.get_text("012"))
754
# Add an advanced rule
755
def add_rule_advanced(self):
756
# Deny|Reject|Allow|Limit
757
if self.action_advanced.get_active() == 0:
758
action = self.variable.get_constant("allow")
759
elif self.action_advanced.get_active() == 1:
760
action = self.variable.get_constant("deny")
761
elif self.action_advanced.get_active() == 2:
762
action = self.variable.get_constant("reject")
764
action = self.variable.get_constant("limit")
767
if self.proto_advanced.get_active() == 0:
768
protocol = self.variable.get_constant("tcp")
769
elif self.proto_advanced.get_active() == 1:
770
protocol = self.variable.get_constant("udp")
772
protocol = self.variable.get_constant("both")
775
fromip = self.fromip_advanced.get_text()
776
fromport = self.portfrom_advanced.get_text()
779
toip = self.toip_advanced.get_text()
780
toport = self.portto_advanced.get_text()
783
if fromip == "" and fromport == "" and toip == "" and toport == "":
784
self.set_window_values(self.variable.get_text("016"))
787
# Validate both and not range ports in FROM
788
if ( fromport != "" and fromport.find(":") != -1 ) and protocol == self.variable.get_constant("both"):
789
self.set_window_values(self.variable.get_text("017"))
791
# Validate both and not range ports in TO
792
if ( toport != "" and toport.find(":") != -1 ) and protocol == self.variable.get_constant("both"):
793
self.set_window_values(self.variable.get_text("017"))
797
result = self.firewall.add_rule(self.variable.get_constant("service_no"), action, protocol, fromip, fromport, toip, toport)
798
if result.find(self.variable.get_constant("rule_added")) != -1 or \
799
result.find(self.variable.get_constant("rule_updated")) != -1:
800
self.set_window_values(self.variable.get_text("013"))
802
self.set_window_values(self.variable.get_text("012"))
805
# Change between Service/Program
806
def cbTypePreconf_changed_cb(self, widget):
807
if self.serv_prog_type == self.variable.get_constant("service_enabled"):
808
self.serv_prog_type = self.variable.get_constant("service_disabled")
809
self.service_preconf.hide()
810
self.program_preconf.show()
812
self.serv_prog_type = self.variable.get_constant("service_enabled")
813
self.service_preconf.show()
814
self.program_preconf.hide()
818
def btnCleanAdvanced_clicked_cb(self, widget):
819
self.fromip_advanced.set_text("")
820
self.portfrom_advanced.set_text("")
821
self.toip_advanced.set_text("")
822
self.portto_advanced.set_text("")