Blob Blame History Raw
From bec614ce987935a8fccb99c32fb2ba342b17048a Mon Sep 17 00:00:00 2001
From: Eric Garver <e@erig.me>
Date: Thu, 29 Nov 2018 12:26:08 -0500
Subject: [PATCH 26/34] command: sort rich rule output by priority

(cherry picked from commit 606e853e58028b6a8cfd91c1544e58346e7966be)
---
 src/firewall/command.py | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/firewall/command.py b/src/firewall/command.py
index 6c93be840760..1449b6dfc3ea 100644
--- a/src/firewall/command.py
+++ b/src/firewall/command.py
@@ -393,6 +393,19 @@ class FirewallCommand(object):
         description = settings.getDescription()
         short_description = settings.getShort()
 
+        def rich_rule_sorted_key(rule):
+            priority = 0
+            search_str = "priority="
+            try:
+                i = rule.index(search_str)
+            except ValueError:
+                pass
+            else:
+                i += len(search_str)
+                priority = int(rule[i:i+(rule[i:].index(" "))].replace("\"", ""))
+
+            return priority
+
         attributes = []
         if default_zone is not None:
             if zone == default_zone:
@@ -424,7 +437,8 @@ class FirewallCommand(object):
                        " ".join(["%s/%s" % (port[0], port[1])
                                  for port in source_ports]))
         self.print_msg("  icmp-blocks: " + " ".join(icmp_blocks))
-        self.print_msg("  rich rules: \n\t" + "\n\t".join(rules))
+        self.print_msg("  rich rules: \n\t" + "\n\t".join(
+                            sorted(rules, key=rich_rule_sorted_key)))
 
     def print_service_info(self, service, settings):
         ports = settings.getPorts()
-- 
2.18.0