luci-mod-network: fix handling of peerdns/dns/dns_search options
authorJo-Philipp Wich <jo@mein.io>
Sat, 20 Mar 2021 23:50:27 +0000 (00:50 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Thu, 27 May 2021 10:19:05 +0000 (12:19 +0200)
The previous change didn't take dynamic dependency mangling into account.

Fixes: 2bfd4908a9 ("luci-mod-network: restore DNS option semantics for proto static")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 9a92f9c7615f710a7934cccc8ac23902247c154b)

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

index 3ea7788af1fff0e18091a903a2e4ee47222a7d8d..e8c0c29594c8f3538892f93173bfccfd788745bf 100644 (file)
@@ -679,17 +679,19 @@ return view.extend({
                                o = nettools.replaceOption(s, 'advanced', form.Flag, 'defaultroute', _('Use default gateway'), _('If unchecked, no default route is configured'));
                                o.default = o.enabled;
 
-                               o = nettools.replaceOption(s, 'advanced', form.Flag, 'peerdns', _('Use DNS servers advertised by peer'), _('If unchecked, the advertised DNS server addresses are ignored'));
-                               o.depends({ 'proto': 'static', '!reverse': true });
-                               o.default = o.enabled;
+                               if (protoval != 'static') {
+                                       o = nettools.replaceOption(s, 'advanced', form.Flag, 'peerdns', _('Use DNS servers advertised by peer'), _('If unchecked, the advertised DNS server addresses are ignored'));
+                                       o.default = o.enabled;
+                               }
 
                                o = nettools.replaceOption(s, 'advanced', form.DynamicList, 'dns', _('Use custom DNS servers'));
-                               o.depends('proto', 'static');
-                               o.depends('peerdns', '0');
+                               if (protoval != 'static')
+                                       o.depends('peerdns', '0');
                                o.datatype = 'ipaddr';
 
                                o = nettools.replaceOption(s, 'advanced', form.DynamicList, 'dns_search', _('DNS search domains'));
-                               o.depends('peerdns', '0');
+                               if (protoval != 'static')
+                                       o.depends('peerdns', '0');
                                o.datatype = 'hostname';
 
                                o = nettools.replaceOption(s, 'advanced', form.Value, 'dns_metric', _('DNS weight'), _('The DNS server entries in the local resolv.conf are primarily sorted by the weight specified here'));