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

mvc: sweep
DeltaFile
+1-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php
+1-11 files

OPNSense/plugins 12f8828net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga DiagnosticsController.php, net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api DiagnosticsController.php

Squashed commit of the following:

commit b256ed7fcfa5e36bfd29e08c479bd02b461b21f5
Author: Ad Schellevis <ad at opnsense.org>
Date:   Sun Apr 12 14:31:54 2026 +0200

    net/frr - Routing: STATIC, finish https://github.com/opnsense/plugins/pull/5390 and add diagnostics.

commit be8a53d3d2fc4a91e7834e68322dd295a41f6888
Author: Sven Scholle <sven at shelldog.de>
Date:   Sat Apr 11 14:50:56 2026 +0200

    net/frr: add BFD dependency support for static routes

    We redistribute static routes from staticd into OSPF via WireGuard tunnels.
    We want the redistribution to depend on whether the tunnel is actually up.
    Since WireGuard interfaces remain up even when the tunnel is not functional, BFD appears to be the simplest solution for detecting tunnel failures.
DeltaFile
+18-1net/frr/src/opnsense/mvc/app/views/OPNsense/Quagga/diagnostics.volt
+16-1net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/DiagnosticsController.php
+10-0net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditSTATICRoute.xml
+7-0net/frr/src/opnsense/service/conf/actions.d/actions_quagga.conf
+7-0net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/DiagnosticsController.php
+4-0net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/STATICd.xml
+62-21 files not shown
+65-27 files

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

Firewall: Rules [new] - refactor searchRuleAction() to use the same filtering and sorting logic on MVC and legacy data.

The current implementation is applying our filter logic twice for MVC records, first it uses the default searchBase() construct, which it then needs to pipe through searchRecordsetBase() again. There are a couple of downsides here, it's more expensive (although the user likely won't notice), but also requires duplication of filter logic.

With the logic introduced in https://github.com/opnsense/core/commit/c81417f26747a9e4e46f608c2791bbae805e79fd , we can extract the exact same content from our model so we can merge all at once and push it through our filtering and sorting logic.

The idea is to be able to "smarten" searchRecordsetBase() a bit so we can apply some additional logic based on types at some point in time, which requires all data to passthrough the same pipeline at least.

This commit should be backwards compatible with the previous code.
DeltaFile
+53-87src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php
+53-871 files

OPNSense/core f1a3150src/opnsense/scripts/interfaces gen_duid.php

interfaces: minor whitespace change
DeltaFile
+1-0src/opnsense/scripts/interfaces/gen_duid.php
+1-01 files

OPNSense/plugins 042783d.github pull_request_template.md

github: update pull request template following tweaks on master
DeltaFile
+7-5.github/pull_request_template.md
+7-51 files

OPNSense/core a119216.github pull_request_template.md

github: add pull request template similar to plugins
DeltaFile
+30-0.github/pull_request_template.md
+30-01 files

OPNSense/core 5e64948src/opnsense/mvc/app/library/OPNsense/Base UIModelGrid.php

mvc: another style sweep
DeltaFile
+1-1src/opnsense/mvc/app/library/OPNsense/Base/UIModelGrid.php
+1-11 files

OPNSense/core dd226f3src/opnsense/mvc/app/library/OPNsense/Auth Radius.php

mvc: style sweep
DeltaFile
+11-9src/opnsense/mvc/app/library/OPNsense/Auth/Radius.php
+11-91 files

OPNSense/core c81417fsrc/opnsense/mvc/app/library/OPNsense/Base UIModelGrid.php

mvc: minor cleanup in UIModelGrid, remove flatten() method as getFlatNodes() is almost the same.
DeltaFile
+6-13src/opnsense/mvc/app/library/OPNsense/Base/UIModelGrid.php
+6-131 files

OPNSense/core d739e53src/opnsense/mvc/app/library/OPNsense/Auth LDAP.php

Auth/LDAP - move ldap_escape to caller for https://github.com/opnsense/core/issues/10129

Although this https://github.com/opnsense/core/commit/016f66cb4620cd48183fa97843f343bb71813c6e was the correct fix for the auth sequence, other callers which search the database
with a static set of expressions are influenced by this as well.

