Merge pull request #6579 from systemcrash/fix_dnsmasq_instance_fields
authorPaul Donald <newtwen@gmail.com>
Sun, 28 Jan 2024 14:55:13 +0000 (15:55 +0100)
committerPaul Donald <newtwen@gmail.com>
Sun, 28 Jan 2024 15:02:17 +0000 (16:02 +0100)
luci-mod-network: Fix 'instances' fields for dnsmasq dhcp config entries
(cherry picked from commit d353bc50cd45bd0863170a0fa2f4e474405f8354)

modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js

index 81c2055a1c02a1483662c549aea8cbd25c4553e1..4ead80e8f2d91e7a62e1d7bb8f0c1bb42353cc42 100644 (file)
@@ -89,6 +89,21 @@ function calculateNetwork(addr, mask) {
        ];
 }
 
+function generateDnsmasqInstanceEntry(data) {
+       const nameValueMap = new Map(Object.entries(data));
+       let formatString = nameValueMap.get('.index') + ' (' +  _('Name') + (nameValueMap.get('.anonymous') ? ': dnsmasq[' + nameValueMap.get('.index') + ']': ': ' + nameValueMap.get('.name'));
+
+       if (data.domain) {
+               formatString += ', ' +  _('Domain')  + ': ' + data.domain;
+       }
+       if (data.local) {
+               formatString += ', ' +  _('Local')  + ': ' + data.local;
+       }
+       formatString += ')';
+
+       return nameValueMap.get('.name'), formatString;
+}
+
 function getDHCPPools() {
        return uci.load('dhcp').then(function() {
                let sections = uci.sections('dhcp', 'dhcp'),
@@ -701,7 +716,7 @@ return view.extend({
                so.optional = true;
 
                Object.values(L.uci.sections('dhcp', 'dnsmasq')).forEach(function(val, index) {
-                       so.value(index, '%s (Domain: %s, Local: %s)'.format(index, val.domain || '?', val.local || '?'));
+                       so.value(generateDnsmasqInstanceEntry(val));
                });
 
                o = s.taboption('srvhosts', form.SectionValue, '__srvhosts__', form.TableSection, 'srvhost', null,
@@ -947,6 +962,14 @@ return view.extend({
 
                so = ss.option(form.Value, 'hostid', _('IPv6 suffix (hex)'));
 
+               so = ss.option(form.Value, 'instance',
+                       _('Instance'));
+               so.optional = true;
+
+               Object.values(L.uci.sections('dhcp', 'dnsmasq')).forEach(function(val, index) {
+                       so.value(generateDnsmasqInstanceEntry(val));
+               });
+
                o = s.taboption('leases', CBILeaseStatus, '__status__');
 
                if (has_dhcpv6)