OPNSense/core 471e0bfsrc/etc/inc/plugins.inc.d captiveportal.inc, src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms dialogAssignment.xml

Merge remote-tracking branch 'origin/master' into firewall-metadata
DeltaFile
+2,023-963src/opnsense/www/js/qrcode.js
+423-0src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms/dialogAssignment.xml
+147-152src/opnsense/www/js/opnsense_theme.js
+206-75src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+145-123src/etc/inc/plugins.inc.d/captiveportal.inc
+176-1src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.xml
+3,120-1,31442 files not shown
+3,837-1,55848 files

OPNSense/core d2364c3src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms dialogConfigBuilder.xml, src/opnsense/mvc/app/views/OPNsense/Wireguard general.volt

VPN: Wireguard: Give peer generator standard save and cancel buttons
DeltaFile
+26-8src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+0-6src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogConfigBuilder.xml
+26-142 files

OPNSense/core f95e815src/opnsense/mvc/app/views/OPNsense/Wireguard general.volt

VPN: Wireguard: Trigger settings-changed message when new peer is persisted via peer generator
DeltaFile
+1-0src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+1-01 files

OPNSense/core 2db3c2csrc/opnsense/mvc/app/views/OPNsense/Wireguard general.volt

VPN: Wireguard: Do not toggle general settings as they are hidden anyway
DeltaFile
+0-1src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+0-11 files

OPNSense/core 53a0e9csrc/opnsense/mvc/app/views/OPNsense/Wireguard general.volt

wireguard: make the textarea of the generator interactive

This lets the QR code jump a bit on the new peer path, but
also allows updating immediately after typing in the config.

Maybe we can defer the jumpy start a bit until all settings
have been gathered and then start unhiding the QR code.
DeltaFile
+2-2src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+2-21 files

OPNSense/core 3f9d774src/opnsense/mvc/app/views/OPNsense/Wireguard general.volt

wireguard: do not show general settings on generator tab

There is a minor scoping issue in the peer generator action
button that needs fixing.
DeltaFile
+3-0src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+3-01 files

OPNSense/core e05fcaasrc/opnsense/www/js opnsense_ui.js

ui: trigger "h" and "a" shortcuts on all matches

Problem seen on WireGuard and IPsec settings page.  Advanced
events were also triggering on all elements on a single click
which meant that they would re-disable on enable on IPsec.
DeltaFile
+14-14src/opnsense/www/js/opnsense_ui.js
+14-141 files

OPNSense/core 0b3c513src/opnsense/mvc/app/models/OPNsense/Wireguard Server.xml

wireguard: FreeBSD 15 no longer allows addresses without netmasks; closes #10746

> The command </sbin/ifconfig 'wg0' 'inet' '10.0.0.2' alias> returned
> exit code 1 and the output was "ifconfig: ERROR: setting interface
> address without mask is no longer supported."

In 0fdb755 we did a similar change for the client side, but left the
server side as is.  Since this no longer works in FreeBSD we can simply
tighten the validation instead of trying to guess what FreeBSD ifconfig
would have guessed from the IP address.

Still don't think this was a thing that should have been broken, but
it is what it is.
DeltaFile
+1-0src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml
+1-01 files

OPNSense/core d1cc040src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api ClientController.php, src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms dialogConfigBuilder.xml dialogEditWireguardClient.xml

