OPNSense/core 078963a — src/opnsense/mvc/app/models/OPNsense/Firewall/DynamicAliases CaptivePortalAliases.php

Firewall: Aliases - squeeze some extra performance out of the dynamic captive portal aliases, the getConfigNode() works but still costs a bit more than I'm willing to spend.

The downside from direct config access is that we need to keep track locations in multiple spots, but since it's highly unlikely these locations will change, it's probably better to save some cpu cycles.
DeltaFile
+4-2src/opnsense/mvc/app/models/OPNsense/Firewall/DynamicAliases/CaptivePortalAliases.php
+4-21 files

OPNSense/core 54aa99b — src/opnsense/mvc/app/library/OPNsense/Core Config.php, src/opnsense/mvc/app/models/OPNsense/Base BaseModel.php

Firewall: Aliases - fix performance regression introduced in https://github.com/opnsense/core/pull/8368

The captive portal model is quite expensive to construct and for our aliases we only require the data underneath.

This commit organizes a couple of things, first implement an easier handle to load a random model from disk to test:

```
Config::getInstance()->forceReload('/path/to/test/config.xml');
$before = memory_get_usage();
$start = hrtime(true);

$mdl = new \OPNsense\Firewall\Alias(true);

printf(
    "Alias: %.2f ms, retained PHP memory: %.2f MiB\n",
    (hrtime(true) - $start) / 1e6,
    (memory_get_usage() - $before) / 1048576
);
```

    [4 lines not shown]
DeltaFile
+13-17src/opnsense/mvc/app/models/OPNsense/Firewall/DynamicAliases/CaptivePortalAliases.php
+16-8src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php
+10-4src/opnsense/mvc/app/library/OPNsense/Core/Config.php
+39-293 files

OPNSense/core 5833e5f — src/opnsense/mvc/app/library/OPNsense/Core Config.php, src/opnsense/mvc/app/models/OPNsense/Base BaseModel.php

Firewall: Aliases - fix performance regression introduced in https://github.com/opnsense/core/pull/8368

The captive portal model is quite expensive to construct and for our aliases we only require the data underneath.

This commit organizes a couple of things, first implement an easier handle to load a random model from disk to test:

```
Config::getInstance()->forceReload('/path/to/test/config.xml');
$before = memory_get_usage();
$start = hrtime(true);

$mdl = new \OPNsense\Firewall\Alias(true);

printf(
    "Alias: %.2f ms, retained PHP memory: %.2f MiB\n",
    (hrtime(true) - $start) / 1e6,
    (memory_get_usage() - $before) / 1048576
);
```

    [4 lines not shown]
DeltaFile
+17-18src/opnsense/mvc/app/models/OPNsense/Firewall/DynamicAliases/CaptivePortalAliases.php
+16-8src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php
+10-4src/opnsense/mvc/app/library/OPNsense/Core/Config.php
+43-303 files

OPNSense/core 47fc153 — . plist, src/opnsense/scripts/kea setup.sh

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)
DeltaFile
+5-0src/opnsense/scripts/kea/setup.sh
+1-1src/opnsense/service/templates/OPNsense/Kea/rc.conf.d
+1-0plist
+7-13 files

OPNSense/core 36fe4b9 — src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api SettingsController.php, src/opnsense/mvc/app/models/OPNsense/Unbound/ACL ACL.xml

unbound: CSV import for overrides and aliases. Closes https://github.com/opnsense/core/issues/8354

Since we added the "quick" alias add/delete options from the overrides,
the data layout has been made flat enough to do this in bulk.
DeltaFile
+27-0src/opnsense/mvc/app/views/OPNsense/Unbound/overrides.volt
+26-0src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/SettingsController.php
+2-0src/opnsense/mvc/app/models/OPNsense/Unbound/ACL/ACL.xml
+55-03 files

OPNSense/core 4c6f7ce — src/opnsense/scripts/system remote_backup.php

System: Configuration: Backups - trapp errors in remote_backup.php similar to how diag_backup.php handles them. closes https://github.com/opnsense/core/issues/11054
DeltaFile
+16-1src/opnsense/scripts/system/remote_backup.php
+16-11 files

OPNSense/core 3b0f51d — src/opnsense/www/js/widgets HealthGraph.js, src/opnsense/www/js/widgets/Metadata Core.xml

dashboard: add logarithmic option to dashboard widgets as well
DeltaFile
+10-4src/opnsense/www/js/widgets/HealthGraph.js
+1-0src/opnsense/www/js/widgets/Metadata/Core.xml
+11-42 files

OPNSense/core b0adae5 — . plist

plist
DeltaFile
+1-0plist
+1-01 files

