:global GlobalFuncReady false;
# Git commit id & info, expected configuration version
-:global CommitId "main/578/c7ab46ac";
+:global CommitId "main/579/0878acaa";
:global CommitTAG "unknown";
-:global CommitInfo "Autocommit in repo: ros.vados.ru, generated by owner: root, in 17:45:03 04.05.2026.";
+:global CommitInfo "Autocommit in repo: ros.vados.ru, generated by owner: root, in 18:00:03 04.05.2026.";
# The variables are received right here.
:global GlobalConfVersion 140;
:return $Return;
}
+# fetch huge data to file, read in chunks
+:set FetchHuge do={
+ :local ScriptName [ :tostr $1 ];
+ :local Url [ :tostr $2 ];
+ :local CheckCert [ :tostr $3 ];
+
+ :global CleanName;
+ :global FetchUserAgentStr;
+ :global GetRandom20CharAlNum;
+ :global IfThenElse;
+
+ :global MkDir;
+ :global RmDir;
+ :global RmFile;
+ :global WaitForFile;
+
+ :set CheckCert [ $IfThenElse ($CheckCert = "false") "no" "yes-without-crl" ];
+
+ :local DirName ("tmpfs/" . [ $CleanName $ScriptName ]);
+ :if ([ $MkDir $DirName ] = false) do={
+ :log error ($0 . " Failed creating directory!");
+ :return false;
+ }
+
+ :local FileName ($DirName . "/" . [ $CleanName $0 ] . "-" . [ $GetRandom20CharAlNum ]);
+ :onerror Err {
+ /tool/fetch check-certificate=$CheckCert $Url dst-path=$FileName \
+ http-header-field=({ [ $FetchUserAgentStr $ScriptName ] }) as-value;
+ } do={
+ :if ([ $WaitForFile $FileName 500ms ] = true) do={
+ $RmFile $FileName;
+ }
+ :log warning ($0 . " Failed downloading from " . $Url . " - " . $Err);
+ $RmDir $DirName;
+ :return false;
+ }
+
+ :if ([ $WaitForFile $FileName 5s ] = false) do={
+ :log warning ($0 . " The file downloaded from " . $Url . " did not show up.");
+ :return false;
+ }
+
+ :local FileSize [ /file/get $FileName size ];
+ :local Return "";
+ :local VarSize 0;
+ :while ($VarSize != $FileSize) do={
+ :set Return ($Return . ([ /file/read offset=$VarSize chunk-size=32768 file=$FileName as-value ]->"data"));
+ :set FileSize [ /file/get $FileName size ];
+ :set VarSize [ :len $Return ];
+ :if ($VarSize > $FileSize) do={
+ :delay 100ms;
+ }
+ }
+ $RmDir $DirName;
+ :return $Return;
+}
+
+
:set FetchUserAgentStr do={
:local Caller [ :tostr $1 ];
}
:return true;
}
+
:set VersionToNum do={
:local Input [ :tostr $1 ];
:local Multi 0x1000000;