Skip to content

Commit 51a254f

Browse files
Refactor firewall bool handling
1 parent c5a79ce commit 51a254f

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

netjsonconfig/backends/openwrt/converters/firewall.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ def to_netjson_loop(self, block, result, index):
167167

168168
def __netjson_rule(self, rule):
169169
if "enabled" in rule:
170-
rule["enabled"] = rule.pop("enabled") == "1"
170+
rule["enabled"] = self.__netjson_generic_boolean(rule["enabled"])
171171

172172
if "proto" in rule:
173173
rule["proto"] = self.__netjson_generic_proto(rule["proto"])
@@ -182,11 +182,9 @@ def __netjson_zone(self, zone):
182182
if not isinstance(network, list):
183183
zone["network"] = network.split()
184184

185-
if "mtu_fix" in zone:
186-
zone["mtu_fix"] = zone.pop("mtu_fix") == "1"
187-
188-
if "masq" in zone:
189-
zone["masq"] = zone.pop("masq") == "1"
185+
for param in ["mtu_fix", "masq"]:
186+
if param in zone:
187+
zone[param] = self.__netjson_generic_boolean(zone[param])
190188

191189
return self.type_cast(zone)
192190

@@ -207,20 +205,22 @@ def __netjson_redirect(self, redirect):
207205
redirect["monthdays"]
208206
)
209207

210-
if "utc_time" in redirect:
211-
redirect["utc_time"] = redirect["utc_time"] == "1"
212-
213-
if "reflection" in redirect:
214-
redirect["reflection"] = redirect["reflection"] == "1"
208+
for param in ["utc_time", "reflection", "enabled"]:
209+
if param in redirect:
210+
redirect[param] = self.__netjson_generic_boolean(redirect[param])
215211

216212
if "limit_burst" in redirect:
217213
redirect["limit_burst"] = int(redirect["limit_burst"])
218214

219-
if "enabled" in redirect:
220-
redirect["enabled"] = redirect["enabled"] == "1"
221-
222215
return self.type_cast(redirect)
223216

217+
def __netjson_generic_boolean(self, boolean):
218+
# Per convention, boolean options may have one of the values '0', 'no', 'off',
219+
# 'false' or 'disabled' to specify a false value or '1' , 'yes', 'on', 'true' or
220+
# 'enabled' to specify a true value.
221+
# https://openwrt.org/docs/guide-user/base-system/uci
222+
return boolean in ["1", "yes", "on", "true", "enabled"]
223+
224224
def __netjson_generic_proto(self, proto):
225225
if isinstance(proto, list):
226226
return proto.copy()

0 commit comments

Comments
 (0)