OPNSense/core 740de6dsrc/opnsense/mvc/app/models/OPNsense/Firewall DNat.xml DNat.php, src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes DNatSequenceField.php NetworkMappedField.php

Firewall: NAT: Port Forward - refactor to MVC (work in progress) for https://github.com/opnsense/core/issues/8401

Add a model wrapper around nat/rule and align filter code to generate the same output when using the model.
To test this part, make a copy of /tmp/rules.debug, run migrations (/usr/local/opnsense/mvc/script/run_migrations.php) and execute rule generation via /usr/local/etc/rc.filter_configure

A diff between the newly generated rules.debug and the backup created earlier should show no differences.

The following notes apply:

o ipprotocol and protocol have no defaults set as old frontend code didn't enforce this, we should likely set defaults (inet, any) knowing this will show a small diff in the output
o registerForwardRule() replaces the array_merge with an !empty() compare per field as our defaults are empty instead of missing
o legacyMoveAddressFields() in Rule.php assumes any when network and address are not set, which should comply with frontend logic as "any" is set in these cases anyway
o source/destinations are converted inline, using a volatile field to trigger the initial load (as only one is used, we prefer network)
DeltaFile
+112-0src/opnsense/mvc/app/models/OPNsense/Firewall/DNat.xml
+69-0src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/DNatSequenceField.php
+59-0src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/NetworkMappedField.php
+50-0src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/CategoryField.php
+50-0src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/PortMappedField.php
+41-0src/opnsense/mvc/app/models/OPNsense/Firewall/DNat.php
+381-04 files not shown
+398-1910 files

OPNSense/core 41f9b32src/opnsense/mvc/app/library/OPNsense/System/Status UnboundBlocklistStatus.php, src/opnsense/scripts/unbound-dnsbl/lib dnsbl.py

unbound: notify user if a blocklist reset is required

This isn't perfect, as it can potentially take a while
for unbound to notice the change, keeping the notification
around longer than necessary. Additionally, this should be
a banner as well, but the banner isn't clickable in the current
state and the banner scope should ideally be separated from the
notification scope. To be continued.
DeltaFile
+53-0src/opnsense/mvc/app/library/OPNsense/System/Status/UnboundBlocklistStatus.php
+5-0src/opnsense/scripts/unbound-dnsbl/lib/dnsbl.py
+58-02 files

OPNSense/core d40bfc8src/opnsense/mvc/tests/app/models/OPNsense/Kea KeaDhcpv6Test.php, src/opnsense/mvc/tests/app/models/OPNsense/Kea/Snapshots KeaDhcpv6Test.json config.xml

Add KeaDhcpv6Test
DeltaFile
+146-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/Snapshots/KeaDhcpv6Test.json
+98-2src/opnsense/mvc/tests/app/models/OPNsense/Kea/Snapshots/config.xml
+30-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv6Test.php
+2-2src/opnsense/mvc/tests/app/models/OPNsense/Kea/Snapshots/KeaDhcpv4Test.json
+276-44 files

OPNSense/core f330182src/opnsense/mvc/tests/app/models/OPNsense/Kea KeaCtrlAgentTest.php, src/opnsense/mvc/tests/app/models/OPNsense/Kea/Snapshots KeaCtrlAgentTest.json

Add KeaCtrlAgentTest to check if this unit test is easily expandable with the same config.xml
DeltaFile
+32-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/Snapshots/KeaCtrlAgentTest.json
+30-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaCtrlAgentTest.php
+62-02 files

OPNSense/core ee0fb3asrc/opnsense/mvc/tests/app/models/OPNsense/Kea KeaDhcpv4Test.php, src/opnsense/mvc/tests/app/models/OPNsense/Kea/Base JsonSampleTestCase.php

Refactor so every test can use the same config.xml
DeltaFile
+219-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/Snapshots/KeaDhcpv4Test.json
+0-219src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/expected.json
+151-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/Snapshots/config.xml
+0-151src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/config.xml
+28-41src/opnsense/mvc/tests/app/models/OPNsense/Kea/Base/JsonSampleTestCase.php
+2-2src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test.php
+400-4136 files