OPNSense/core 0b12ed8 — src/opnsense/scripts/kea setup.sh, src/opnsense/service/templates/OPNsense/Kea rc.conf.d

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
DeltaFile
+5-0src/opnsense/scripts/kea/setup.sh
+1-1src/opnsense/service/templates/OPNsense/Kea/rc.conf.d
+6-12 files

OPNSense/core 548bff0 — src/opnsense/mvc/app/views/OPNsense/Diagnostics health.volt

health: adjust to reality on master
DeltaFile
+1-1src/opnsense/mvc/app/views/OPNsense/Diagnostics/health.volt
+1-11 files

OPNSense/core 5c2472b — src/opnsense/www/js opnsense_health.js

health: make use of byteFormat() here
DeltaFile
+2-5src/opnsense/www/js/opnsense_health.js
+2-51 files

OPNSense/core 4636f49 — src/opnsense/scripts/health/definitions system-mbuf.xml gateway-quality.xml, src/opnsense/www/js opnsense_health.js

health: update y-axis label based on state rather than report metadata
DeltaFile
+9-2src/opnsense/www/js/opnsense_health.js
+2-2src/opnsense/scripts/health/definitions/system-states.xml
+1-1src/opnsense/scripts/health/definitions/system-mbuf.xml
+1-1src/opnsense/scripts/health/definitions/gateway-quality.xml
+13-64 files

OPNSense/core e707edb — src/opnsense/mvc/app/views/OPNsense/Diagnostics health.volt, src/opnsense/www/js opnsense_health.js

health: default to logarithmic for some graphs, but make it optional in all cases
DeltaFile
+29-9src/opnsense/www/js/opnsense_health.js
+17-3src/opnsense/mvc/app/views/OPNsense/Diagnostics/health.volt
+46-122 files

OPNSense/core 3340af5 — src/opnsense/scripts/health/definitions system-memory.xml

health: system-memory is percentage based
DeltaFile
+13-0src/opnsense/scripts/health/definitions/system-memory.xml
+13-01 files

OPNSense/core b184a38 — src/opnsense/scripts/health/definitions interface-traffic.xml

health: proper tooltip formatter for Traffic
DeltaFile
+6-0src/opnsense/scripts/health/definitions/interface-traffic.xml
+6-01 files

OPNSense/core 3183e6d — src/opnsense/scripts/health/definitions system-states.xml

health: use a logarithmic scale for states as well
DeltaFile
+32-0src/opnsense/scripts/health/definitions/system-states.xml
+32-01 files

OPNSense/core 291072d — src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api SystemhealthController.php, src/opnsense/scripts/health listReports.py

health: use logarithmic mbuf reporting, separate formatting responsibilities

Let the y-axis use compact metric formatting such as 10K or 1M.
Since a tooltip should be able to contain more detailed information, allow
separation through a tooltip_formats structure.
DeltaFile
+21-7src/opnsense/www/js/opnsense_health.js
+15-0src/opnsense/scripts/health/definitions/system-mbuf.xml
+4-3src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/SystemhealthController.php
+2-1src/opnsense/scripts/health/listReports.py
+3-0src/opnsense/scripts/health/definitions/interface-packets.xml
+45-115 files

OPNSense/core f4eed95 — src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api SystemhealthController.php, src/opnsense/scripts/health listReports.py

health: adjust Packets category to a metric formatter
DeltaFile
+16-3src/opnsense/www/js/opnsense_health.js
+10-6src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/SystemhealthController.php
+3-3src/opnsense/scripts/health/listReports.py
+3-0src/opnsense/scripts/health/definitions/interface-packets.xml
+32-124 files

OPNSense/core 5965fb7 — src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api SystemhealthController.php, src/opnsense/scripts/health listReports.py

health: optimize quality graphs

Separate the percentages unit to a separate right-side axis, and
format the left-side axis logarithmically. Make sure the tooltips
contain the right units as well.
DeltaFile
+108-25src/opnsense/www/js/opnsense_health.js
+22-0src/opnsense/scripts/health/definitions/gateway-quality.xml
+12-2src/opnsense/mvc/app/controllers/OPNsense/Diagnostics/Api/SystemhealthController.php
+5-2src/opnsense/scripts/health/listReports.py
+147-294 files

OPNSense/core 9efaad2 — src/opnsense/scripts/health/definitions system-processor.xml

health: use a logarthmic chart and right-side axis for system-processor as well
DeltaFile
+20-5src/opnsense/scripts/health/definitions/system-processor.xml
+20-51 files

OPNSense/core 0dc265c — src/opnsense/mvc/app/controllers/OPNsense/Core/Api DashboardController.php, src/opnsense/mvc/app/views/OPNsense/Core dashboard.volt