VPN: Wireguard: preserve peer generator state for existing peers (#10745)

The peer generator was originally designed as a one-shot workflow. Once a
peer had been created, the generated client configuration could no longer be
reconstructed because part of the required state was not retained.

Extend the generator so existing peers can be opened again when their private
key was explicitly stored. Generator defaults that belong to an instance are
kept with that instance, while peer-specific values remain with the peer.

Reference mode reuses the existing peer generator to rebuild the client
configuration and QR code instead of introducing a separate export path.

Private key storage remains opt-in to preserve the existing security and
persistence behavior for users who do not need this functionality.
DeltaFile
+202-74src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+36-0src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardServer.xml
+18-0src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardClient.xml
+8-2src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogConfigBuilder.xml
+2-0src/opnsense/mvc/app/models/OPNsense/Wireguard/Client.xml
+1-0src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api/ClientController.php
+267-761 files not shown
+268-767 files

OPNSense/core fc043e8src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api ClientController.php, src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms dialogEditWireguardClient.xml dialogEditWireguardServer.xml

Expose the peer generator storage in instance and peers so users can change the defaults even without creating a new peer. Since we now have a reference mode, that otherwise would be awkward without implementing two different save actions there.
DeltaFile
+36-0src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardServer.xml
+18-10src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardClient.xml
+19-6src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+2-2src/opnsense/mvc/app/models/OPNsense/Wireguard/Client.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Wireguard/Server.xml
+1-0src/opnsense/mvc/app/controllers/OPNsense/Wireguard/Api/ClientController.php
+77-186 files

OPNSense/core 09c8df5src/opnsense/mvc/app/controllers/OPNsense/Interfaces/Api AssignmentController.php, src/opnsense/mvc/app/models/OPNsense/Interfaces NetworkInterface.php

mvc: style
DeltaFile
+0-1src/opnsense/scripts/interfaces/apply_pending_if_changes.php
+0-1src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.php
+0-1src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/GatewayField.php
+0-1src/opnsense/mvc/app/controllers/OPNsense/Interfaces/Api/AssignmentController.php
+0-44 files

OPNSense/core 92cb28asrc/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms dialogAssignment.xml, src/opnsense/mvc/app/models/OPNsense/Interfaces NetworkInterface.php NetworkInterface.xml

Interfaces: Assignments - add interface configuration settings in new assignments page. for https://github.com/opnsense/core/issues/10568 (#10740)

Refactor NetworkInterface model to reuse existing property names as much as possible, move from/to legacy logic into a custom fieldtype and store all legacy settings in a container named "pending" to ease reconfiguration and updating legacy configurations.

Skip wireless and other advanced settings for now, only implement a minimal set of validations.
DeltaFile
+423-0src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms/dialogAssignment.xml
+176-1src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.xml
+147-0src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/NetworkInterfaceField.php
+116-14src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.php
+58-0src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/GatewayField.php
+23-1src/opnsense/scripts/interfaces/apply_pending_if_changes.php
+943-163 files not shown
+981-199 files

OPNSense/core 1ea6581src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms dialogConfigBuilder.xml dialogEditWireguardClient.xml, src/opnsense/mvc/app/models/OPNsense/Wireguard Client.xml

vpn/wireguard: Add readonly mode to peer generator and optionally store private key
DeltaFile
+186-71src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+8-2src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogConfigBuilder.xml
+10-0src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardClient.xml
+2-0src/opnsense/mvc/app/models/OPNsense/Wireguard/Client.xml
+206-734 files

OPNSense/core 090e05esrc/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms dialogConfigBuilder.xml dialogEditWireguardClient.xml, src/opnsense/mvc/app/models/OPNsense/Wireguard Client.xml

vpn/wireguard: Add readonly mode to peer generator and optionally store private key
DeltaFile
+174-51src/opnsense/mvc/app/views/OPNsense/Wireguard/general.volt
+8-2src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogConfigBuilder.xml
+10-0src/opnsense/mvc/app/controllers/OPNsense/Wireguard/forms/dialogEditWireguardClient.xml
+2-0src/opnsense/mvc/app/models/OPNsense/Wireguard/Client.xml
+194-534 files

OPNSense/core 5423ae8src/opnsense/mvc/app/views/OPNsense/Auth user.volt

system: approximate user being expired in the grid

This would only be correct if the backend gave us a
definitive expired message based on the time zone.
The historic issue is that the expiration no longer
sets disabled, but it's still a useful visual clue.

PR: https://forum.opnsense.org/index.php?topic=52759.0
DeltaFile
+7-1src/opnsense/mvc/app/views/OPNsense/Auth/user.volt
+7-11 files

OPNSense/core c7d3bd9src/opnsense/www/js opnsense_theme.js

ui: fix condition to check sidebar toggle loading (#10743)

Changed the sidebar guard from && to || so it aborts when either the CSS
or the navigation element is missing.
DeltaFile
+1-1src/opnsense/www/js/opnsense_theme.js
+1-11 files

OPNSense/core 613dc20src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms dialogAssignment.xml, src/opnsense/mvc/app/models/OPNsense/Interfaces NetworkInterface.php NetworkInterface.xml

Interfaces: Assignments - add interface configuration settings in new assignments page. for https://github.com/opnsense/core/issues/10568

Refactor NetworkInterface model to reuse existing property names as much as possible, move from/to legacy logic into a custom fieldtype and store all legacy settings in a container named "pending" to ease reconfiguration and updating legacy configurations.

Skip wireless and other advanced settings for now, only implement a minimal set of validations.
DeltaFile
+420-0src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms/dialogAssignment.xml
+176-1src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.xml
+147-0src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/NetworkInterfaceField.php
+116-14src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.php
+58-0src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/GatewayField.php
+23-1src/opnsense/scripts/interfaces/apply_pending_if_changes.php
+940-163 files not shown
+978-199 files

OPNSense/core 8626fc8src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms dialogAssignment.xml, src/opnsense/mvc/app/models/OPNsense/Interfaces NetworkInterface.php NetworkInterface.xml

Interfaces: Assignments - add interface configuration settings in new assignments page. for https://github.com/opnsense/core/issues/10568

Refactor NetworkInterface model to reuse existing property names as much as possible, move from/to legacy logic into a custom fieldtype and store all legacy settings in a container named "pending" to ease reconfiguration and updating legacy configurations.

Skip wireless and other advanced settings for now, only implement a minimal set of validations.
DeltaFile
+418-0src/opnsense/mvc/app/controllers/OPNsense/Interfaces/forms/dialogAssignment.xml
+176-1src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.xml
+147-0src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/NetworkInterfaceField.php
+116-14src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.php
+58-0src/opnsense/mvc/app/models/OPNsense/Interfaces/FieldTypes/GatewayField.php
+23-1src/opnsense/scripts/interfaces/apply_pending_if_changes.php
+938-163 files not shown
+976-199 files

OPNSense/core 3279d3bsrc/etc/inc filter.inc, src/etc/inc/plugins.inc.d pf.inc captiveportal.inc

Firewall: NAT: Destination NAT: expose automatic rules similar to Source NAT (#10703)

* Firewall: NAT: Destination NAT: expose automatic rules similar to Source NAT

* Firewall: NAT: Destination NAT: include automatic rules in recordset pipeline

* captiveportal.inc rename rdr_port to localport since thats better here

* Ensure getDescription() is called for fields

* firewall: use the new register functions Destination/Static/Source

* firewall: change 'outbound_nat' to 'source_nat' for consistency

* firewall: also change outbound_net now that it is becoming a permanent thing

* firewall: adjust name for destination nat rules too

* captiveportal: restructure the rules generation

    [11 lines not shown]
DeltaFile
+145-123src/etc/inc/plugins.inc.d/captiveportal.inc
+98-41src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/DNatController.php
+25-4src/etc/inc/plugins.inc.d/pf.inc
+5-13src/etc/inc/filter.inc
+9-2src/opnsense/service/conf/actions.d/actions_filter.conf
+4-1src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+286-1844 files not shown
+290-18810 files

OPNSense/core 34cf1d8src/etc/inc/plugins.inc.d pf.inc

Add missing reference to Anti Lockout nordr rule
DeltaFile
+1-0src/etc/inc/plugins.inc.d/pf.inc
+1-01 files

OPNSense/core 53f7bbcsrc/opnsense/mvc/app/controllers/OPNsense/Firewall/Api DNatController.php, src/opnsense/mvc/app/views/OPNsense/Firewall nat_rule.volt

Pass rule reference into Lookup button
DeltaFile
+4-1src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+1-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/DNatController.php
+5-12 files

OPNSense/core 559d8f3src/opnsense/www/js/widgets Services.js

dashboard: truncate long service names in services widget

(cherry picked from commit 84e47e1fac4ef4ffa06dd69e03504d819d134e90)
DeltaFile
+1-1src/opnsense/www/js/widgets/Services.js
+1-11 files

OPNSense/core 892863dsrc/opnsense/mvc/app/views/layouts default.volt, src/opnsense/www/css opnsense-bootgrid-layout.css

ui: tabulator: Add _showMaximized() modal that can show a grid close to full screen (#10656)

(cherry picked from commit 5dd550ae65b07c66ddf832ec2db3e6cf01fd1f44)
(cherry picked from commit 5c6f6504ed848d049903eac94570e6b6e5f4b71c)
DeltaFile
+83-3src/opnsense/www/js/opnsense_bootgrid.js
+25-0src/opnsense/www/css/opnsense-bootgrid-layout.css
+7-0src/opnsense/www/js/opnsense_ui.js
+3-1src/opnsense/mvc/app/views/layouts/default.volt
+118-44 files

OPNSense/core 1e17d9bsrc/opnsense/service/templates/OPNsense/Unbound/core blocklists.conf

Services/Unbound: update hagezi blocklists to use new mirror URLs (#10709)

(cherry picked from commit 42870829c143cb2d00152cf4d6d8f9f22bcb1018)
DeltaFile
+22-22src/opnsense/service/templates/OPNsense/Unbound/core/blocklists.conf
+22-221 files

OPNSense/core 478aa72src/opnsense/scripts/filter list_states.py

firewall: change copyright years, no changes to file
DeltaFile
+1-1src/opnsense/scripts/filter/list_states.py
+1-11 files

OPNSense/core 35a37a5src/opnsense/mvc/app/views/layout_partials base_form.volt

mvc: fix typo in base_form.volt advanced/help toggle ids (#10734)

(cherry picked from commit 24b997eb8b6e402c57712aafd598e96abe0c0099)
DeltaFile
+2-2src/opnsense/mvc/app/views/layout_partials/base_form.volt
+2-21 files

OPNSense/core 7e0d3a9src/opnsense/mvc/app/views/OPNsense/Kea dhcpv6.volt

Services: Kea DHCPv6: use DOM construction for the 'dynamic' label

(cherry picked from commit 4d95deb43097fb2511b657e65531c906370ffb28)
DeltaFile
+9-3src/opnsense/mvc/app/views/OPNsense/Kea/dhcpv6.volt
+9-31 files

OPNSense/core 62b2b2fsrc/opnsense/mvc/app/views/OPNsense/Kea dhcpv6.volt dhcpv4.volt

Services: Kea DHCPv4/v6: Remove count badge from GroupBy with static configuration elements, since its unlikely to change and its distracting

(cherry picked from commit 6f6d6fa05ec274a4b3589d33e6e4249a162993c2)
DeltaFile
+1-2src/opnsense/mvc/app/views/OPNsense/Kea/dhcpv6.volt
+1-2src/opnsense/mvc/app/views/OPNsense/Kea/dhcpv4.volt
+2-42 files

OPNSense/core cd493ccsrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes JsonAuditField.php, src/opnsense/mvc/app/models/OPNsense/Firewall DNat.xml

Create a simple migration for audit data in old containers in the actionPostLoadingEvent of the JsonAuditField
DeltaFile
+34-0src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/JsonAuditField.php
+12-2src/opnsense/mvc/app/models/OPNsense/Firewall/DNat.xml
+46-22 files

OPNSense/core 4da79d8src/opnsense/mvc/app/views/OPNsense/Firewall alias.volt

Firewall: Alias: Use same dynamic label as in KEA DHCPv6 for a unified look

(cherry picked from commit 238426975a1aa808839355b66ca1fe07962a8a3f)
DeltaFile
+3-1src/opnsense/mvc/app/views/OPNsense/Firewall/alias.volt
+3-11 files