OPNSense/core 8c21a6csrc/opnsense/mvc/tests/app/models/OPNsense/Kea/Base JsonSampleTestCase.php

Change tmp directory
DeltaFile
+1-1src/opnsense/mvc/tests/app/models/OPNsense/Kea/Base/JsonSampleTestCase.php
+1-11 files

OPNSense/core 23ea1e1src/opnsense/mvc/tests/app/models/OPNsense/Kea KeaDhcpv4Test.php, src/opnsense/mvc/tests/app/models/OPNsense/Kea/Base JsonSampleTestCase.php

Refine test approach a bit by using a shared JsonSampleTestCase helper base
DeltaFile
+219-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/expected.json
+0-219src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/enabled/expected.json
+0-151src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/enabled/config.xml
+151-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/config.xml
+94-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/Base/JsonSampleTestCase.php
+13-69src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test.php
+477-4396 files

OPNSense/core 7249312src/opnsense/mvc/tests/app/models/OPNsense/Kea KeaDhcpv4Test.php

Improve error throw by telling exact spots that failed in the generated json file
DeltaFile
+59-6src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test.php
+59-61 files

OPNSense/core 697c1d3src/opnsense/mvc/tests/app/models/OPNsense/Kea KeaDhcpv4Test.php, src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/enabled expected.json config.xml

dhcp/kea: Add golden sample unit test for DHCPv4 when all features are enabled
DeltaFile
+219-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/enabled/expected.json
+151-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test/enabled/config.xml
+33-0src/opnsense/mvc/tests/app/models/OPNsense/Kea/KeaDhcpv4Test.php
+403-03 files

OPNSense/core 274c965src/opnsense/mvc/app/views/OPNsense/IPsec sessions.volt

