OPNSense/core 06ecd4csrc/opnsense/mvc/app/models/OPNsense/Firewall Category.xml

Firewall: Categories - Prevent seperator char from being used in names, closes https://github.com/opnsense/core/issues/9845

Usually we would opt for a change in the consumer here, but since some pages (legacy and migrated legacy) use names instead of uuids, we can't fix this differently at the moment.
At the plus side, commas seem to be hardly used until now as this issue has existed for many years already.

I did look briefly in fixing getCategoryColors() to feed both color and labels, which works nicely for the newest pages, but can't be fixed for the just migrated DNAT page for example
DeltaFile
+1-0src/opnsense/mvc/app/models/OPNsense/Firewall/Category.xml
+1-01 files

OPNSense/core 9d177b6src/opnsense/scripts/openvpn ovpn_event.py

VPN: OpenVPN: Instances - debounce learn-address calls so we limit the number of alias updates to a minimum.

When a lot of clients connect at the exact same time, it doesn't really make sense to keep calling the alias update procedure as logically we are only interested in the last one.
This change simply opens a file, keeps track of its modification stamp and if another updated it after us, assume that caller is responsible for making the magic happen.

Although there is a small downside to this (clients connecting constantly, nobody resposible for accounting), the gain is likely much bigger as it prevents these calls from floodin the system in all cases (saving a lot of load).
DeltaFile
+16-3src/opnsense/scripts/openvpn/ovpn_event.py
+16-31 files

OPNSense/core 75b2dedsrc/opnsense/scripts/openvpn ovpn_event.py

VPN: OpenVPN: Instances - debounce learn-address calls so we limit the number of alias updates to a minimum.

When a lot of clients connect at the exact same time, it doesn't really make sense to keep calling the alias update procedure as logically we are only interested in the last one.
This change simply opens a file, keeps track of its modification stamp and if another updated it after us, assume that caller is responsible for making the magic happen.

Although there is a small downside to this (clients connecting constantly, nobody resposible for accounting), the gain is likely much bigger as it prevents these calls from floodin the system in all cases (saving a lot of load).
DeltaFile
+16-3src/opnsense/scripts/openvpn/ovpn_event.py
+16-31 files

OPNSense/core 33f9574src/opnsense/scripts/openvpn ovpn_event.py

VPN: OpenVPN: Instances - extend logging on learn-address calls
DeltaFile
+6-0src/opnsense/scripts/openvpn/ovpn_event.py
+6-01 files

OPNSense/core eb3a99fsrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseListField.php AuthGroupField.php

mvc: BaseListField: shared implementation of $internalStaticOptionList, proof of concept for https://github.com/opnsense/core/issues/9816 (#9839)

Wrap static access in protected functions which ensures content is static per inherited class:

hasStaticOptions()
getStaticOptions()
setStaticOptions(array)
resetStaticOptions()
DeltaFile
+26-0src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php
+7-13src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/AuthGroupField.php
+33-132 files

OPNSense/core 13040e2src/opnsense/mvc/app/models/OPNsense/OpenVPN OpenVPN.xml

