luci-app-firewall: properly handle custom multi IP/MAC input
Store multiple space separated custom address values as separate uci list items in the configuration. Fixes: #4822 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
b8d2bcd432
commit
b60be8cfd8
1 changed files with 17 additions and 2 deletions
|
@ -425,8 +425,23 @@ return baseclass.extend({
|
||||||
opt.addChoices(choices[0], choices[1]);
|
opt.addChoices(choices[0], choices[1]);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
CBIDynamicMultiValueList: form.DynamicList.extend({
|
||||||
|
renderWidget: function(/* ... */) {
|
||||||
|
var dl = form.DynamicList.prototype.renderWidget.apply(this, arguments),
|
||||||
|
inst = dom.findClassInstance(dl);
|
||||||
|
|
||||||
|
inst.addItem = function(dl, value, text, flash) {
|
||||||
|
var values = L.toArray(value);
|
||||||
|
for (var i = 0; i < values.length; i++)
|
||||||
|
ui.DynamicList.prototype.addItem.call(this, dl, values[i], null, true);
|
||||||
|
};
|
||||||
|
|
||||||
|
return dl;
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
|
||||||
addIPOption: function(s, tab, name, label, description, family, hosts, multiple) {
|
addIPOption: function(s, tab, name, label, description, family, hosts, multiple) {
|
||||||
var o = s.taboption(tab, multiple ? form.DynamicList : form.Value, name, label, description);
|
var o = s.taboption(tab, multiple ? this.CBIDynamicMultiValueList : form.Value, name, label, description);
|
||||||
|
|
||||||
o.modalonly = true;
|
o.modalonly = true;
|
||||||
o.datatype = 'list(neg(ipmask))';
|
o.datatype = 'list(neg(ipmask))';
|
||||||
|
@ -474,7 +489,7 @@ return baseclass.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
addMACOption: function(s, tab, name, label, description, hosts) {
|
addMACOption: function(s, tab, name, label, description, hosts) {
|
||||||
var o = s.taboption(tab, form.DynamicList, name, label, description);
|
var o = s.taboption(tab, this.CBIDynamicMultiValueList, name, label, description);
|
||||||
|
|
||||||
o.modalonly = true;
|
o.modalonly = true;
|
||||||
o.datatype = 'list(macaddr)';
|
o.datatype = 'list(macaddr)';
|
||||||
|
|
Loading…
Reference in a new issue