VPN: IPsec: Sessions: Fix missing commands translation (#9453)

DeltaFile
+1-1src/opnsense/mvc/app/views/OPNsense/IPsec/sessions.volt
+1-11 files

OPNSense/core 64423a4src/opnsense/mvc/app/views/OPNsense/IPsec sessions.volt

VPN: IPsec: Sessions: Fix missing commands translation
DeltaFile
+1-1src/opnsense/mvc/app/views/OPNsense/IPsec/sessions.volt
+1-11 files

OPNSense/core 9933ccbsrc/opnsense/mvc/app/models/OPNsense/Firewall DNat.php DNat.xml

Firewall: NAT: Port Forward - refactor to MVC (work in progress) for https://github.com/opnsense/core/issues/8401
DeltaFile
+41-0src/opnsense/mvc/app/models/OPNsense/Firewall/DNat.php
+29-0src/opnsense/mvc/app/models/OPNsense/Firewall/DNat.xml
+70-02 files

OPNSense/core b0ee41bsrc/etc/inc filter.inc

firewall: run filterlog directly after rules apply for #9449

(cherry picked from commit c6eaefc1e26550085b09abf1cca73fdc8f76db13)
DeltaFile
+10-10src/etc/inc/filter.inc
+10-101 files

OPNSense/core c6eaefcsrc/etc/inc filter.inc

firewall: run filterlog directly after rules apply for #9449
DeltaFile
+10-10src/etc/inc/filter.inc
+10-101 files

OPNSense/core 843970dsrc/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

dhcp/kea: Refactor KeaDhcpv6.php to use BaseField helper methods
DeltaFile
+25-26src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+25-261 files

OPNSense/core 29ee25dsrc/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.php

dhcp/kea: Refactor KeaDhcpv4.php to use BaseField helper methods
DeltaFile
+25-25src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.php
+25-251 files

OPNSense/core f070f17src/opnsense/mvc/app/models/OPNsense/OpenVPN OpenVPN.php

opevpn: style sweep

(cherry picked from commit bb6f59542e61a7c246d2b44dd08f8d6d4aee9322)
DeltaFile
+2-1src/opnsense/mvc/app/models/OPNsense/OpenVPN/OpenVPN.php
+2-11 files

OPNSense/core bb6f595src/opnsense/mvc/app/models/OPNsense/OpenVPN OpenVPN.php

opevpn: style sweep
DeltaFile
+2-1src/opnsense/mvc/app/models/OPNsense/OpenVPN/OpenVPN.php
+2-11 files

OPNSense/core 74d03f6src/etc/inc/plugins.inc.d unbound.inc

Services: Unbound DNS: Overrides - duplicate pointer records due to not casting the field types. closes https://github.com/opnsense/core/issues/9443

(cherry picked from commit 4b659d4fd8918f71b3e75068343d9fd61aa8f8ff)
DeltaFile
+2-2src/etc/inc/plugins.inc.d/unbound.inc
+2-21 files

OPNSense/core 4b659d4src/etc/inc/plugins.inc.d unbound.inc

Services: Unbound DNS: Overrides - duplicate pointer records due to not casting the field types. closes https://github.com/opnsense/core/issues/9443
DeltaFile
+2-2src/etc/inc/plugins.inc.d/unbound.inc
+2-21 files

OPNSense/core 12fbcf9src/etc/inc console.inc

shell: we don't need to log this error as it is intendend
DeltaFile
+1-1src/etc/inc/console.inc
+1-11 files

OPNSense/core 595f1c7src/www system_advanced_firewall.php

firewall: fix a lie
DeltaFile
+2-2src/www/system_advanced_firewall.php
+2-21 files

OPNSense/core 7fc5d13src/etc/inc filter.lib.inc

firewall: tiny bit of code style in this file
DeltaFile
+7-3src/etc/inc/filter.lib.inc
+7-31 files

OPNSense/core 7824ce5src/etc/inc filter.lib.inc

firewall: for better IPv6 PMTU let timex+paramprob through
DeltaFile
+1-1src/etc/inc/filter.lib.inc
+1-11 files

OPNSense/core ed8cae6src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes ModelRelationField.php

mvc: whitespace

(cherry picked from commit aa501d4923aeb0ce222c14bd838e855f70f1da15)
DeltaFile
+0-2src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ModelRelationField.php
+0-21 files

OPNSense/core aa501d4src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes ModelRelationField.php

mvc: whitespace
DeltaFile
+0-2src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ModelRelationField.php
+0-21 files

OPNSense/core 4bc543esrc/opnsense/mvc/app/models/OPNsense/OpenVPN OpenVPN.php OpenVPN.xml

openvpn: add fast-io option (#9430)

(cherry picked from commit c3784df48a2bc3506a8f475dacb13a55be07f7b2)
(cherry picked from commit 5f3f2b2b6a3ba70120fcb99a1042da31e1c5c807)
DeltaFile
+11-0src/opnsense/mvc/app/models/OPNsense/OpenVPN/OpenVPN.php
+1-0src/opnsense/mvc/app/models/OPNsense/OpenVPN/OpenVPN.xml
+12-02 files

OPNSense/core 7a62423src/opnsense/mvc/app/library/OPNsense/Core Shell.php, src/opnsense/mvc/app/library/OPNsense/Trust Store.php

mvc: style tweaks

(cherry picked from commit 47bcff35c8861a40a0eb976b294debbe36ee1fb6)
DeltaFile
+3-3src/opnsense/mvc/app/library/OPNsense/Trust/Store.php
+1-1src/opnsense/mvc/app/library/OPNsense/Core/Shell.php
+4-42 files

OPNSense/core 5633420src/opnsense/mvc/app/controllers/OPNsense/Unbound/forms dialogHostAlias.xml

Services: Unbound DNS: Overrides - update helptext as discussed in https://github.com/opnsense/core/issues/9429

(cherry picked from commit 8d1f08c2b043f2cd77b8f5c991e30ef5a3812bae)
DeltaFile
+2-2src/opnsense/mvc/app/controllers/OPNsense/Unbound/forms/dialogHostAlias.xml
+2-21 files

OPNSense/core f1feee1src/opnsense/service/modules/addons template_helpers.py, src/opnsense/service/templates/OPNsense/IDS suricata.yaml

Services: Intrusion Detection - fix support for conf.d directory, we need to add a new glob method which is not constraint to the template directory (absolute_glob())
DeltaFile
+10-1src/opnsense/service/modules/addons/template_helpers.py
+2-2src/opnsense/service/templates/OPNsense/IDS/suricata.yaml
+12-32 files