openvpn: Adding options for legacy ciphers (#9829)

Signed-off-by: Bjoern Jakobsen <Bjoern.Jakobsen at lrz.de>
DeltaFile
+46-8src/opnsense/mvc/app/models/OPNsense/OpenVPN/OpenVPN.xml
+46-81 files

OPNSense/core b88621asrc/opnsense/www/js opnsense_health.js

UI: restore canvas state in health graph (#9827)

Fixed health graph bug on Firefox causing graph to shrink after hovering over it for an extended amount of time. The problem was caused by ctx.save() being called repeatedly during hovering. This caused a rendering degradation, because Firefox is stricter about canvas state stack growth. Added ctx.restore() so every save state gets restored and removed from the stack so the canvas doesn't accumulate state. Graph behaves properly on Chrome and Firefox now.

Fixes #9528
DeltaFile
+2-0src/opnsense/www/js/opnsense_health.js
+2-01 files

OPNSense/plugins 5c70523databases/redis/src/opnsense/mvc/app/views/OPNsense/Redis index.volt

Fix the os-redis service page status issue (#5241)

DeltaFile
+4-7databases/redis/src/opnsense/mvc/app/views/OPNsense/Redis/index.volt
+4-71 files

OPNSense/core 36b17adsrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes PortField.php, src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes PortFieldTest.php

tests: PortField: test well-known values against system #9835

Obsolete services have been removed which makes them error out.
Not sure if worth migrating or making the whole thing more clever.

Two appear to have been renamed.
DeltaFile
+28-25src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/PortFieldTest.php
+2-10src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/PortField.php
+30-352 files

OPNSense/core 4c7b16esrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes PortField.php

mvc: PortField: "wins" is known as "nameserver", sort list #9835

It makes sense to test all of these values in the unittest then
before this breaks during an OS update.
DeltaFile
+13-13src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/PortField.php
+13-131 files

OPNSense/core b62fca7src/www interfaces_assign.php

interfaces: capture enter key during assignment

This is done to trigger the correct action in the form.

Reported by: @sheridans
DeltaFile
+7-1src/www/interfaces_assign.php
+7-11 files

OPNSense/core e19ff66src/opnsense/mvc/app/library/OPNsense/Firewall Rule.php

firewall: fix running into error using well known protocols with "-" in them #9835

The ordering is debatable. For now just make sure that we didn't miss the
chance to look up the original one and accept it as is.
DeltaFile
+1-1src/opnsense/mvc/app/library/OPNsense/Firewall/Rule.php
+1-11 files

OPNSense/plugins 9250d4dmisc/theme-cicada Makefile, misc/theme-cicada/src/opnsense/www/themes/cicada/build/css opnsense-bootgrid.css

Theme cicada/vicuna/tukan some fixes (#5198)

DeltaFile
+1-6misc/theme-tukan/src/opnsense/www/themes/tukan/build/css/opnsense-bootgrid.css
+0-5misc/theme-cicada/src/opnsense/www/themes/cicada/build/css/opnsense-bootgrid.css
+0-5misc/theme-vicuna/src/opnsense/www/themes/vicuna/build/css/opnsense-bootgrid.css
+1-1misc/theme-vicuna/Makefile
+1-1misc/theme-vicuna/src/opnsense/www/themes/vicuna/build/css/tabulator.min.css
+1-1misc/theme-cicada/Makefile
+4-192 files not shown
+6-218 files

OPNSense/core ca2a344src/etc/rc.syshook.d/monitor 20-recover

system: one tabs vs. spaces issue
DeltaFile
+1-1src/etc/rc.syshook.d/monitor/20-recover
+1-11 files

OPNSense/core 9a691f5src/etc/inc/plugins.inc.d radvd.inc

radvd: fold $primary identification into $stanzas for #9815
DeltaFile
+9-8src/etc/inc/plugins.inc.d/radvd.inc
+9-81 files

OPNSense/core 13f45bcsrc/opnsense/mvc/app/views/OPNsense/Diagnostics log.volt, src/opnsense/www/js opnsense_bootgrid.js

log files: fix 'go to page' edge case and row count persistence/max

The log controller defines 5000 rows as the limit to prevent OOM
issues, however, since the front-end knows nothing about this,
setting the row count to "all" will only show the first
5000 result without a way to paginate, even if there are more
log entries. Logically, if the controller defines 5000 as a limit,
the view shouldn't allow "all" as a selection, so override it here.

Furthermore, row count "all" was a boolean, which broke the "go to page"
button. While "all" isn't allowed anymore now, we should check
if the value is a boolean regardless. Also, the grid wasn't
indexing on "rnum" properly, so the grid had no idea where to scroll
to once clicked.
DeltaFile
+6-2src/opnsense/mvc/app/views/OPNsense/Diagnostics/log.volt
+2-1src/opnsense/www/js/opnsense_bootgrid.js
+8-32 files

OPNSense/tools 8d5dc95config/26.1 extras.conf

config: put this back--again
DeltaFile
+1-0config/26.1/extras.conf
+1-01 files

OPNSense/core 65b3a98src/opnsense/mvc/app/views/OPNsense/Firewall dnat_rule.volt npt_rule.volt

firewall: the other part of #9821
DeltaFile
+1-1src/opnsense/mvc/app/views/OPNsense/Firewall/dnat_rule.volt
+1-1src/opnsense/mvc/app/views/OPNsense/Firewall/npt_rule.volt
+1-1src/opnsense/mvc/app/views/OPNsense/Firewall/onat_rule.volt
+3-33 files

OPNSense/plugins 58f0dfdsecurity/q-feeds-connector/src/opnsense/mvc/app/controllers/OPNsense/QFeeds/forms settings.xml

q-feeds-connector: Update help text to mention DNScrypt-proxy blocklists (#5237)

Co-authored-by: Cursor <cursoragent at cursor.com>
DeltaFile
+1-1security/q-feeds-connector/src/opnsense/mvc/app/controllers/OPNsense/QFeeds/forms/settings.xml
+1-11 files

OPNSense/core 435a36esrc/opnsense/mvc/app/views/OPNsense/Firewall snat_rule.volt

firewal:: fix snat rule enabled check (#9821)

DeltaFile
+1-1src/opnsense/mvc/app/views/OPNsense/Firewall/snat_rule.volt
+1-11 files

OPNSense/core 64dbf01src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseListField.php AuthGroupField.php

mvc: BaseListField: shared implementation of $internalStaticOptionList, proof of concept for https://github.com/opnsense/core/issues/9816

Wrap static access in protected functions which ensures content is static per inherited class:

hasStaticOptions()
getStaticOptions()
setStaticOptions(array)
resetStaticOptions()
DeltaFile
+26-0src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php
+7-13src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/AuthGroupField.php
+33-132 files

OPNSense/core 3316148src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api OverviewController.php

unbound: simplify getPoliciesAction() a bit for  https://github.com/opnsense/core/issues/9814
DeltaFile
+1-7src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/OverviewController.php
+1-71 files

OPNSense/core 00b5984src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api OverviewController.php, src/opnsense/mvc/app/views/OPNsense/Unbound overview.volt

unbound: move policy fetch to the controller, clean up accordingly. Fixes https://github.com/opnsense/core/issues/9814
DeltaFile
+104-108src/opnsense/mvc/app/views/OPNsense/Unbound/overview.volt
+9-26src/opnsense/mvc/app/controllers/OPNsense/Unbound/Api/OverviewController.php
+113-1342 files

OPNSense/core 0c84963src/opnsense/www/js opnsense_bootgrid.js

bootgrid: swap order of custom commands placement making sure they participate in command binding

(cherry picked from commit 5b3b163ce0d93d41fcb141807c6d76389178ad1b)
DeltaFile
+5-5src/opnsense/www/js/opnsense_bootgrid.js
+5-51 files

OPNSense/src 2e22159sys/netpfil/pf pf_ioctl.c

pf: Use proper prototype for SYSINIT functions

MFC after:      1 week

(cherry picked from commit 0ce8c20fcd44c1595b42fcb540913d3802edd438)
(cherry picked from commit 34462748d79a6e2ea8215564286f97e93670dfbb)
DeltaFile
+2-2sys/netpfil/pf/pf_ioctl.c
+2-21 files

OPNSense/src 2c6944fsys/netpfil/ipfw ip_fw2.c ip_fw_nat.c

ipfw: Use proper prototype for SYSINIT functions

The only possible return value of function ipfw_init() is 0. Make it
return void to match the prototype of SYSINIT.

MFC after:      1 week

(cherry picked from commit 1bba2194c8a960235f8eae36e7d3e96f347ce779)
(cherry picked from commit 745b6ca4ed933f9f4c1d314dc7b0aa31e8e9e0de)
DeltaFile
+3-6sys/netpfil/ipfw/ip_fw2.c
+2-2sys/netpfil/ipfw/ip_fw_nat.c
+5-82 files

OPNSense/src 77d0070usr.sbin/bsdinstall bsdinstall.8

bsdinstall.8: Minor maintenance

Replace CD-ROMs with "discs, USBs, or network boot environments"
to both modernize aesthetic and also nudge youths to think at scale.
Since I'm disrupting the flow of these lines anyway, expand the VM
acronym because I think this is one of the first manuals people will
be looking at.

Reset list alignment to seven characters. It was at 19 characters,
and that was not enough to align them all, wasting many extra lines
by crunching all the words over. Seven actually bought us some lines
from six due to avg item size. Tag SPDX.

MFC after:      3 days
Discussed with: ivy, zi

(cherry picked from commit 81d9e08a4df42079d5e163b5991d5d6f3a28d4f0)
DeltaFile
+11-8usr.sbin/bsdinstall/bsdinstall.8
+11-81 files

OPNSense/src 89058b9sys/netipsec xform_ipcomp.c

netipsec: Use proper prototype for SYSINIT functions

MFC after:      1 week

(cherry picked from commit 360bb45690d918fac5bae78ab44f45d11327067a)
(cherry picked from commit a32ee2897f8eed4a03976be65020912f03f7228e)
DeltaFile
+2-2sys/netipsec/xform_ipcomp.c
+2-21 files

OPNSense/src 9d3a11csys/netinet6 ip6_mroute.c

ip6_mroute: Fix the UPCALL_TIMING build

MFC after:      2 weeks
Sponsored by:   Stormshield
Sponsored by:   Klara, Inc.

(cherry picked from commit 5bb953b095461b488b102ab3025f42cd2ef61f9d)
DeltaFile
+1-1sys/netinet6/ip6_mroute.c
+1-11 files

OPNSense/src b2d3c64sys/netinet6 ip6_mroute.c

ip6_mroute: Remove an unhelpful comment

ifnets already track if_allmulti() calls in the if_amcount field.  That
field is older than the comment, so I'm not exactly sure what the intent
was; let's just remove it.

MFC after:      2 weeks
Sponsored by:   Stormshield
Sponsored by:   Klara, Inc.

(cherry picked from commit a45fb94801dffd414bdb1981def0e977ef0c774f)
DeltaFile
+0-4sys/netinet6/ip6_mroute.c
+0-41 files