luci-app-firewall: disallow creating zone without name
authorJo-Philipp Wich <jo@mein.io>
Wed, 11 Sep 2019 10:46:59 +0000 (12:46 +0200)
committerJo-Philipp Wich <jo@mein.io>
Wed, 11 Sep 2019 10:46:59 +0000 (12:46 +0200)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js

index dc34e84d5e1b5b9f17dd921aec2b1521e960224a..41840a2268021262ae19be537c69769991c4d085 100644 (file)
@@ -92,11 +92,14 @@ return L.view.extend({
                o = s.taboption('general', form.Value, 'name', _('Name'));
                o.placeholder = _('Unnamed zone');
                o.modalonly = true;
+               o.rmempty = false;
                o.datatype = 'and(uciname,maxlength(11))';
                o.write = function(section_id, formvalue) {
                        var cfgvalue = this.cfgvalue(section_id);
 
-                       if (cfgvalue != formvalue)
+                       if (cfgvalue == null || cfgvalue == '')
+                               return uci.set('firewall', section_id, 'name', formvalue);
+                       else if (cfgvalue != formvalue)
                                return firewall.renameZone(cfgvalue, formvalue);
                };
 
@@ -269,7 +272,7 @@ return L.view.extend({
                o.cfgvalue = function(section_id) {
                        var out = (this.option == 'out'),
                            zone = this.lookupZone(uci.get('firewall', section_id, 'name')),
-                           fwds = zone.getForwardingsBy(out ? 'src' : 'dest'),
+                           fwds = zone ? zone.getForwardingsBy(out ? 'src' : 'dest') : [],
                            value = [];
 
                        for (var i = 0; i < fwds.length; i++)
@@ -280,7 +283,7 @@ return L.view.extend({
                o.write = o.remove = function(section_id, formvalue) {
                        var out = (this.option == 'out'),
                            zone = this.lookupZone(uci.get('firewall', section_id, 'name')),
-                           fwds = zone.getForwardingsBy(out ? 'src' : 'dest');
+                           fwds = zone ? zone.getForwardingsBy(out ? 'src' : 'dest') : [];
 
                        if (formvalue == null)
                                formvalue = [];