OPNSense/core 6f3b49fsrc/etc/inc/plugins.inc.d pf.inc

Firewall: NAT: Source NAT: skip rendering rules when mode is not advanced (manual) or hybrid (#10472)

(cherry picked from commit aa2a54a5a8a9988b7a63e6ccef18ab01a4777a83)
DeltaFile
+7-2src/etc/inc/plugins.inc.d/pf.inc
+7-21 files

OPNSense/core aa2a54asrc/etc/inc/plugins.inc.d pf.inc

Firewall: NAT: Source NAT: skip rendering rules when mode is not advanced (manual) or hybrid (#10472)
DeltaFile
+7-2src/etc/inc/plugins.inc.d/pf.inc
+7-21 files

OPNSense/core 41c83c0src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api OverviewController.php, src/opnsense/mvc/app/views/OPNsense/Unbound overview.volt

unbound: change layout to better fit generic styling

Also fix a PHP 8.5 issue while here.
DeltaFile
+9-6src/opnsense/mvc/app/views/OPNsense/Unbound/overview.volt
+2-6src/opnsense/www/css/dns-overview.css
+1-1src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/OverviewController.php
+12-133 files

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

captive portal: pass in ip_address as a set for accounting

(cherry picked from commit d42916446419ab995a33d42480d1761bc6894f78)
DeltaFile
+1-1src/opnsense/scripts/captiveportal/allow.py
+1-11 files

OPNSense/core 3370618src/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

(cherry picked from commit 08447de57ee17bc70737e2155a56bc292f92904d)
DeltaFile
+2-5src/opnsense/scripts/filter/list_legacy_outbound_nat.php
+6-0src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.php
+5-0src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+1-4src/opnsense/mvc/app/models/OPNsense/Firewall/Filter.xml
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogSNatRule.xml
+15-105 files

OPNSense/core bcbebe1src/opnsense/mvc/app/views/OPNsense/Firewall nat_rule.volt

Firewall: NAT: apply same bucket logic as filter_rule.volt

It's the same logic with slight adjustments as the NAT pages don't
require interface/group selection.

Ref: https://github.com/opnsense/core/commit/6402be8a5420f26192474f01af552b6617421513
(cherry picked from commit b3387a6ece5fd3090af11120a2f175cc5e555636)
DeltaFile
+163-86src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+163-861 files

OPNSense/core d0150bbsrc/opnsense/mvc/app/views/OPNsense/Firewall nat_rule.volt

Firewall: NAT: Source NAT: Hide command footer if snat_mode is automatic. (#10391)

(cherry picked from commit 4434a8e44deda97e9f601b44a9615266fcf5b2a9)
DeltaFile
+8-1src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+8-11 files

OPNSense/core c7c6b06src/opnsense/mvc/app/views/OPNsense/Firewall nat_rule.volt

Firewall: NAT: Destination NAT: Display effective port when local-port is omitted (#10237)

(cherry picked from commit 9a702a6a6aaa597e4f8e464b43311ca23e630a3c)
DeltaFile
+5-3src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+5-31 files

OPNSense/core 4b86d4esrc/opnsense/mvc/app/controllers/OPNsense/Hostdiscovery SettingsController.php, src/opnsense/mvc/app/views/OPNsense/Hostdiscovery settings.volt

Interfaces: Neighbors: Automatic Discovery - properly format api times to ISO format and convert timezone part in the view consistent with how datetime is currently formatted. closes https://github.com/opnsense/core/issues/10467

(cherry picked from commit 85f9680611ae60a9a9b38934b20e0283f1567bbf)
DeltaFile
+10-0src/opnsense/www/js/opnsense_bootgrid.js
+7-0src/opnsense/mvc/app/controllers/OPNsense/Hostdiscovery/SettingsController.php
+2-2src/opnsense/scripts/interfaces/list_hosts.py
+1-1src/opnsense/mvc/app/views/OPNsense/Hostdiscovery/settings.volt
+20-34 files

OPNSense/core 4ac6873. plist, src/opnsense/mvc/app/controllers/OPNsense/Kea/Api LeasesController.php

Kea: Add widget to show Kea DHCPv4 and DHCPv6 leases (#10380)

(cherry picked from commit 8f29999eb849406b933b198d8d16bb783456401e)
(cherry picked from commit e5762de47753da92da8c64d84aa5d3903b55d5e0)
(cherry picked from commit 7ccf782160ef5af99b9ee9c19a7697d18bf06b0f)
DeltaFile
+176-0src/opnsense/www/js/widgets/KeaLeases.js
+31-20src/opnsense/mvc/app/controllers/OPNsense/Kea/Api/LeasesController.php
+18-0src/opnsense/www/js/widgets/Metadata/Core.xml
+1-0src/opnsense/mvc/app/views/OPNsense/Kea/leases4.volt
+1-0plist
+1-0src/opnsense/mvc/app/views/OPNsense/Kea/leases6.volt
+228-206 files

OPNSense/core b27e17asrc/www firewall_nat_out.php

firewall: banner not for stable
DeltaFile
+0-7src/www/firewall_nat_out.php
+0-71 files

OPNSense/core 7746519src/etc/inc/plugins.inc.d pf.inc

Firewall: NAT: Source NAT: skip rendering rules when mode is not advanced (manual) or hybrid
DeltaFile
+7-2src/etc/inc/plugins.inc.d/pf.inc
+7-21 files

OPNSense/core 283ce70src/opnsense/mvc/app/controllers/OPNsense/Base ApiControllerBase.php

firewall: fix issue with fputcsv() since PHP 8.4 (part 2)

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 85f9680src/opnsense/mvc/app/controllers/OPNsense/Hostdiscovery SettingsController.php, src/opnsense/mvc/app/views/OPNsense/Hostdiscovery settings.volt

Interfaces: Neighbors: Automatic Discovery - properly format api times to ISO format and convert timezone part in the view consistent with how datetime is currently formatted. closes https://github.com/opnsense/core/issues/10467
DeltaFile
+10-0src/opnsense/www/js/opnsense_bootgrid.js
+7-0src/opnsense/mvc/app/controllers/OPNsense/Hostdiscovery/SettingsController.php
+2-2src/opnsense/scripts/interfaces/list_hosts.py
+1-1src/opnsense/mvc/app/views/OPNsense/Hostdiscovery/settings.volt
+20-34 files

OPNSense/core fbbc4adsrc/opnsense/scripts/system certctl.py

certctl: make it worse, but consistent. closes https://github.com/opnsense/core/issues/10450

This commit changes the default mode of "link" generation to files instead of symlinks, using -l we can still generate the links as before.
It also removes the preludes which explains the certificate type to the ordinary user (e.g. "GlobalSign Root...") and switches the default mode from 644 to 444.

We can expect this to be slighly slower than the previous version, but not a lot as we're only doing a full file compare for a limited set of items.

On my end this seems to satisfy the mtree compare.
DeltaFile
+32-12src/opnsense/scripts/system/certctl.py
+32-121 files

OPNSense/core cd46d8bsrc/opnsense/scripts/suricata/metadata/rules opnsense.xml

suricata: rule package rename  (#10466)
DeltaFile
+1-1src/opnsense/scripts/suricata/metadata/rules/opnsense.xml
+1-11 files

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/Firewall/Api SourceNatController.php, src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes SNatModeField.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
+20-3src/opnsense/mvc/app/models/OPNsense/Firewall/Menu/Menu.php
+550-4216 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/SourceNatController.php
+10-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/DNatController.php
+10-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/NptController.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 dialogNptRule.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/dialogNptRule.xml
+10-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogOneToOneRule.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