From fc3f135e5cafb723c6ae530874fb640aa87618dd Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 4 Jun 2026 14:20:31 +0300 Subject: [PATCH] Backup for MikroGig created successfully at Jun 04 14:20:31. --- .../20260604/20260604142028-Binary.backup | Bin 0 -> 164162 bytes MikroGig/20260604/20260604142028-Config.rsc | 2667 +++++++++++++++++ .../20260604/20260604142028-Diff-Config.rsc | 4 + 3 files changed, 2671 insertions(+) create mode 100644 MikroGig/20260604/20260604142028-Binary.backup create mode 100644 MikroGig/20260604/20260604142028-Config.rsc create mode 100644 MikroGig/history/20260604/20260604142028-Diff-Config.rsc diff --git a/MikroGig/20260604/20260604142028-Binary.backup b/MikroGig/20260604/20260604142028-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..cba2c2ad15e2bac3670526d5802f17caaf6c5deb GIT binary patch literal 164162 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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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.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/20260604/20260604142028-Diff-Config.rsc b/MikroGig/history/20260604/20260604142028-Diff-Config.rsc new file mode 100644 index 0000000..75e9260 --- /dev/null +++ b/MikroGig/history/20260604/20260604142028-Diff-Config.rsc @@ -0,0 +1,4 @@ +10c10 +< # channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +--- +> # channel: 2442/20-Ce/gn(17dBm), SSID: vados, local forwarding -- 2.52.0