OPNSense/core e83d6eb. plist, src/opnsense/mvc/app/controllers/OPNsense/CaptivePortal/Api TemplateController.php ServiceController.php

Services: Captive Portal: Move template actions out of the ServiceController into its own TemplateController, so it can use the ApiMutableModelControllerBase methods
DeltaFile
+140-0src/opnsense/mvc/app/controllers/OPNsense/CaptivePortal/Api/TemplateController.php
+2-118src/opnsense/mvc/app/controllers/OPNsense/CaptivePortal/Api/ServiceController.php
+5-5src/opnsense/mvc/app/views/OPNsense/CaptivePortal/index.volt
+1-0plist
+148-1234 files

OPNSense/core 48a1c4b. plist, src/opnsense/mvc/app/controllers/OPNsense/CaptivePortal/Api TemplateController.php ServiceController.php

Services: Captive Portal: Move template actions out of the ServiceController into its own TemplateController, so it can use the ApiMutableModelControllerBase methods
DeltaFile
+146-0src/opnsense/mvc/app/controllers/OPNsense/CaptivePortal/Api/TemplateController.php
+2-118src/opnsense/mvc/app/controllers/OPNsense/CaptivePortal/Api/ServiceController.php
+5-5src/opnsense/mvc/app/views/OPNsense/CaptivePortal/index.volt
+1-0plist
+154-1234 files

OPNSense/core a0eee0csrc/opnsense/mvc/app/controllers/OPNsense/CaptivePortal/Api AccessController.php

captive portal: fix timeout calculation; closes #9794
DeltaFile
+2-2src/opnsense/mvc/app/controllers/OPNsense/CaptivePortal/Api/AccessController.php
+2-21 files

OPNSense/core 0ea7f36src/opnsense/mvc/app/controllers/OPNsense/Base ApiMutableModelControllerBase.php, src/opnsense/mvc/app/library/OPNsense/Base UIModelGrid.php

Merge branch 'master' into config_read_9786
DeltaFile
+58-0src/opnsense/mvc/app/library/OPNsense/Core/Type.php
+34-13src/opnsense/scripts/unbound/blocklists/__init__.py
+17-9src/opnsense/mvc/app/library/OPNsense/Base/UIModelGrid.php
+11-14src/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php
+7-17src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+1-12src/www/firewall_rule_lookup.php
+128-656 files not shown
+147-7312 files

OPNSense/core feddc1fsrc/etc/inc config.inc, src/www system_gateway_groups.php

backend: allow non-intrusive config_read_array(); closes #9786

When config keys are not found or are not arrays that should
be (especially for iterating with foreach) we do a trick here
by returning a detached empty array to avoid upper layer
errors, forcing empty arrays into $config yet reading and
removal still work fine.  The default stays the "insert" mode,
which can be triggered explicitly just for symmetry.  Bools
are not in the keys so this is perfectly fine.

The function itself was added in 4c179c23 in 2017 and hasn't
been modified since which is quite the achievement IMO.  It's
had a clear purpose but now we make it just a little bit
better.  :)

Look for more references at least in the legacy pages:

    # git grep 'foreach.($config\[' src/www
DeltaFile
+28-3src/etc/inc/config.inc
+2-2src/www/system_gateway_groups.php
+30-52 files

OPNSense/core 6ae73e8src/opnsense/mvc/app/library/OPNsense/Core Type.php

mvc: adding a new gateway complains isUUID() wants a string not null
DeltaFile
+2-2src/opnsense/mvc/app/library/OPNsense/Core/Type.php
+2-21 files

OPNSense/core 11ae93asrc/etc/inc interfaces.inc, src/opnsense/scripts/interfaces rtsold_script.sh

interfaces: multi-dhcp6c support and custom PD association #7647

This splits off rtsold and dhcp6c into separate processes
which frees us from the restrictions of faked iterative IDs
for PD associations.  For NA we simply default to 0 now.

