1
# Gufw - 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_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")
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_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")
68
self.extended_actions = self.glade.get_widget("cbExtendedActions")
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")
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")
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")
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")
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")
124
self.menu_log = self.glade.get_widget("menuLog")
125
self.menu_pref = self.glade.get_widget("menuPreferences")
128
self.winabout = self.glade.get_widget("winAbout")
129
self.winabout.set_translator_credits(self.variable.get_constant("translators_credits"))
133
def set_rules_header(self):
135
self.tv_rules.set_model(self.model)
136
self.tv_rules.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
139
self.render.set_property("font", self.variable.get_constant("font_rules"))
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)
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)
150
tree_header = gtk.TreeViewColumn (self.variable.get_text("003"), self.render, text=3, foreground=4)
151
self.tv_rules.append_column (tree_header)
154
# Set initial values in Interface
155
def set_initial_values(self):
156
# Restore previus size window
157
self.get_old_size_window()
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()
164
self.box_log_preconf.hide()
165
self.box_log_simple.hide()
166
self.box_log_advanced.hide()
168
self.box_service_preconf.hide()
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)
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)
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)
189
self.btn_add_window.grab_focus()
192
# Set initials status to glade objects
193
def set_window_values(self, status_bar):
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)
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)
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)
216
self.status_bar.push(1, status_bar)
218
# Set values by status firewall
219
if self.firewall.status == self.variable.get_constant("disabled"):
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)
226
if not self.variable.dev:
227
self.shield.set_from_file(self.variable.get_path("shield_disable_disable"))
229
self.shield.set_from_file(self.variable.get_path("shield_disable_disable_dev"))
234
self.rules = self.firewall.get_rules_list()
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)
243
self.btn_remove_rule.set_sensitive(1)
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))
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))
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)
258
self.menu_log.set_sensitive(0)
261
self.set_rules_text()
265
def set_rules_text(self):
269
if self.firewall.status == self.variable.get_constant("disabled"):
274
for rule in self.rules:
278
iterador = self.model.insert(row)
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])
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"))
292
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
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"))
299
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
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"))
306
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
309
elif rule[1] == self.variable.get_text("030"):
310
self.model.set_value(iterador, 4, self.variable.get_constant("color_orange"))
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"))
318
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
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"))
325
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
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"))
332
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
335
elif rule[1] == self.variable.get_text("034"):
336
self.model.set_value(iterador, 4, self.variable.get_constant("color_orange"))
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"))
345
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
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"))
352
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
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"))
359
self.model.set_value(iterador, 4, self.variable.get_constant("color_gray"))
362
elif rule[1] == self.variable.get_text("038"):
363
self.model.set_value(iterador, 4, self.variable.get_constant("color_orange"))
375
def winMain_delete_event_cb(self, widget, event):
376
self.save_size_window()
380
def menuQuit_activate_cb(self, widget):
381
self.save_size_window()
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)
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)
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)
402
# Close preferences Window
403
def winPreferences_delete_event_cb(self, widget, event):
404
self.glade.get_widget("winPreferences").hide()
407
# Close preferences Button
408
def btnClosePref_clicked_cb(self, widget):
409
self.glade.get_widget("winPreferences").hide()
413
def winLog_delete_event_cb(self, widget, event):
414
self.glade.get_widget("winLog").hide()
418
def btnCloseLog_clicked_cb(self, widget):
419
self.glade.get_widget("winLog").hide()
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)
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()
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()
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()
449
if ( win_width == screen_width ) and ( win_height == screen_height ):
450
self.win_main.maximize()
454
if win_width > screen_width:
455
win_width = screen_width
456
if win_height > screen_height:
457
win_height = screen_height
459
self.win_main.resize(win_width,win_height)
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()
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
474
self.firewall.save_size_window(win_width, win_height)
477
self.firewall.save_size_window(screen_width, screen_height)
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
491
def menuPreferences_activate_cb(self, widget):
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)
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)
509
self.cb_ufw_level.set_active(3)
512
if self.firewall.gufw_log != self.variable.get_constant("gufw_log_off"):
513
self.cb_gufw_log.set_active(1)
515
self.cb_gufw_log.set_active(0)
518
self.status_bar.push(1, "")
519
self.winpreferences.show()
520
self.pref_btn_close.grab_focus()
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"))
536
def menuAbout_activate_cb(self, widget):
537
self.status_bar.push(1, "")
544
def menuLog_activate_cb(self, widget):
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, "")
552
self.log_btn_close.grab_focus()
556
def menuReset_activate_cb(self, widget):
557
reset_dialog = gtk.MessageDialog(parent=self.win_main,
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"))
574
# BUTTONS PREFERENCE WINDOW
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)
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)
591
self.status_bar.push(1, "")
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"))
601
self.set_window_values("")
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()
619
def cbServerScript_toggled_cb(self, widget):
621
log_strings = self.firewall.get_log(self.server_script.get_active())
622
self.log_txt_buffer.set_text(log_strings)
628
# BUTTONS MAIN WINDOW
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"))
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"))
642
# Policy (Deny/Allow/Reject All) Incoming
643
def cbPolicyIncoming_changed_cb(self, widget):
645
if self.firewall.default_incoming == self.variable.get_constant("deny") and self.cb_policy_incoming.get_active() == 0:
647
if self.firewall.default_incoming == self.variable.get_constant("reject") and self.cb_policy_incoming.get_active() == 1:
649
if self.firewall.default_incoming == self.variable.get_constant("allow") and self.cb_policy_incoming.get_active() == 2:
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"))
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"))
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"))
665
# Policy (Deny/Allow/Reject All) Outgoing
666
def cbPolicyOutgoing_changed_cb(self, widget):
668
if self.firewall.default_outgoing == self.variable.get_constant("deny") and self.cb_policy_outgoing.get_active() == 0:
670
if self.firewall.default_outgoing == self.variable.get_constant("reject") and self.cb_policy_outgoing.get_active() == 1:
672
if self.firewall.default_outgoing == self.variable.get_constant("allow") and self.cb_policy_outgoing.get_active() == 2:
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"))
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"))
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"))
688
# Button Remove Rules(s)
689
def btnRemove_clicked_cb(self, widget):
691
task = self.remove_rules()
692
gobject.idle_add(task.next)
695
# Remove Rules Method
696
def remove_rules(self):
697
tree,iter = self.tv_rules.get_selection().get_selected_rows()
700
total_rows = len(iter)
703
self.set_window_values(self.variable.get_text("010"))
707
# No sensitive buttons
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)
714
self.add_btn_add.set_sensitive(0)
716
self.menu_pref.set_sensitive(0)
718
# For one row selected
719
iter.reverse() # Remove first the last rules for not overwrite rules
722
# Get rule selected (row number)
723
number_rule_row = tree.get_value(tree.get_iter(item),0)
727
progress = float(actual_row) / float(total_rows)
730
self.progress_bar.set_fraction(progress)
733
result = self.firewall.remove_rule(number_rule_row)
734
if result.find(self.variable.get_constant("rule_deleted")) != -1:
738
self.progress_bar.set_fraction(0)
739
self.progress_bar.hide()
742
self.set_window_values(self.variable.get_text("014"))
744
self.set_window_values(self.variable.get_text("019"))
746
self.set_window_values(self.variable.get_text("012"))
756
def btnAddRule_clicked_cb(self, widget):
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()
769
def add_rule_simple(self):
771
if self.extended_actions.get_active() != 0: # Visible?
772
insert_number = str(self.insert_number_simple.get_value_as_int())
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")
784
action = self.variable.get_constant("limit")
787
if self.direction_simple.get_active() == 0:
788
direction = self.variable.get_constant("in")
790
direction = self.variable.get_constant("out")
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")
799
log = self.variable.get_constant("log-all")
801
log = self.variable.get_constant("log-default")
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")
809
protocol = self.variable.get_constant("both")
812
port = self.port_simple.get_text()
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")
825
self.set_window_values(self.variable.get_text("015"))
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"))
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"))
839
self.set_window_values(self.variable.get_text("012"))
842
# Add a preconfigured rule
843
def add_rule_preconf(self):
845
if self.extended_actions.get_active() != 0: # Visible?
846
insert_number = str(self.insert_number_preconf.get_value_as_int())
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")
858
action = self.variable.get_constant("limit")
861
if self.direction_preconf.get_active() == 0:
862
direction = self.variable.get_constant("in")
864
direction = self.variable.get_constant("out")
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")
873
log = self.variable.get_constant("log-all")
875
log = self.variable.get_constant("log-default")
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())
881
all_ports = service_txt.split("|")
882
for port_proto in all_ports:
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")
899
l_service = self.variable.get_constant("service_yes")
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:
907
if operation_done == 'X':
908
self.set_window_values(self.variable.get_text("013"))
910
self.set_window_values(self.variable.get_text("012"))
914
port_proto = self.variable.get_program(self.program_preconf.get_active_text())
915
ports_protos = port_proto.split("#")
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")
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:
936
self.set_window_values(self.variable.get_text("013"))
938
self.set_window_values(self.variable.get_text("020"))
940
self.set_window_values(self.variable.get_text("012"))
943
# Add an advanced rule
944
def add_rule_advanced(self):
946
if self.extended_actions.get_active() != 0: # Visible?
947
insert_number = str(self.insert_number_advanced.get_value_as_int())
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")
959
action = self.variable.get_constant("limit")
962
if self.direction_advanced.get_active() == 0:
963
direction = self.variable.get_constant("in")
965
direction = self.variable.get_constant("out")
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")
974
log = self.variable.get_constant("log-all")
976
log = self.variable.get_constant("log-default")
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")
984
protocol = self.variable.get_constant("both")
987
fromip = self.fromip_advanced.get_text()
988
fromport = self.portfrom_advanced.get_text()
991
toip = self.toip_advanced.get_text()
992
toport = self.portto_advanced.get_text()
995
if fromip == "" and fromport == "" and toip == "" and toport == "":
996
self.set_window_values(self.variable.get_text("016"))
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"))
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"))
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"))
1014
self.set_window_values(self.variable.get_text("012"))
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()
1024
self.serv_prog_type = self.variable.get_constant("service_enabled")
1025
self.box_service_preconf.show()
1026
self.box_program_preconf.hide()
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("")
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()
1045
self.box_log_preconf.hide()
1046
self.box_log_simple.hide()
1047
self.box_log_advanced.hide()
1050
self.box_insert_number_preconf.show()
1051
self.box_insert_number_simple.show()
1052
self.box_insert_number_advanced.show()
1054
self.box_log_preconf.show()
1055
self.box_log_simple.show()
1056
self.box_log_advanced.show()