dashboard: refactor widget system and introduce cloneable widget types (#11015)
DeltaFile
+1,308-0src/opnsense/www/js/opnsense_widgets.js
+0-892src/opnsense/www/js/opnsense_widget_manager.js
+238-0src/opnsense/www/js/widgets/HealthGraph.js
+70-20src/opnsense/mvc/app/views/OPNsense/Core/dashboard.volt
+57-24src/opnsense/mvc/app/controllers/OPNsense/Core/Api/DashboardController.php
+20-16src/opnsense/www/js/widgets/Certificates.js
+1,693-95216 files not shown
+1,813-99522 files

OPNSense/core 4ff2c10 — src/opnsense/mvc/app/controllers/OPNsense/Core DashboardController.php, src/opnsense/mvc/app/views/OPNsense/Core dashboard.volt

dashboard: move includes over to the controller

default.volt already includes the CSS files themed
DeltaFile
+30-0src/opnsense/mvc/app/controllers/OPNsense/Core/DashboardController.php
+0-23src/opnsense/mvc/app/views/OPNsense/Core/dashboard.volt
+30-232 files

OPNSense/core 077a11c — src/opnsense/mvc/app/library/OPNsense/Core Backend.php

configd: fix simulate_mode, instantly return from configdStream() before trying to use a socket. required for https://github.com/opnsense/ui_devtools
DeltaFile
+3-5src/opnsense/mvc/app/library/OPNsense/Core/Backend.php
+3-51 files

OPNSense/core d2b191a — src/opnsense/service/templates/OPNsense/Monit monitrc

Services: Monit - escape password double quotes with their hex interpretation, closes https://github.com/opnsense/core/issues/11051
DeltaFile
+1-1src/opnsense/service/templates/OPNsense/Monit/monitrc
+1-11 files

OPNSense/core 92c3096 — src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes ContainerField.php

model:ContainerField - exclude volatile fields in isFieldChanged()

Volatile fields are usually initialized during model setup, but when untouched (no setter being called), they are marked changed.

Found this one by accident while looking at https://github.com/opnsense/core/issues/11048 which triggers validations for unchanged records.
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ContainerField.php
+1-11 files

OPNSense/core 31082fb — . plist, src/etc rc.routing_configure

System: Routes: Configuration - further refactor current static route updates for https://github.com/opnsense/core/issues/10569

This code should offer the same functionality as before, but starts with wrapping the "stashed updates" code into its own class, so we can extend that with the rest of the required logic.
In order to change system_routing_configure() to accept multiple targets for a single net, we likely should have a mechanism in place comparing our expected route configuration with the one configured, isolating that inside its own class is likely much easier for future maintenance.

In practice we always marked the networks touched by the UI in order to remove them before apply new ones, we call this action "claiming" now. Our primary issue is that given a running routing table, we can't really know which routes are inserted by us. Following the existing logic (which functioned for single targets), we could state that any network we manually configured (or are configuring) is ours to maintain.

At some point we may consider marking our routes with RTF_PROTO2 (Bird seems to be using RTF_PROTO1) to improve the filtering a bit further, but this is easy to implement later on given the plumning we need anyway.
DeltaFile
+84-0src/opnsense/mvc/app/library/OPNsense/System/StaticRoute.php
+2-20src/etc/rc.routing_configure
+4-18src/opnsense/mvc/app/controllers/OPNsense/Routes/Api/RoutesController.php
+1-0plist
+91-384 files

OPNSense/core b0da0c3 — src/etc rc.routing_configure

System: Routes: Configuration - forgot to remove the old cleanup in r.routing_configure for https://github.com/opnsense/core/issues/10569
DeltaFile
+0-8src/etc/rc.routing_configure
+0-81 files

OPNSense/core 125cc93 — src/opnsense/mvc/app/models/OPNsense/Trust/FieldTypes CertificatesField.php

System: Trust: Certificates - authorityInfoAccess missing in extns(), closes https://github.com/opnsense/core/issues/11046
DeltaFile
+4-0src/opnsense/mvc/app/models/OPNsense/Trust/FieldTypes/CertificatesField.php
+4-01 files

OPNSense/core 5b9fc04 — src/opnsense/mvc/app/models/OPNsense/Interfaces NetworkInterface.xml

Interfaces: Assignments - minor cleanup in  "Prefix delegation size", make field required to avoid none and blank both being valid options. Since "none" was the previous default, let's keep it that way for now.
DeltaFile
+1-0src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.xml
+1-01 files

OPNSense/core b39a7a9 — src/opnsense/mvc/app/models/OPNsense/Interfaces NetworkInterface.php

Interfaces: Assignments - ignore dhcp6-ia-pd-len when not set, closes https://github.com/opnsense/core/issues/11043
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Interfaces/NetworkInterface.php
+1-11 files