src: gettext() first, then sprintf() (#11081)
Firewall: Settings: Advanced passed the value to gettext() as a second
argument. PHP 8 rejects that with a fatal ArgumentCountError, so an
unknown syncookie or debug type ended the page instead of showing the
input error.
System: Settings: Administration formatted the certificate name into
the string before the lookup, so the message never reached the
translation template.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
System: Routes: Configuration - initial work on collecting the expected routes based on our configuration, for https://github.com/opnsense/core/issues/10569
This should partly replace exiting dpinger calls as we need the same information here, for now we migrate what we need so we can refactor system_routing_configure() later when our strategy is complete.
The basic idea is to gather the set we plan to update and compare all with the existing routing table, so we can easily drop the ones we don't need and add the ones that we miss.
Initially its not the intention to offer multiple active default routes via gateways, but eventually we could consider hooking monitors to static routes as well.
Historically, considering a route is singular, it kind of made sense to have defaults managed via "gateways", but when multiple could exist at the same time, the route configuration might have been a more logical spot.
(work in progress)
Reporting: Health: Improve graph metadata and formatting (#11038)
Add improved metadata types in the xml definitions, adjust front-end as needed. Also add a "logarithmic" checkbox. Port this behavior to the health graph widget(s) as well.
dashboard: support indirect widget endpoint declarations
Allow widget metadata to mark individual endpoints as indirect when
API calls are delegated to a shared helper, as is the case for
HealthGraph.js + opnsense_health.js
Exclude indirect endpoints from direct source-call matching, but
do not exempt indirect call from ACL validation.
Services: Kea DHCPv6: Add setup.sh that creates /var/log/kea so kea_prefix_watcher.py doesn't fail to daemonize on RAM disks during boot (#11053)
(cherry picked from commit 47fc15355f72c602586de42d548b3a70b9af447c)