dnsmasq: Allow domain overrides to be optionally sorted by sequence number to support strict-order (#8411)

* dnsmasq: Allow domain overrides to be optionally sorted by sequence number to support strict-order.

* dnsmasq: Make sequence required, default to 1 and bump model version, simplify sorting in template.
This commit is contained in:
Monviech 2025-03-07 09:11:23 +01:00 committed by GitHub
parent 0d8f57f316
commit 877b219c64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 3 deletions

View File

@ -1,4 +1,14 @@
<form>
<field>
<id>domainoverride.sequence</id>
<label>Sequence</label>
<type>text</type>
<help>Sort with a sequence number, e.g., for strict processing order when using the "strict-order" option.</help>
<grid_view>
<width>6em</width>
<order>asc</order>
</grid_view>
</field>
<field>
<id>domainoverride.domain</id>
<label>Domain</label>

View File

@ -1,6 +1,6 @@
<model>
<mount>/dnsmasq</mount>
<version>1.0.2</version>
<version>1.0.3</version>
<items>
<enable type="BooleanField"/>
<regdhcp type="BooleanField"/>
@ -94,6 +94,13 @@
</aliases>
</hosts>
<domainoverrides type="ArrayField">
<sequence type="AutoNumberField">
<MinimumValue>1</MinimumValue>
<MaximumValue>99999</MaximumValue>
<Default>1</Default>
<Required>Y</Required>
<ValidationMessage>Please enter a value between 1 and 99999.</ValidationMessage>
</sequence>
<domain type="HostnameField">
<IsDNSName>Y</IsDNSName>
<IpAllowed>N</IpAllowed>

View File

@ -60,8 +60,9 @@ bind-interfaces
bogus-priv
{% endif %}
{% for override in helpers.toList('dnsmasq.domainoverrides') %}
server=/{{override.domain}}/{{override.ip}}{%if override.port %}#{{override.port}}{% endif %}{%if override.srcip %}@{{override.srcip}}{% endif %}
{# Domain Overrides can be sorted by sequence to support strict order #}
{% for override in helpers.toList('dnsmasq.domainoverrides', sortBy='sequence', sortAs='int') %}
server=/{{override.domain}}/{{override.ip}}{%if override.port %}#{{override.port}}{% endif %}{%if override.srcip %}@{{override.srcip}}{% endif +%}
{% if helpers.exists('system.webgui.nodnsrebindcheck') %}
rebind-domain-ok=/{{override.domain}}/
{% endif %}