To some degree it might be better to have different callers for this, but this increases the impact if the otherwise limited change.
DeltaFile
+5-5src/opnsense/mvc/app/library/OPNsense/Auth/LDAP.php
+5-51 files

OPNSense/core 95483e5src/opnsense/mvc/app/library/OPNsense/Auth Radius.php

System: Access: Servers - RADIUS, implement NAS-IP-Address attribute. closes https://github.com/opnsense/core/pull/10089

Refactor PR a bit and implement the requested attribute.
For existing setups, the send attributes should be unchanged.
DeltaFile
+26-3src/opnsense/mvc/app/library/OPNsense/Auth/Radius.php
+26-31 files

OPNSense/core 0460e24src/opnsense/mvc/app/views/OPNsense/Diagnostics fw_log.volt

firewall: live view: decode HTML where necessary to aid filtering. Closes https://github.com/opnsense/core/issues/10107
DeltaFile
+12-6src/opnsense/mvc/app/views/OPNsense/Diagnostics/fw_log.volt
+12-61 files

OPNSense/core c62ef33src/opnsense/service/templates/OPNsense/Cron user.cron

system: more natural cron escaping for command #10075

Changes command output from

  /usr/local/sbin/configctl -d -- 'system remote backup'

to

  /usr/local/sbin/configctl -d -- system remote backup

which is actually correct and needed since c491376.

Not sure what "\n" had to do with it but in the case of the
command it should be a normal string and risk of injection
is lower than parameter (but still mitigated properly).
DeltaFile
+5-5src/opnsense/service/templates/OPNsense/Cron/user.cron
+5-51 files

OPNSense/core 1a8a4e8src/opnsense/service/templates/OPNsense/Cron user.cron

system: more natural cron escaping for command #10075
DeltaFile
+5-5src/opnsense/service/templates/OPNsense/Cron/user.cron
+5-51 files

OPNSense/core 7e000a9src/www system_general.php

system: shorten static route collection code here
DeltaFile
+1-3src/www/system_general.php
+1-31 files

OPNSense/core 1c2405e. plist, src/opnsense/mvc/app/controllers/OPNsense/Core/Api DashboardController.php

mvc: introduce JSON field type and refactor dashboard to use it, closes https://github.com/opnsense/core/issues/10064

