OPNSense/core cdde24bMk lint.mk, Scripts class-import.sh

lint: Add linter that finds unused imports in php classes
DeltaFile
+49-0Scripts/class-import.sh
+4-1Mk/lint.mk
+53-12 files

OPNSense/core e2bfad3src/opnsense/mvc/app/controllers/OPNsense/IDS/Api SettingsController.php, src/opnsense/mvc/app/controllers/OPNsense/Monit/Api SettingsController.php

mvc: Remove UIModelGrid imports in IDS, Monit, Syslog SettingsController, unused
DeltaFile
+0-1src/opnsense/mvc/app/controllers/OPNsense/Monit/Api/SettingsController.php
+0-1src/opnsense/mvc/app/controllers/OPNsense/Syslog/Api/SettingsController.php
+0-1src/opnsense/mvc/app/controllers/OPNsense/IDS/Api/SettingsController.php
+0-33 files

OPNSense/core b605816src/etc/inc/plugins.inc.d radvd.inc

radvd: skipping disabled needs ignore list population too #10044
DeltaFile
+5-3src/etc/inc/plugins.inc.d/radvd.inc
+5-31 files

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

mvc: BaseListField replace empty check with isSet so a 0 value is considered a non empty selection (#10047)
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php
+1-11 files

OPNSense/core 66eafc3src/etc/inc/plugins.inc.d radvd.inc

radvd: match radvd_enable() more closely for #10044

Users are confused why they can add an entry but their settings are not
being used.  This is specifically wrong according to the inventor of
"dhcpd6track6allowoverride" as it circumvents half of its use cases but
more closely matches user expectation.

May cause regression for some people, but not much we can do here other
than not doing it.
DeltaFile
+4-7src/etc/inc/plugins.inc.d/radvd.inc
+4-71 files

OPNSense/core 8c21361src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms dialogFilterRule.xml dialogNptRule.xml, src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt

Firewall: Remove tokenizer from categories and use selectpicker instead (#10049)

The issue with the tokenizer is the limit of items that is set to 10 per default, which does not always display all items. And you can increase it, but that also needs CSS changes. Additionally the tokenizer is not maintained anymore, and needs replacement. Cutting it out here decreases the need to clean this up later.

The fix here is that now all categories will be displayed and are searchable via the normal selectpicker search field.
DeltaFile
+2-8src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+0-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml
+0-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogNptRule.xml
+0-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogOneToOneRule.xml
+0-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogSNatRule.xml
+0-1src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogDNatRule.xml
+2-136 files

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

Did not want to remove that newline
DeltaFile
+1-0src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+1-01 files

OPNSense/core 5d2fe0bsrc/opnsense/mvc/app/controllers/OPNsense/Firewall/forms dialogNptRule.xml dialogOneToOneRule.xml, src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt nat_rule.volt

Remove tokenizer from categories in filter and nat rules, to natively display all items without workarounds
DeltaFile
+2-16src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+0-5src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+0-2src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogNptRule.xml
+0-2src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogOneToOneRule.xml
+0-2src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogSNatRule.xml
+0-2src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml
+2-291 files not shown
+2-317 files

OPNSense/core 88f5861src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms dialogNptRule.xml dialogOneToOneRule.xml, src/opnsense/mvc/app/views/OPNsense/Firewall filter_rule.volt nat_rule.volt

Firewall: Allow more items inside the category tokenizer dropdown
DeltaFile
+7-0src/opnsense/mvc/app/views/OPNsense/Firewall/filter_rule.volt
+5-0src/opnsense/mvc/app/views/OPNsense/Firewall/nat_rule.volt
+1-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogNptRule.xml
+1-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogOneToOneRule.xml
+1-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogSNatRule.xml
+1-0src/opnsense/mvc/app/controllers/OPNsense/Firewall/forms/dialogFilterRule.xml
+16-01 files not shown
+17-07 files

OPNSense/core 9ed8513src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseSetField.php, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php KeaDhcpv4.php

kea: move pool-in-subnet validation logic mostly to KeaPoolsField; closes #10040

While here use getValues() consistently and move the trim() calls to the
latest point in time to avoid generalized trimming of input (the subnet
notation isn't allowed to be trimmed).

An alternative would have been to allow " ?- ?" as a split-regex since the
trim() itself will allow the leading an trailing whitespaces of the pool line,
too.

Suggested by: @Astranox
DeltaFile
+32-6src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+6-16src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+1-1src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseSetField.php
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.php
+40-244 files

OPNSense/core 71ae01fsrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseSetField.php, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

kea: move pool-in-subnet validation logic mostly to KeaPoolsField
DeltaFile
+32-6src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+5-15src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+1-1src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseSetField.php
+38-223 files

OPNSense/core 234274fsrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseSetField.php, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

kea: move pool-in-subnet validation logic mostly to KeaPoolsField
DeltaFile
+40-14src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+5-15src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+1-1src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseSetField.php
+46-303 files

OPNSense/core 4c50808src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

foo
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+1-11 files

OPNSense/core b56c929src/opnsense/mvc/app/models/OPNsense/Base Validation.php

avoid stacking messages optionally
DeltaFile
+11-2src/opnsense/mvc/app/models/OPNsense/Base/Validation.php
+11-21 files

OPNSense/core e8b2f30src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

kea: tweak messages
DeltaFile
+2-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+2-21 files

OPNSense/core 6eca63esrc/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes KeaPoolsField.php

foo
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+1-11 files

OPNSense/core 6c17c84src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes KeaPoolsField.php

kea: iterateinput does not filter empty strings
DeltaFile
+3-0src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+3-01 files

OPNSense/core 28758c5src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes KeaPoolsField.php

fix issue
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+1-11 files

OPNSense/core e886104src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes KeaPoolsField.php

foo
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+1-11 files

OPNSense/core 9673e7dsrc/opnsense/mvc/app/models/OPNsense/Base/FieldTypes BaseSetField.php, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php

kea: move pool-in-subnet validation logic mostly to KeaPoolsField
DeltaFile
+37-14src/opnsense/mvc/app/models/OPNsense/Kea/FieldTypes/KeaPoolsField.php
+4-14src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+1-1src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseSetField.php
+42-293 files

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

mvc: BaseListField replace empty check with isSet so a 0 value is considered a non empty selection
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseListField.php
+1-11 files

OPNSense/core f5c3fb7src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.xml KeaDhcpv6.xml

kea: small xml style update in model
DeltaFile
+1-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+1-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+2-42 files

OPNSense/core 14c9eb1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms dialogSubnet4.xml dialogSubnet6.xml, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.php KeaDhcpv6.php

Services: Kea: DDNS: Add subnet specific qualifying suffix and prevent updates if no server is set. (#10038)
DeltaFile
+12-4src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.php
+12-4src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+10-1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet4.xml
+10-1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet6.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+46-106 files

OPNSense/core 265ba25src/opnsense/mvc/app/controllers/OPNsense/Kea/forms dialogSubnet4.xml dialogSubnet6.xml, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv6.php KeaDhcpv4.php

Services: Kea: DDNS: Add subnet specific qualifying suffix and prevent updates if no server is set.
DeltaFile
+12-4src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+12-4src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.php
+10-1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet4.xml
+10-1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet6.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+46-106 files

OPNSense/core 4be4290src/opnsense/mvc/app/controllers/OPNsense/Kea/forms dialogSubnet6.xml dialogSubnet4.xml, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.php KeaDhcpv6.php

Services: Kea: DDNS: Add subnet specific qualifying suffix and prevent updates if no server is set.
DeltaFile
+12-4src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.php
+11-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+10-1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet6.xml
+10-1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet4.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+45-86 files

OPNSense/core 6ec7fc6src/opnsense/mvc/app/controllers/OPNsense/Kea/forms dialogSubnet6.xml dialogSubnet4.xml, src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.php KeaDhcpv6.php

Services: Kea: DDNS: Add subnet specific qualifying suffix and prevent updates if no server is set.
DeltaFile
+13-4src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.php
+12-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.php
+10-1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet6.xml
+10-1src/opnsense/mvc/app/controllers/OPNsense/Kea/forms/dialogSubnet4.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+1-0src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+47-86 files

OPNSense/core d21ce06src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.xml KeaDhcpv6.xml

kea: improve validation message via @monviech's suggestion
DeltaFile
+2-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+2-2src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+4-42 files

OPNSense/core 7933d1bsrc/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.xml KeaDhcpv6.xml

Services: Kea: DHCPv4/v6: Use SetConstraint for match_data to allow 0 as valid value (#10035)
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+2-22 files

OPNSense/core cff0a4csrc/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.xml KeaDhcpv6.xml

Services: Kea: DHCPv4/v6: Use SetConstraint for match_data to allow 0 as valid value
DeltaFile
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+1-1src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+2-22 files

OPNSense/core 9cf1683src/opnsense/mvc/app/models/OPNsense/Kea KeaDhcpv4.xml KeaDhcpv6.xml

Services: Kea: DHCPv4/v6: Use SetConstraint to allow 0 to count as valid value. Since none of these fields are boolean, change it for all of them.
DeltaFile
+10-10src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv4.xml
+10-10src/opnsense/mvc/app/models/OPNsense/Kea/KeaDhcpv6.xml
+20-202 files