From 1f6f841e964db873e10ce9e329c16616cd7d267e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 17 May 2026 19:00:49 +0300 Subject: [PATCH] Backup for MikroGig created successfully at May 17 19:00:49. --- .../20260517/20260517190045-Binary.backup | Bin 0 -> 164162 bytes MikroGig/20260517/20260517190045-Config.rsc | 2667 +++++++++++++++++ .../20260517/20260517190045-Diff-Config.rsc | 4 + 3 files changed, 2671 insertions(+) create mode 100644 MikroGig/20260517/20260517190045-Binary.backup create mode 100644 MikroGig/20260517/20260517190045-Config.rsc create mode 100644 MikroGig/history/20260517/20260517190045-Diff-Config.rsc diff --git a/MikroGig/20260517/20260517190045-Binary.backup b/MikroGig/20260517/20260517190045-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..10f9e9d7bc0113345ea5e4568f3aab4539dbe246 GIT binary patch literal 164162 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 %nA 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%0A)F_nHj-;e_Nu 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\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="Download custom Certificates By Routers Identity " \ + dont-require-permissions=no name=mod/AM-Certs-By-Ident owner=\ + mod/AM-Certs-By-Ident policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Certs-By-Ident\r\ + \n# Script comment: Download custom Certificates By Routers Identity \r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n#:local ScriptName [ :jobname ];\r\ + \n#\r\ + \n# CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n:global tmpAddCerts true; \r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n:local UrlSuffix [/system/identity/get name];\r\ + \n:local UrlDir \"certs/\";\r\ + \n:local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\");\r\ + \n\r\ + \n:log error \$CertUrl;\r\ + \n\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n:global tmpAddCerts (a);\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n:global GlobalScriptsUrl;\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n" +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com diff --git a/MikroGig/history/20260517/20260517190045-Diff-Config.rsc b/MikroGig/history/20260517/20260517190045-Diff-Config.rsc new file mode 100644 index 0000000..4546c55 --- /dev/null +++ b/MikroGig/history/20260517/20260517190045-Diff-Config.rsc @@ -0,0 +1,4 @@ +10c10 +< # channel: 2442/20-Ce/gn(17dBm), SSID: vados, local forwarding +--- +> # channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding -- 2.52.0