summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-mod-network
diff options
context:
space:
mode:
authorPaul Donald <newtwen@gmail.com>2023-11-18 15:30:19 +0100
committerPaul Donald <newtwen@gmail.com>2023-11-22 19:39:55 +0100
commit0fb8b1f9ad6875a325fa99557a7ea21de04b8710 (patch)
tree2effa6a9935dc868b4d6a08f6558f2a6bef2ae57 /modules/luci-mod-network
parent8a01448bde39ab343778f00fd71d1716e181fc12 (diff)
luci-mod-network: Fix 'instances' fields for dnsmasq dhcp config entries
Fixed error wherein luci erroneously saved the iterator integer of the current dnsmasq config object to a host (and boot/PXE) config entry 'instance' field, instead of correctly referring to its name. Now we use the correct ".name" field of the dnsmasq config entry. Anonymous entries have e.g. "cfg01411c". The ".name" field corresponds to 'myName' in /etc/config/dhcp entries of: config dnsmasq 'myName' ... In this way, host and other entry types are bound correctly to specific dnsmasq instances. For anonymous entries, display "dnsmasq[x]" as name. Signed-off-by: Paul Donald <newtwen@gmail.com>
Diffstat (limited to 'modules/luci-mod-network')
-rw-r--r--modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js19
1 files changed, 17 insertions, 2 deletions
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js
index da0eeabb5a..538b1b0d55 100644
--- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js
@@ -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'),
@@ -630,7 +645,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,
@@ -932,7 +947,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));
});