OPNSense/core 5716c71src/opnsense/mvc/app/controllers/OPNsense/Base ApiControllerBase.php

firewall: fix issue with fputcsv() since PHP 8.4

PR: https://forum.opnsense.org/index.php?topic=52219.0
DeltaFile
+2-2src/opnsense/mvc/app/controllers/OPNsense/Base/ApiControllerBase.php
+2-21 files

OPNSense/core 10a4bdasrc/opnsense/mvc/app/controllers/OPNsense/Base ApiMutableModelControllerBase.php, src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api SourceNatController.php

Firewall: NAT: Source NAT: Add migration for Outbound NAT into Source NAT page (#10373)

Firewall: add Source NAT mode bridge and outbound NAT migration

Reflect legacy `nat.outbound.mode` into the Firewall MVC model as volatile
`general.snat_mode` and expose it in the new Source NAT view. Persist the value
back into the legacy configuration through `serializeToConfig()` using a scoped
general-section setter to avoid unrelated model validation.

Adjust the Source NAT grid output based on the selected mode. Automatic and
hybrid modes include synthetic automatic rule rows for display purposes, while
advanced mode only shows manual rules and disabled mode hides the grid.

Extend the migration assistant with an outbound NAT migration tab and add a
configd exporter for legacy `nat.outbound.rule` entries. Exported rows
use empty UUIDs so imports create fresh MVC rule identifiers.

Add missing Source NAT parity fields for `tag` and `nosync`, include them in
generated rows, and export them from legacy outbound NAT rules.

    [24 lines not shown]
DeltaFile
+169-10src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/SourceNatController.php
+115-26src/opnsense/mvc/app/views/OPNsense/Firewall/firewall_migration.volt
+134-0src/opnsense/scripts/filter/list_legacy_outbound_nat.php
+56-3src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+56-0src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/SNatModeField.php
+8-15src/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php
+538-5416 files not shown
+687-10122 files

OPNSense/core 9e0ed66src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api FilterBaseController.php FilterController.php, src/opnsense/mvc/app/views/OPNsense/Firewall nat_rule.volt

Firewall: NAT: download/upload rules as csv (#10371)

* Firewall: Turn downloadRules and uploadRules into a protected function inside FilterBaseController, implement it in Firewall rules and NAT pages

(cherry picked from commit 2680128a735d921616297539f59e5f33a2ff3c96)
DeltaFile
+106-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterBaseController.php
+3-64src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php
+27-0src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+10-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/NptController.php
+10-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/DNatController.php
+10-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/OneToOneController.php
+166-641 files not shown
+176-647 files

OPNSense/core e98b35asrc/opnsense/mvc/app/controllers/OPNsense/Firewall/Api DNatController.php, src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms dialogDNatRule.xml dialogSNatRule.xml

Firewall: NAT: Add the same UI design to the NAT pages as the firewall page (#10359)

* Firewall: NAT: Add the same UI design to the NAT pages as the firewall page from 18533b4, but slightly adjusted as NAT rules do not have sort_order or priority groups, so all grouping happens either by category, or to a synthetic automatic category if the rules contain an is_automatic true boolean.

* Implement sort_order in DNAT controller so the same tree view logic as in firewall rules can be used, this eases maintainence

* Add sort order volatile fields to SourceNatRuleField shared by SNAT, ONAT and NPTv6 inside filter model.

* make sweep

* prio_group is static in NAT rules, so we can use it directly

* Add comment about prio_group inside filter_rule.volt

(cherry picked from commit fedc3e5c5f632cc123c3ecb0453c34566e8690e8)
DeltaFile
+118-40src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+15-0src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/SourceNatRuleField.php
+11-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogDNatRule.xml
+10-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/DNatController.php
+10-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogSNatRule.xml
+10-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogNptRule.xml
+174-443 files not shown
+192-459 files

OPNSense/core 4e3cebfsrc/opnsense/mvc/app/library/OPNsense/Core SanitizeFilter.php, src/www authgui.inc

webui/authentication flow - add "local_uri" type in SanitizeFilter() and use it in the authgui.inc flow to ease reuse later.

The new filter is a bit more strict than it used to be, but for good reasons, we likely need the same cleansing in a couple of other areas like https://github.com/opnsense/core/issues/10433

(cherry picked from commit be43690f7abaf6823a93d6e4f292095bc4e5d56c)
DeltaFile
+25-1src/opnsense/mvc/app/library/OPNsense/Core/SanitizeFilter.php
+7-11src/www/authgui.inc
+32-122 files

OPNSense/core e48c9a2src/www interfaces.php

Interfaces/DHCP - Further tighten security for https://github.com/opnsense/core/security/advisories/GHSA-5rx3-w735-74wm

As advanced fields should always require high level access, we should prevent accidental mistakes from administrators allowing non-admins from changing these items.
In the long run, we likely want to drop these options, but that requires at least bringing back some common options which we are able to validate properly.

(cherry picked from commit 28229ed22d4bdcff98cfa3baff2cf43391d69bb7)
DeltaFile
+7-1src/www/interfaces.php
+7-11 files

OPNSense/core b0ace3fcontrib/IXR IXR_Library.php, src/opnsense/scripts/interfaces traffic_stats.php

src: non-canonical cast (double) is deprecated

(cherry picked from commit c00711e5950df4ce7c7d28e97566048e191ef6e1)
(cherry picked from commit 18b7cdb445ffa3b8370833fe18369a378c74dbef)
DeltaFile
+2-2contrib/IXR/IXR_Library.php
+2-2src/opnsense/scripts/interfaces/traffic_stats.php
+4-42 files

OPNSense/core 12f10fcsrc/opnsense/www/js opnsense.js

ui: add generic escaping function

(cherry picked from commit e272c8e19ffbdb181e0375ea4cce34f1444ae21d)
DeltaFile
+15-0src/opnsense/www/js/opnsense.js
+15-01 files

OPNSense/core 06a32bacontrib/parallel-lint/src Manager.php

contrib: another implicit null

(cherry picked from commit 041ab30a685d1bfe4b84f2b09226eca054c39b23)
DeltaFile
+1-1contrib/parallel-lint/src/Manager.php
+1-11 files

OPNSense/core 10a3591Scripts dashboard-acl.sh, src/opnsense/www/js/widgets/Metadata Core.xml

dashboard: skip acl check when requested (#10405)

(cherry picked from commit c1013498c26bfcef665b747dfa51383e93772a7d)
(cherry picked from commit fcacf66e12fa27c041eed85d328201303da13519)
DeltaFile
+20-12Scripts/dashboard-acl.sh
+4-0src/opnsense/www/js/widgets/Metadata/Core.xml
+24-122 files

OPNSense/core cb72a1fsrc/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api LogController.php, src/opnsense/www/js opnsense_widget_manager.js

widgets: enhance Live Log widget (#10086)

Uses client-side DOM for determining log endpoints, doesn't require any default target access, allows options for severity and search filter and variable log lines to show, which are displayed in summary in widget, and uses true log tailing plus backfill

---------

Co-authored-by: Stephan de Wit <stephan.de.wit at deciso.com>
(cherry picked from commit 956a256dbae339a893bc0001486122ce2a61565f)
DeltaFile
+213-30src/opnsense/www/js/widgets/LiveLog.js
+20-5src/opnsense/www/js/widgets/Metadata/Core.xml
+12-0src/opnsense/www/js/opnsense_widget_manager.js
+2-1src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/LogController.php
+247-364 files

OPNSense/core 61bed40src/opnsense/mvc/app/views/OPNsense/Core firmware.volt

firmware: fix small glitch that re-prompts for showing community plugins

It's already shown so no need to re-register.

(cherry picked from commit 9e1117e5242e9f0090f65ee0c99f25af69409bb4)
DeltaFile
+1-1src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt
+1-11 files

OPNSense/core 9e1117esrc/opnsense/mvc/app/views/OPNsense/Core firmware.volt

firmware: fix small glitch that re-prompts for showing community plugins

It's already shown so no need to re-register.
DeltaFile
+1-1src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt
+1-11 files

OPNSense/core d429164src/opnsense/scripts/captiveportal allow.py

captive portal: pass in ip_address as a set for accounting
DeltaFile
+1-1src/opnsense/scripts/captiveportal/allow.py
+1-11 files

OPNSense/core a309101src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api AliasController.php FilterBaseController.php

firewall: skip alias on rules GUI reload

Also align the alias load path in the controller with
how !skip_alias serializes the sequence after rules
reload inside filter_configure_sync().
DeltaFile
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/AliasController.php
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterBaseController.php
+2-22 files

OPNSense/core 7914d18src/opnsense/mvc/app/models/OPNsense/Firewall DNat.php

Firewall: NAT: Destination NAT: Add validations for No RDR, prevent target and local-port being set (#10447)
DeltaFile
+14-0src/opnsense/mvc/app/models/OPNsense/Firewall/DNat.php
+14-01 files

OPNSense/core a1d1669src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api FilterController.php

Firewall: Rules: Improve interface filter logic to include floating rules with multiple interfaces when they overlap with at least one interface in the interface filter request (#10449)

* Firewall: Rules: Improve interface filter logic to include floating rules with multiple interfaces when they overlap with at least one interface in the interface filter request.

* Improve inverted interface condition, make it symmetric to positive interface match in final else condition
DeltaFile
+21-10src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php
+21-101 files

OPNSense/core bb526d0src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api FilterController.php

Improve inverted interface condition, make it symmetric to positive interface match in final else condition
DeltaFile
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php
+1-11 files

OPNSense/core deaf436src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api FilterController.php

Firewall: Rules: Improve interface filter logic to include floating rules with multiple interfaces when they overlap with at least one interface in the interface filter request.
DeltaFile
+20-9src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php
+20-91 files

OPNSense/core 08f0edbsrc/opnsense/mvc/app/models/OPNsense/Firewall DNat.php

Firewall: NAT: Destination NAT: Add validations for No RDR, prevent target and local-port being set
DeltaFile
+14-0src/opnsense/mvc/app/models/OPNsense/Firewall/DNat.php
+14-01 files

OPNSense/core 4339005src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api AliasController.php FilterBaseController.php

firewall: skip alias on rules GUI reload

Also align the alias load path in the controller with
how !skip_alias serializes the sequence after rules
reload inside filter_configure_sync().
DeltaFile
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/AliasController.php
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterBaseController.php
+2-22 files

OPNSense/core 3ca0e7bsrc/opnsense/www/js opnsense_bootgrid.js

bootgrid: minor optimizations
DeltaFile
+23-9src/opnsense/www/js/opnsense_bootgrid.js
+23-91 files

OPNSense/core 698b7c1src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt

firewall: rules: enable virtualDOM
DeltaFile
+1-0src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+1-01 files

OPNSense/core 5c04019src/opnsense/mvc/app/library/OPNsense/Core FileObject.php

mvc: FileObject: fix exception bug (#10442)
DeltaFile
+1-1src/opnsense/mvc/app/library/OPNsense/Core/FileObject.php
+1-11 files

OPNSense/core f844a0dsrc/opnsense/mvc/tests/app/library/OPNsense/Interface IdassocTest.php

tests: Method ReflectionMethod::setAccessible() is deprecated since 8.5

(cherry picked from commit b5c542c1c23efeb90b77edb843debba42f4981a9)
DeltaFile
+0-1src/opnsense/mvc/tests/app/library/OPNsense/Interface/IdassocTest.php
+0-11 files

OPNSense/core 66ecddcsrc/opnsense/service/templates/OPNsense/WebGui php.ini

system: webgui templating more pretty

(cherry picked from commit 8ec23b3321a635ac7d5bfd094601b1c1670dac62)
DeltaFile
+1-2src/opnsense/service/templates/OPNsense/WebGui/php.ini
+1-21 files

OPNSense/core 6d18000contrib/IXR IXR_Library.php, src/etc/inc XMLRPC_Client.inc

system: curl_close() is deprecated

This has been a no-op since 8.0.0, but deprecated since 8.5.0.

(cherry picked from commit 305741f06eeba35234a86a219194c24b3e3d8f4d)
DeltaFile
+0-3src/etc/inc/XMLRPC_Client.inc
+0-1contrib/IXR/IXR_Library.php
+0-1src/etc/inc/plugins.inc.d/opendns.inc
+0-1src/opnsense/mvc/app/controllers/OPNsense/Core/Api/DashboardController.php
+0-1src/www/crash_reporter.php
+0-75 files

OPNSense/core 5ed48c2src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api AliasController.php

Firewall: fix 500 (TypeError) on alias getItem with unknown UUID (#10417)

(cherry picked from commit b4fa4cd2e2f6743eaf49e0523b2303fd31c3ee59)
DeltaFile
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/AliasController.php
+1-11 files

OPNSense/core d92ad28src/opnsense/mvc/app/controllers/OPNsense/Base ApiMutableModelControllerBase.php

mvc: whitespace
DeltaFile
+1-1src/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php
+1-11 files

OPNSense/core 08447desrc/opnsense/mvc/app/controllers/OPNsense/Firewall/forms dialogSNatRule.xml, src/opnsense/mvc/app/models/OPNsense/Firewall Filter.php Filter.xml

Firewall: NAT: Source NAT: Allow empty target which means interface address (#10441)

* Firewall: NAT: Source NAT: Empty target means interface address, allow it in the model and add hints, fix legacy outbound rules exporter as well

* Firewall: NAT: Source NAT: Target cannot be any, pf refuses to load that
DeltaFile
+2-5src/opnsense/scripts/filter/list_legacy_outbound_nat.php
+6-0src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php
+1-4src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml
+5-0src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogSNatRule.xml
+15-105 files