aboutsummaryrefslogtreecommitdiffstats
path: root/fw-addr-lists.rsc
diff options
context:
space:
mode:
authorGravatar Christian Hesse <mail@eworm.de>2024-11-05 17:49:28 +0100
committerGravatar Christian Hesse <mail@eworm.de>2024-11-06 22:42:40 +0100
commit084c246ef0cab329fe981732089277fa8398800b (patch)
tree0a2b9ed0d30b1d24a69a245177bf6757557c09b3 /fw-addr-lists.rsc
parent31dfdf7e6243527d77af6b4ae93e753cd45c8cbb (diff)
fw-addr-lists: simplify looping linesrouteros-7.16-1
With `:deserialize` the **record** separator is always a new line. The property `delimiter=` is a **field** reparator, so you can parse a lines into an array. We do not want (or need) that, so use new line as field separator. This will result in an array with just one element, and we use that. Also convert the data to line feed explicitly, just to be sure.
Diffstat (limited to 'fw-addr-lists.rsc')
-rw-r--r--fw-addr-lists.rsc7
1 files changed, 3 insertions, 4 deletions
diff --git a/fw-addr-lists.rsc b/fw-addr-lists.rsc
index 4675e3a..a9513d8 100644
--- a/fw-addr-lists.rsc
+++ b/fw-addr-lists.rsc
@@ -65,7 +65,7 @@
:for I from=1 to=5 do={
:if ($Data = false) do={
- :set Data [ $FetchHuge $ScriptName ($List->"url") $CheckCertificate ];
+ :set Data [ :tolf [ $FetchHuge $ScriptName ($List->"url") $CheckCertificate ] ];
:if ($Data = false) do={
:if ($I < 5) do={
$LogPrint debug $ScriptName ("Failed downloading for list '" . $FwListName . \
@@ -86,8 +86,8 @@
"B for list '" . $FwListName . "' from: " . $List->"url");
}
- :while ([ :len $Data ] != 0) do={
- :local Line [ :pick $Data 0 [ :find $Data "\n" ] ];
+ :foreach Line in=[ :deserialize $Data delimiter="\n" from=dsv options=dsv.plain ] do={
+ :set Line ($Line->0);
:local Address;
:if ([ :pick $Line 0 1 ] = "{") do={
:set Address [ :tostr ([ :deserialize from=json $Line ]->"cidr") ];
@@ -109,7 +109,6 @@
:error true;
}
} on-error={ }
- :set Data [ :pick $Data ([ :len $Line ] + 1) [ :len $Data ] ];
}
}