dhcp/kea: Add lease commands, tabulator GroupBy, URL hashes (#9409)
This commit introduces the same features to Kea as already available in the Dnsmasq GUI:
- Lease commands added
- GroupBy will allow simpler filtering by subnet
- URL hashes to better reference the individual tabs
- Frontend code same style as Dnsmasq
dhcp/kea: Prepare dhcpv4.volt for URL hash reservation insertion
* dhcp/kea: Also group by subnet
* The group key is different for both grids due to model relation field
* Move data service widget update to apply button
* Refactor dhcpv6.volt the same way to introduce tabulator GroupBy, URL hashes and reservation autofill via hash
* Add lease commands and tabulator groupBy to leases4 and leases6 templates
* baseURL was wrong for reservations
* Add is_reserved key to LeasesController so leases can show different commands based on their reservation status
* Move upload_reservations and download_reservtions into layout_partial for dhcpv6.volt
[7 lines not shown]
Firewall: Rules [new]: Add per rule state timeouts for udp.first, udp.multiple and udp.single (#9414)
* Firewall: Rules [new]: Add per rule state timeouts for udp.first, udp.multiple and udp.single
* Add subheaders to base_dialog.volt and use them in dialogFilterRule.xml
* whitespace
* Set a maximum value of 2^31 for all integer fields that handle states
* The list is long, put State into the subheader names to indicate relationship
mvc: setFormData / tokenize - switching back and forth between text edit and tokenize seem to trigger excessive events as well, for https://github.com/opnsense/core/issues/9408
mvc: setFormData / tokenize - it looks like targetNode.tokenize2().trigger('tokenize:clear'); fires a change event for all items in the list, since we hook the tokenizers via formatTokenizersUI() later, we can safely drop the event here to avoid an event storm. closes https://github.com/opnsense/core/issues/9408
(cherry picked from commit 31278f220894d1414ffa14b934afc99f137d1230)
mvc: setFormData / tokenize - it looks like targetNode.tokenize2().trigger('tokenize:clear'); fires a change event for all items in the list, since we hook the tokenizers via formatTokenizersUI() later, we can safely drop the event here to avoid an event storm. closes https://github.com/opnsense/core/issues/9408