mirror of
https://github.com/openwrt/luci.git
synced 2026-04-15 19:01:56 +00:00
luci-base: firewall fixes
Firewall.newZone() treated this.getZone(name) (an async function returning a Promise) as if it were synchronous, causing the while loop never to terminate. Although, it's not used anywhere. Sort in getZones was not producing expected results. Now use a localeCompare which returns an integer result for sorting purposes. The previous comparison returned a boolean, but for sorting to work, it must return either -1 to go before, +1 to go after, or 0 for equality. Rule and Redirect shall also have a sid. Signed-off-by: Paul Donald <newtwen+github@gmail.com>
This commit is contained in:
@@ -95,11 +95,11 @@ Firewall = L.Class.extend({
|
||||
},
|
||||
|
||||
newZone: function() {
|
||||
return initFirewallState().then(L.bind(function() {
|
||||
return initFirewallState().then(L.bind(async function() {
|
||||
var name = 'newzone',
|
||||
count = 1;
|
||||
|
||||
while (this.getZone(name) != null)
|
||||
while ((await this.getZone(name)) != null)
|
||||
name = 'newzone%d'.format(++count);
|
||||
|
||||
return this.addZone(name);
|
||||
@@ -140,7 +140,7 @@ Firewall = L.Class.extend({
|
||||
for (let s of sections)
|
||||
zones.push(new Zone(s['.name']));
|
||||
|
||||
zones.sort(function(a, b) { return a.getName() > b.getName() });
|
||||
zones.sort(function(a, b) { return L.naturalCompare(a.getName() || '', b.getName() || '') });
|
||||
|
||||
return zones;
|
||||
});
|
||||
@@ -546,6 +546,10 @@ Forwarding = AbstractFirewallItem.extend({
|
||||
|
||||
|
||||
Rule = AbstractFirewallItem.extend({
|
||||
__init__: function(sid) {
|
||||
this.sid = sid;
|
||||
},
|
||||
|
||||
getSource: function() {
|
||||
return this.get('src');
|
||||
},
|
||||
@@ -565,6 +569,10 @@ Rule = AbstractFirewallItem.extend({
|
||||
|
||||
|
||||
Redirect = AbstractFirewallItem.extend({
|
||||
__init__: function(sid) {
|
||||
this.sid = sid;
|
||||
},
|
||||
|
||||
getSource: function() {
|
||||
return this.get('src');
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user