We can use the same fieldtype for the favorites PR (https://github.com/opnsense/core/pull/10033)
DeltaFile
+86-0src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/JsonField.php
+5-8src/opnsense/mvc/app/controllers/OPNsense/Core/Api/DashboardController.php
+1-1src/opnsense/mvc/app/models/OPNsense/Auth/User.xml
+1-0plist
+93-94 files

OPNSense/core df34601. plist, src/opnsense/mvc/app/models/OPNsense/Base/Menu MenuSystem.php MenuContainer.php

MVC: add support for pluggable dynamic menu items and move some existing parts out of the MenuSystem class

In most cases we use static menu registartions, but there are exceptions which depend on interfaces for example.
While looking at https://github.com/opnsense/core/pull/10033, a longer standing wish came up again, which is the reason to add this support right now. It also helps in removing some legacy components for good via plugins.

To register new menu items, the following pattern may be used:

* In your model, derive a Menu class from MenuContainer
* implement a method collect() which should add new menu items via the appendItem() {bound to appendItem in MenuSystem}

Always try to minimize the amount of code inside these plugins as this code will be executed on each page load.
DeltaFile
+59-163src/opnsense/mvc/app/models/OPNsense/Base/Menu/MenuSystem.php
+129-0src/opnsense/mvc/app/models/OPNsense/Interfaces/Menu/Menu.php
+98-0src/opnsense/mvc/app/models/OPNsense/Firewall/Menu/Menu.php
+49-0src/opnsense/mvc/app/models/OPNsense/Base/Menu/MenuContainer.php
+3-0plist
+338-1635 files

OPNSense/plugins 4d7a938net/frr/src/etc/rc.syshook.d/start 50-frr, net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api Ospf6settingsController.php

net/frr: some small style updates while here
DeltaFile
+22-25net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/Ospf6settingsController.php
+1-1net/frr/src/etc/rc.syshook.d/start/50-frr
+0-2net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/BFD.xml
+23-283 files

OPNSense/plugins 290c67ddns/ddclient/src/opnsense/scripts/ddclient/lib/account hetzner.py allinkl.py

dns/ddclient: linter complaints fixed
DeltaFile
+1-1dns/ddclient/src/opnsense/scripts/ddclient/lib/account/hetzner.py
+0-0dns/ddclient/src/opnsense/scripts/ddclient/lib/account/allinkl.py
+1-12 files

OPNSense/plugins ec68572security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation AcmeTruenasWS.php AcmeTruenasws.php

security/acme-client: rename class file name to match class name
DeltaFile
+48-0security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmeTruenasWS.php
+0-48security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmeTruenasws.php
+48-482 files

OPNSense/plugins 4d62f14security/q-feeds-connector Makefile pkg-descr, security/q-feeds-connector/src/opnsense/scripts/qfeeds/lib log.py

security/q-feeds-connector: sync with master
DeltaFile
+6-2security/q-feeds-connector/src/opnsense/scripts/qfeeds/lib/log.py
+1-1security/q-feeds-connector/Makefile
+1-0security/q-feeds-connector/pkg-descr
+8-33 files

OPNSense/plugins aa099c5security/q-feeds-connector Makefile pkg-descr

security/q-feeds-connector: wrap up this revision
DeltaFile
+1-1security/q-feeds-connector/Makefile
+1-0security/q-feeds-connector/pkg-descr
+2-12 files

OPNSense/plugins 8957fcesecurity/clamav pkg-descr

security/clamav: sync with master
DeltaFile
+1-1security/clamav/pkg-descr
+1-11 files

OPNSense/plugins 8e215b8security/acme-client pkg-descr Makefile, security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms dialogAction.xml

security/acme-client: sync with master
DeltaFile
+48-0security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmeTruenasws.php
+24-1security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml
+22-2security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml
+2-8security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCertificate.php
+8-0security/acme-client/pkg-descr
+1-1security/acme-client/Makefile
+105-126 files

OPNSense/plugins 094754cnet/turnserver pkg-descr Makefile, net/turnserver/src/opnsense/mvc/app/controllers/OPNsense/Turnserver/forms settings.xml

net/turnserver: sync with master
DeltaFile
+26-20net/turnserver/src/opnsense/mvc/app/views/OPNsense/Turnserver/index.volt
+8-0net/turnserver/pkg-descr
+8-0net/turnserver/src/opnsense/mvc/app/controllers/OPNsense/Turnserver/forms/settings.xml
+6-0net/turnserver/src/opnsense/mvc/app/models/OPNsense/Turnserver/Turnserver.xml
+5-0net/turnserver/src/opnsense/service/templates/OPNsense/Turnserver/turnserver.conf
+1-1net/turnserver/Makefile
+54-216 files

OPNSense/plugins 35508e7. LICENSE, security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation AcmeTruenasws.php

LICENSE: sync
DeltaFile
+2-0LICENSE
+1-1security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmeTruenasws.php
+3-12 files

OPNSense/plugins 3290179dns/ddclient Makefile

dns/ddclient: bump revision for now
DeltaFile
+1-1dns/ddclient/Makefile
+1-11 files

OPNSense/plugins 9021667net-mgmt/telegraf pkg-descr

net-mgmt/telegraf: sync with master
DeltaFile
+1-1net-mgmt/telegraf/pkg-descr
+1-11 files

OPNSense/plugins f71dc06.github pull_request_template.md

Contributing: typo (#5351)

(cherry picked from commit 3ec12a40ecba27b75dd1016d42a36d977c00277a)
DeltaFile
+1-1.github/pull_request_template.md
+1-11 files

OPNSense/core e75f212src/opnsense/mvc/app/library/OPNsense/Auth LDAP.php

system: escape LDAP username during search

Reported by: Matt Andreko
PR: GHSA-jpm7-f59c-mp54

(cherry picked from commit 016f66cb4620cd48183fa97843f343bb71813c6e)
DeltaFile
+3-2src/opnsense/mvc/app/library/OPNsense/Auth/LDAP.php
+3-21 files