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 new file mode 100644 index 000000000..5f989c56c --- /dev/null +++ b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php @@ -0,0 +1,103 @@ +iterateItems() as $key => $node) { + if (!in_array($key, $map_manual)) { + if (is_a($node, "OPNsense\\Base\\FieldTypes\\BooleanField")) { + $result[$key] = !empty((string)$node); + } else { + $result[$key] = (string)$node; + } + } + } + // source / destination mapping + $result['source'] = array(); + if (!empty((string)$this->source_net)) { + $result['source']['network'] = (string)$this->source_net; + $result['source']['not'] = !empty((string)$this->source_not); + if (!empty((string)$this->source_port)) { + $result['source']['port'] = (string)$this->source_port; + } + } + $result['destination'] = array(); + if (!empty((string)$this->destination_net)) { + $result['destination']['network'] = (string)$this->destination_net; + $result['destination']['not'] = !empty((string)$this->destination_not); + if (!empty((string)$this->source_port)) { + $result['destination']['port'] = (string)$this->destination_port; + } + } + // swap enabled + $result['disabled'] = empty((string)$this->enabled); + // + $result['descr'] = (string)$this->description; + $result['type'] = (string)$this->action; + return $result; + } +} + +/** + * Class FilterRuleField + * @package OPNsense\Firewall\FieldTypes + */ +class FilterRuleField extends ArrayField +{ + /** + * @inheritDoc + */ + public function newContainerField($ref, $tagname) + { + $container_node = new FilterRuleContainerField($ref, $tagname); + $parentmodel = $this->getParentModel(); + $container_node->setParentModel($parentmodel); + return $container_node; + } +} diff --git a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml index 0404af5dd..0c07fe855 100644 --- a/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml +++ b/net/firewall/src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml @@ -5,14 +5,14 @@ - + 1 Y 1 - 1000000 + 99999 provide a valid sequence for sorting Y 1