From 66e2b7a340ffd0345721f9b84dd938a8dc9d531e Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Thu, 5 Mar 2020 17:26:32 +0100 Subject: [PATCH] os-firewall: hook in rules and minor changes to FilterRuleField (https://github.com/opnsense/plugins/issues/1720) --- .../src/etc/inc/plugins.inc.d/pfplugin.inc | 41 +++++++++++++++++++ .../Firewall/FieldTypes/FilterRuleField.php | 7 +++- 2 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 net/firewall/src/etc/inc/plugins.inc.d/pfplugin.inc diff --git a/net/firewall/src/etc/inc/plugins.inc.d/pfplugin.inc b/net/firewall/src/etc/inc/plugins.inc.d/pfplugin.inc new file mode 100644 index 000000000..a9c194806 --- /dev/null +++ b/net/firewall/src/etc/inc/plugins.inc.d/pfplugin.inc @@ -0,0 +1,41 @@ +rules->rule->sortedBy(["sequence"]) as $key => $rule) { + $content = $rule->serialize(); + $content["#ref"] = "ui/firewall/filter#" . (string)$rule->getAttributes()['uuid']; + $fw->registerFilterRule($rule->getPriority(), $content); + } + } diff --git a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php index 4a73c35fc..6556ae488 100644 --- a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php +++ b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php @@ -54,6 +54,10 @@ class FilterRuleContainerField extends ContainerField if (!in_array($key, $map_manual)) { if (is_a($node, "OPNsense\\Base\\FieldTypes\\BooleanField")) { $result[$key] = !empty((string)$node); + } elseif (is_a($node, "OPNsense\\Base\\FieldTypes\\ProtocolField")) { + if ((string)$node != 'any') { + $result[$key] = (string)$node; + } } else { $result[$key] = (string)$node; } @@ -76,9 +80,8 @@ class FilterRuleContainerField extends ContainerField $result['destination']['port'] = (string)$this->destination_port; } } - // swap enabled + // field mappings and differences $result['disabled'] = empty((string)$this->enabled); - // $result['descr'] = (string)$this->description; $result['type'] = (string)$this->action; if (strpos((string)$this->interface, ",") !== false) {