I'm not entirely sure why we settled for a single deamon of
dhcp6c back in the day, but there are certianly downsides to
it and I don't see something that wasn't fixed in the meantime
that makes this not work.
DeltaFile
+22-58src/etc/inc/interfaces.inc
+58-4src/www/interfaces.php
+6-6src/opnsense/scripts/interfaces/rtsold_script.sh
+86-683 files

OPNSense/core d976ae7src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt, src/www firewall_rule_lookup.php

Firewall: Rules [new]: Reduce complexity in url hash handling and when using firewall_rule_lookup (#9773)

* Reduce complexity of firewall_rule_lookup, we have an all rules entrypoint now, so potentially we could just search for the UUID of the rule without concerning us with interfaces anymore

* Clean up URL hash logic, we only allow #search and #interface now and need no special handling

* Only get the hash once, use it everywhere, re-add missing null fallback and initialized interface variable

* The hash was consumed too early now, fix it by shifting to the new spot where the variable is used last
DeltaFile
+7-17src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+1-12src/www/firewall_rule_lookup.php
+8-292 files

OPNSense/core 7738d7e. plist, src/opnsense/mvc/app/controllers/OPNsense/Base ApiMutableModelControllerBase.php

mvc: collect uuid field so it can be searched, but only if the searchPhrase contains a valid UUID (#9780)

Add UUID to the fields that can be searched, but only if the searchPhrase contains a valid UUID. That way it won't match on partial strings.

* Create new Type class in core library and add isUUID static, replace individual callers with the new static.

* Add a new static function containsUUID() to the new Type class.

* Move searchPhrase tokenization to ApiMutableControllerBase searchBase()
Determine if search_tokens contain a valid UUID, if yes collect the uuid field so it can be searched. Doing this prevents finding partial strings in UUIDs, but allows to find exact UUIDs.
Inside UIModelGrid fetchBindRequest(), use the search_tokens directly. A compatability case makes this backwards compatible for callers that do not know about search_tokens.
Pass the search_tokens directky into UIModelGrid fetch() instead of the raw searchPhrase.
DeltaFile
+58-0src/opnsense/mvc/app/library/OPNsense/Core/Type.php
+17-9src/opnsense/mvc/app/library/OPNsense/Base/UIModelGrid.php
+11-14src/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php
+3-2src/opnsense/mvc/app/controllers/OPNsense/Routing/Api/SettingsController.php
+1-0plist
+90-255 files

OPNSense/core 75e600asrc/opnsense/www/js opnsense_bootgrid.js

bootgrid: adjust function signature for the edit command per https://github.com/opnsense/core/commit/8405980833a2b4f856c4ef6931d38123391f2b71
DeltaFile
+4-3src/opnsense/www/js/opnsense_bootgrid.js
+4-31 files

OPNSense/plugins cd23399security/q-feeds-connector/src/opnsense/mvc/app/controllers/OPNsense/QFeeds/forms settings.xml, security/q-feeds-connector/src/opnsense/mvc/app/models/OPNsense/QFeeds Connector.xml

Security: Q-Feeds Connect - add new options as available in integrated blocklists, closes https://github.com/opnsense/plugins/issues/5197

This adds allowlists (regex patterns), source_nets Q-Feeds applies on, address to return and optional NXDOMAIN responses.

Please note this version is only compatible with current community versions, business edition installs will have to wait for 26.4.
DeltaFile
+44-6security/q-feeds-connector/src/opnsense/scripts/unbound/blocklists/qfeeds_bl.py
+38-0security/q-feeds-connector/src/opnsense/mvc/app/controllers/OPNsense/QFeeds/forms/settings.xml
+16-0security/q-feeds-connector/src/opnsense/mvc/app/models/OPNsense/QFeeds/Connector.xml
+7-0security/q-feeds-connector/src/opnsense/mvc/app/views/OPNsense/QFeeds/index.volt
+7-0security/q-feeds-connector/src/opnsense/service/templates/OPNsense/QFeeds/qfeeds-blocklists.conf
+112-65 files

OPNSense/core f399b33src/opnsense/scripts/unbound blocklists.py, src/opnsense/scripts/unbound/blocklists __init__.py

Services: Unbound DNS: Blocklists - split logic in update_blocklist() so we can reuse it easily in list_configuration().

Functionally this shouldn't change anything, but when building additional handlers, it's practical to show priorities of the ones that are registered.

To use the list action, simply call:

./blocklists.py list
DeltaFile
+34-13src/opnsense/scripts/unbound/blocklists/__init__.py
+4-1src/opnsense/scripts/unbound/blocklists.py
+38-142 files

OPNSense/core 81ecc79src/opnsense/scripts/kea kea_prefix_watcher.py

kea: Add scope ID to prefix watcher link local address to fix route add (#9778)

(cherry picked from commit c145e5c30e0121153fcbaf125b29dbfbb68af101)
DeltaFile
+2-1src/opnsense/scripts/kea/kea_prefix_watcher.py
+2-11 files

OPNSense/core 82a3115src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes FilterRuleField.php

Firewall: Rules [new] - missing implementation for disablereplyto, closes https://github.com/opnsense/core/issues/9785

(cherry picked from commit 4a6094b0019bbf99e74525338edb3829140bb86e)
DeltaFile
+6-1src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php
+6-11 files

OPNSense/core 59cf594src/www firewall_nat_out_edit.php interfaces_ppps_edit.php

www: change all the others for previous
DeltaFile
+12-14src/www/firewall_nat_out_edit.php
+5-11src/www/interfaces_ppps_edit.php
+5-10src/www/firewall_rules.php
+4-6src/www/interfaces.php
+2-2src/www/firewall_nat_out.php
+2-2src/www/system_authservers.php
+30-452 files not shown
+32-478 files

OPNSense/core 4a6094bsrc/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes FilterRuleField.php

Firewall: Rules [new] - missing implementation for disablereplyto, closes https://github.com/opnsense/core/issues/9785
DeltaFile
+6-1src/opnsense/mvc/app/models/OPNsense/Firewall/FieldTypes/FilterRuleField.php
+6-11 files

OPNSense/core a971a60src/etc/inc config.inc, src/www interfaces_assign.php firewall_schedule_edit.php

backend: allow non-intrusive config_read_array() for #9786

When config keys are not found or are not arrays that should
be especially for iterating with foreach we do a trick here
by returning a detached empty array to avoid upper layer
errors, forcing empty arrays into $config yet reading and
removal still work fine.  The default stays the "insert" mode,
which can be triggered explicitly just for symmetry.  Bools
are not in the keys so this is perfectly fine.

The function was added in 4c179c23 in 2017 and hasn't been
modified since which is quite the achievement IMO.  It's
had a clear purpose but now we make it just a little bit
better.  :)

Look for more references at least in the legacy pages:

    # git grep 'foreach.($config\[' src/www
DeltaFile
+13-25src/www/interfaces_assign.php
+11-25src/www/firewall_schedule_edit.php
+28-3src/etc/inc/config.inc
+1-1src/www/system_gateway_groups.php
+53-544 files

OPNSense/core d5a50a9src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt

Firewall: Rules [new]: Move download and upload commands out of partial into global commands (#9781)

DeltaFile
+27-23src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+27-231 files

OPNSense/core 8405980src/opnsense/mvc/app/views/OPNsense/Interface overview.volt, src/opnsense/www/js opnsense_bootgrid.js

interfaces: overview: clean up UI code and fix CARP badge alignment
DeltaFile
+130-133src/opnsense/mvc/app/views/OPNsense/Interface/overview.volt
+2-2src/opnsense/www/js/opnsense_bootgrid.js
+132-1352 files

OPNSense/core 20f08aasrc/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt

Firewall: Rules [new]: Move commands out of partial
DeltaFile
+27-23src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+27-231 files

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

Revert changes to FilterController since that is solved on a different layer now
DeltaFile
+2-6src/opnsense/mvc/app/controllers/OPNsense/Firewall/Api/FilterController.php
+2-61 files

OPNSense/core 241fb0csrc/opnsense/mvc/app/library/OPNsense/Core Type.php

Correct a typo in comment
DeltaFile
+1-1src/opnsense/mvc/app/library/OPNsense/Core/Type.php
+1-11 files

OPNSense/ports 869fc70opnsense/filterlog-go Makefile distinfo

opnsense/filterlog-go: initial port; closes #252
DeltaFile
+24-0opnsense/filterlog-go/Makefile
+5-0opnsense/filterlog-go/distinfo
+3-0opnsense/filterlog-go/pkg-descr
+32-03 files

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

There is no this here, fix typo
DeltaFile
+1-1src/opnsense/mvc/app/library/OPNsense/Base/UIModelGrid.php
+1-11 files

OPNSense/core 61525e7src/opnsense/mvc/app/controllers/OPNsense/Base ApiMutableModelControllerBase.php, src/opnsense/mvc/app/library/OPNsense/Base UIModelGrid.php

Move searchPhrase tokenization to ApiMutableControllerBase searchBase()
Determine if search_tokens contain a valid UUID, if yes collect the uuid field so it can be searched. Doing this prevents finding partial strings in UUIDs, but allows to find exact UUIDs.
Inside UIModelGrid fetchBindRequest(), use the search_tokens directly. A compatability case makes this backwards compatible for callers that do not know about search_tokens.
Pass the search_tokens directky into UIModelGrid fetch() instead of the raw searchPhrase.
DeltaFile
+13-14src/opnsense/mvc/app/library/OPNsense/Base/UIModelGrid.php
+9-1src/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php
+22-152 files

OPNSense/core 7bcfd7dsrc/opnsense/www/js opnsense_bootgrid.js

bootgrid: swap order of custom commands placement making sure they participate in command binding
DeltaFile
+5-5src/opnsense/www/js/opnsense_bootgrid.js
+5-51 files

OPNSense/core 5b3b163src/opnsense/www/js opnsense_bootgrid.js

bootgrid: swap order of custom commands placement making sure they participate in command binding
DeltaFile
+5-5src/opnsense/www/js/opnsense_bootgrid.js
+5-51 files

OPNSense/core 3f5c666src/opnsense/mvc/app/controllers/OPNsense/Base ApiMutableModelControllerBase.php, src/opnsense/mvc/app/controllers/OPNsense/Routing/Api SettingsController.php

Rename isValidUUID() to isUUID(), feedback @fichtner
DeltaFile
+2-2src/opnsense/mvc/app/controllers/OPNsense/Routing/Api/SettingsController.php
+2-2src/opnsense/mvc/app/library/OPNsense/Core/Type.php
+1-1src/opnsense/mvc/app/library/OPNsense/Base/UIModelGrid.php
+1-1src/opnsense/mvc/app/controllers/OPNsense/Base/ApiMutableModelControllerBase.php
+6-64 files

OPNSense/core 22b36dcsrc/opnsense/scripts/firmware upgrade.sh

firmware: restructure upgrade code

Goes over the previous change by calling the reboot only once
instead of three times:

Here we are told there are upgrades pending and the upgrade hooks
were returning successfully.  Apply the kernel immediately if
necessary to save a reboot.  Contrary to popular belief the kernel
can still apply during a reboot if something went wrong, but this
way we save a reboot.  After that don't question that a reboot is
necessary to avoid ever falling into the error case for no reason.
DeltaFile
+2-6src/opnsense/scripts/firmware/upgrade.sh
+2-61 files

OPNSense/core f0452d6src/opnsense/mvc/app/library/OPNsense/Core Type.php

Add a new static function containsUUID() to the new Type class. Remove some phpdoc as the function is self documenting in its types.
DeltaFile
+15-4src/opnsense/mvc/app/library/OPNsense/Core/Type.php
+15-41 files