From 03871c1e06b2384442b0e4f359e848d25e380875 Mon Sep 17 00:00:00 2001 From: Eric Garver Date: Wed, 28 Nov 2018 10:14:19 -0500 Subject: [PATCH 23/34] firewall-config: support rich rule priorities (cherry picked from commit e7998960fb285120b3b97e163bb87e25976d22d0) --- src/firewall-config.glade | 163 ++++++++++++-------------------------- src/firewall-config.in | 33 ++++++-- 2 files changed, 76 insertions(+), 120 deletions(-) diff --git a/src/firewall-config.glade b/src/firewall-config.glade index 75c229b408fd..689433c47eca 100644 --- a/src/firewall-config.glade +++ b/src/firewall-config.glade @@ -1,5 +1,5 @@ - + @@ -31,9 +31,6 @@ - - - False @@ -169,9 +166,6 @@ addressDialogCancelButton addressDialogOkButton - - - False @@ -292,9 +286,6 @@ automaticHelpersDialogCancelButton automaticHelpersDialogOkButton - - - False @@ -414,9 +405,6 @@ commandDialogCancelButton commandDialogOkButton - - - False @@ -536,9 +524,6 @@ contextDialogCancelButton contextDialogOkButton - - - 200 @@ -660,9 +645,6 @@ portDialogCancelButton1 defaultZoneDialogOkButton - - - False @@ -862,9 +844,6 @@ directChainDialogCancelButton directChainDialogOkButton - - - False @@ -1028,9 +1007,6 @@ directPassthroughDialogCancelButton directPassthroughDialogOkButton - - - 200 @@ -1369,9 +1345,6 @@ button15 forwardDialogOkButton - - - False @@ -1715,9 +1688,6 @@ helperBaseDialogCancelButton helperBaseDialogOkButton - - - 300 @@ -1832,9 +1802,6 @@ helperDialogCancelButton helperDialogOkButton - - - False @@ -2070,9 +2037,6 @@ icmpBaseDialogCancelButton icmpBaseDialogOkButton - - - 300 @@ -2186,9 +2150,6 @@ icmptypeDialogCancelButton icmptypeDialogOkButton - - - True @@ -7852,9 +7813,6 @@ interfaceDialogCancelButton interfaceDialogOkButton - - - False @@ -8258,9 +8216,6 @@ ipsetBaseDialogCancelButton ipsetBaseDialogOkButton - - - 300 @@ -8375,9 +8330,6 @@ ipsetDialogCancelButton ipsetDialogOkButton - - - False @@ -8541,9 +8493,6 @@ ipsetEntryDialogCancelButton ipsetEntryDialogOkButton - - - False @@ -8664,9 +8613,6 @@ logDeniedDialogCancelButton logDeniedDialogOkButton - - - @@ -8789,9 +8735,6 @@ macDialogCancelButton macDialogOkButton - - - False @@ -8969,9 +8912,6 @@ markDialogCancelButton markDialogOkButton - - - False @@ -9139,9 +9079,6 @@ moduleDialogCancelButton moduleDialogOkButton - - - False @@ -9307,9 +9244,6 @@ portDialogCancelButton portDialogOkButton - - - -99999999 @@ -9563,9 +9497,6 @@ directRuleDialogCancelButton directRuleDialogOkButton - - - False @@ -9744,9 +9675,12 @@ protoDialogCancelButton protoDialogOkButton - - - + + + -32768 + 32767 + 1 + 10 False @@ -9855,7 +9789,7 @@ 0 - 6 + 7 @@ -9868,7 +9802,7 @@ 0 - 8 + 9 @@ -9884,7 +9818,7 @@ 0 - 10 + 11 @@ -9900,7 +9834,7 @@ 0 - 12 + 13 @@ -10024,7 +9958,7 @@ 1 - 6 + 7 @@ -10113,7 +10047,7 @@ 1 - 8 + 9 @@ -10375,7 +10309,7 @@ 1 - 4 + 5 @@ -10541,7 +10475,7 @@ 1 - 10 + 11 @@ -10627,7 +10561,7 @@ 1 - 12 + 13 @@ -10724,7 +10658,7 @@ 1 - 2 + 3 @@ -10753,7 +10687,7 @@ 0 - 2 + 3 @@ -10763,7 +10697,7 @@ 0 - 1 + 2 2 @@ -10774,7 +10708,7 @@ 0 - 3 + 4 2 @@ -10785,7 +10719,7 @@ 0 - 5 + 6 2 @@ -10796,7 +10730,7 @@ 0 - 7 + 8 2 @@ -10807,7 +10741,7 @@ 0 - 9 + 10 2 @@ -10818,7 +10752,7 @@ 0 - 11 + 12 2 @@ -10835,7 +10769,33 @@ 0 - 4 + 5 + + + + + True + False + Priority: + 1 + + + 0 + 1 + + + + + True + True + number + rich_rule_priority_adjustment + True + + + + 1 + 1 @@ -10858,9 +10818,6 @@ richRuleDialogCancelButton richRuleDialogOkButton - - - False @@ -11095,9 +11052,6 @@ serviceBaseDialogCancelButton serviceBaseDialogOkButton - - - 300 @@ -11211,9 +11165,6 @@ serviceDialogCancelButton serviceDialogOkButton - - - False @@ -11393,9 +11344,6 @@ sourceDialogCancelButton sourceDialogOkButton - - - False @@ -11517,9 +11465,6 @@ uidDialogCancelButton uidDialogOkButton - - - False @@ -11640,9 +11585,6 @@ userDialogCancelButton userDialogOkButton - - - False @@ -12033,8 +11975,5 @@ zoneBaseDialogCancelButton zoneBaseDialogOkButton - - - diff --git a/src/firewall-config.in b/src/firewall-config.in index c19541b0ce82..373f431685cc 100755 --- a/src/firewall-config.in +++ b/src/firewall-config.in @@ -810,6 +810,7 @@ class FirewallConfig(object): self.richRuleView = builder.get_object("richRuleView") self.richRuleStore = Gtk.ListStore(GObject.TYPE_PYOBJECT, # the rule obj GObject.TYPE_STRING, # ipv4/ipv6 + GObject.TYPE_INT, # priority GObject.TYPE_STRING, # action GObject.TYPE_STRING, # element GObject.TYPE_STRING, # source @@ -820,18 +821,21 @@ class FirewallConfig(object): self.richRuleView.append_column( Gtk.TreeViewColumn(_("Family"), Gtk.CellRendererText(), text=1)) self.richRuleView.append_column( - Gtk.TreeViewColumn(_("Action"), Gtk.CellRendererText(), text=2)) + Gtk.TreeViewColumn(_("Priority"), Gtk.CellRendererText(), text=2)) self.richRuleView.append_column( - Gtk.TreeViewColumn(_("Element"), Gtk.CellRendererText(), text=3)) + Gtk.TreeViewColumn(_("Action"), Gtk.CellRendererText(), text=3)) self.richRuleView.append_column( - Gtk.TreeViewColumn(_("Src"), Gtk.CellRendererText(), text=4)) + Gtk.TreeViewColumn(_("Element"), Gtk.CellRendererText(), text=4)) self.richRuleView.append_column( - Gtk.TreeViewColumn(_("Dest"), Gtk.CellRendererText(), text=5)) + Gtk.TreeViewColumn(_("Src"), Gtk.CellRendererText(), text=5)) self.richRuleView.append_column( - Gtk.TreeViewColumn(_("log"), Gtk.CellRendererText(), text=6)) + Gtk.TreeViewColumn(_("Dest"), Gtk.CellRendererText(), text=6)) self.richRuleView.append_column( - Gtk.TreeViewColumn(_("Audit"), Gtk.CellRendererText(), text=7)) + Gtk.TreeViewColumn(_("log"), Gtk.CellRendererText(), text=7)) + self.richRuleView.append_column( + Gtk.TreeViewColumn(_("Audit"), Gtk.CellRendererText(), text=8)) self.richRuleView.set_model(self.richRuleStore) + self.richRuleStore.set_sort_column_id(2, Gtk.SortType.ASCENDING) self.richRuleView.get_selection().connect( \ "changed", self.change_rich_rule_selection_cb) @@ -848,6 +852,8 @@ class FirewallConfig(object): self.richRuleDialogFamilyCombobox = builder.get_object( \ "richRuleDialogFamilyCombobox") + self.richRuleDialogPriorityEntry = builder.get_object( \ + "richRuleDialogPriorityEntry") self.richRuleDialogElementCheck = builder.get_object( \ "richRuleDialogElementCheck") self.richRuleDialogElementBox = builder.get_object( \ @@ -2021,6 +2027,7 @@ class FirewallConfig(object): def _add_rich_rule(self, obj): family = "all" + priority = 0 src = "" dest = "" elem = "" @@ -2030,6 +2037,8 @@ class FirewallConfig(object): if obj.family: family = obj.family + if obj.priority: + priority = obj.priority if obj.action: if type(obj.action) == rich.Rich_Accept: action = _("accept") @@ -2096,8 +2105,8 @@ class FirewallConfig(object): if audit == "": audit = _("yes") - self.richRuleStore.append([obj, family, action, elem, src, dest, log, - audit]) + self.richRuleStore.append([obj, family, priority, action, elem, src, + dest, log, audit]) def richrule_added_cb(self, zone, rule, timeout): if not self.runtime_view or zone != self.get_selected_zone(): @@ -3085,6 +3094,7 @@ class FirewallConfig(object): def add_edit_rich_rule(self, add): self.richRuleDialogFamilyCombobox.set_active(0) + self.richRuleDialogPriorityEntry.set_value(0) self.richRuleDialogElementCheck.set_active(False) self.richRuleDialogElementCombobox.set_active(0) self.richRuleDialogElementChooser.set_text("") @@ -3143,6 +3153,8 @@ class FirewallConfig(object): if old_obj.family in [ "ipv4", "ipv6" ]: combobox_select_text(self.richRuleDialogFamilyCombobox, old_obj.family, insensitive=True) + if old_obj.priority != 0: + self.richRuleDialogPriorityEntry.set_value(old_obj.priority) if old_obj.element: self.richRuleDialogElementCheck.set_active(True) @@ -3633,6 +3645,11 @@ class FirewallConfig(object): else: rule = rich.Rich_Rule() # ipv4+ipv6 rule + # priority + priority = self.richRuleDialogPriorityEntry.get_value_as_int() + if priority != 0: + rule.priority = priority + # element if self.richRuleDialogElementCheck.get_active(): combolabel = self.richRuleDialogElementCombobox.get_active_text() -- 2.18.0