From cc1c7aeca4ad91eabe3ab9321434a5f02245befa Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 11:40:25 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 11:40:25. --- .../20260515/20260515114002-Binary.backup | Bin 0 -> 248719 bytes .../20260515/20260515114002-Config.rsc | 3575 +++++++++++++++++ .../20260515/20260515114002-Diff-Config.rsc | 46 + 3 files changed, 3621 insertions(+) create mode 100644 MikroMaster/20260515/20260515114002-Binary.backup create mode 100644 MikroMaster/20260515/20260515114002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515114002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515114002-Binary.backup b/MikroMaster/20260515/20260515114002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b8bb0dc160c1add98990399df8cffbbd8322b2c2 GIT binary patch literal 248719 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®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

aN)a%N0$H^B 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 aq6%Z8S012yI`i3y;sh^5~FedPQqXKqmT* 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%0D)as;6}`|-ZUCb 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%0AUD>Y)e^*J% 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 k!VE&Z\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/641/dccfa1dc\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 11:05:03 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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\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#/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 comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"fbcd.net\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"twimg.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"ytimg.com\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$ListRKN add\ + ress: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list:\$ListRKN \ + address: \$newAddress domain: \$aItem record: \$aRecord\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=iCloud-Mail +add address=smtp.mail.me.com.akadns.net comment=smtp.mail.me.com.akadns.net \ + list=iCloud-Mail +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.106 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.190 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.136 comment=youtu.be list=RKN-dnsLookup +add address=209.85.233.93 comment=youtu.be list=RKN-dnsLookup +add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.103 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.120 comment=gstatic.com list=RKN-dnsLookup +add address=173.194.73.94 comment=gstatic.com list=RKN-dnsLookup +add address=108.177.14.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ + new-routing-mark=main src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="vk.com raw" \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="ok.ru raw" \ + content=ok.ru +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "comp-lenta.ru raw" content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="gov.ru raw" \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "r78.fssp.gov.ru raw" content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515114002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515114002-Diff-Config.rsc new file mode 100644 index 0000000..287987e --- /dev/null +++ b/MikroMaster/history/20260515/20260515114002-Diff-Config.rsc @@ -0,0 +1,46 @@ +3231d3230 +< add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +3233,3235c3232,3234 +< add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +< add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +< add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +--- +> add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +> add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +> add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +3236a3236 +> add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +3238,3239c3238,3239 +< add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +< add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +--- +> add address=8.47.69.6 comment=dou.ua list=RKN-dnsLookup +> add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +3243d3242 +< add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +3244a3244 +> add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +3248,3250c3248,3251 +< add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +< add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +< add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +--- +> add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +> add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +> add address=172.66.0.227 comment=twitter.com list=RKN-dnsLookup +> add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +3254,3260c3255,3260 +< add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +< add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.106 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +--- +> add address=209.85.233.147 comment=googleapis.com list=RKN-dnsLookup +> add address=209.85.233.99 comment=googleapis.com list=RKN-dnsLookup +> add address=209.85.233.104 comment=googleapis.com list=RKN-dnsLookup +> add address=209.85.233.106 comment=googleapis.com list=RKN-dnsLookup +> add address=209.85.233.103 comment=googleapis.com list=RKN-dnsLookup +> add address=209.85.233.105 comment=googleapis.com list=RKN-dnsLookup -- 2.52.0