From 9d77e7e572279e72dd91fb81b856361feb4c5b11 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 4 May 2026 02:00:32 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 04 02:00:32. --- .../20260504/20260504020002-Binary.backup | Bin 0 -> 266808 bytes .../20260504/20260504020002-Config.rsc | 4405 +++++++++++++++++ .../20260504/20260504020002-Diff-Config.rsc | 7 + 3 files changed, 4412 insertions(+) create mode 100644 MikroMaster/20260504/20260504020002-Binary.backup create mode 100644 MikroMaster/20260504/20260504020002-Config.rsc create mode 100644 MikroMaster/history/20260504/20260504020002-Diff-Config.rsc diff --git a/MikroMaster/20260504/20260504020002-Binary.backup b/MikroMaster/20260504/20260504020002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0232ee1eed3a501a0ab0ea8af121b29744a95bb8 GIT binary patch literal 266808 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 z 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

s~j52Pr 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%0AU}!_5NhvUhY%utP_d$kN0K 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \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#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\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# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs true;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n \r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [ /system identity get name ];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/368/b69ddb1c\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 09:35:02 01.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 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 FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\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# check and download required certificate\r\ + \n# Usage: \$CertificateAvailable \"Common Name\" \"intended use for certi\ + ficate (e.g. \"fetch\", \"tls\", \"all\", \"undefined\")\"\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# download and import certificate\r\ + \n# Usage: \$CertificateDownload \"Common Name\"\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 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 http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 warning (\$0 . \" Failed downloading certificate with CommonN\ + ame '\" . \$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# name a certificate by its common-name\r\ + \n# Usage: \$CertificateNameByCN \"Common Name\"\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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_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#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\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 dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local FwAddrListsUrl (\$GlobalScriptsUrl . \"fw-addr-lists.d/\");\r\ + \n :local FwAddrListsIndexUrl (\$FwAddrListsUrl . \"index\");\r\ + \n :local FwAddrListTimeOut 1d;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHuge;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=([ :len \$1 ] - 1) do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick \$1 \$I ] ] ] != \"num\ + \") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len [ /log/find where topics=({\"script\"; \"warning\"}) \\\r\ + \n message=(\"\\\$LogPrint: The message is already in log, scripting \ + subsystem may have crashed before!\") ] ] > 0) do={\r\ + \n :log warning (\$ScriptName . \" Scripting subsystem may have crashed\ + , possibly caused by us. Delaying!\");\r\ + \n :delay 5m;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local FwAddrListsIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$FwAddrListsIndex = false) do={\r\ + \n :set FwAddrListsIndex [ :tolf [ \$FetchHuge \$ScriptName \$FwAddrL\ + istsIndexUrl false ] ];\r\ + \n :if (\$FwAddrListsIndex = false && \$I < 5) do={\r\ + \n :log debug (\$ScriptName . \" Failed downloading address-list in\ + dex, \" . \$I . \". try from: \" . \$FwAddrListsIndexUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$FwAddrListsIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$FwAddrListsIndexUrl);\r\ + \n :set FwAddrListsIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach FwListFile in=[ :deserialize \$FwAddrListsIndex delimiter=\"\ + \\n\" from=dsv options=dsv.plain ] do={\r\ + \n :local FwListName (\$FwListFile->0);\r\ + \n :local Delim [ \$FindDelim \$FwListName ];\r\ + \n :if (\$Delim = 0) do={ :set FwListName \"\"; };\r\ + \n :if ([ :len \$FwListName ] > 0) do={ :set FwListName [ :pick \$FwLis\ + tName 0 \$Delim ]; }\r\ + \n\r\ + \n :local FwListUrl (\$FwAddrListsUrl . \$FwListName);\r\ + \n :if ([ :len \$FwListName ] > 0) do={\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$FwAddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHuge \$ScriptName \$FwListUrl false ]\ + \_];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$FwListName . \"', \" . \$I . \". try from: \" . \$FwListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$FwListName . \"' from: \" . \$FwListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$FwListName . \"' from: \" \ + . \$FwListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Delim [ \$FindDelim \$Line ];\r\ + \n :if (\$Delim = 0) do={ :set Line \"\"; };\r\ + \n :if ([ :len \$Line ] = 0) do={ :set Line \"#\"; }\r\ + \n :if ([ :pick \$Line 0 1 ] != \"#\") do={\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address [ :pick \$Line 0 [ \$FindDelim \$Line ] ];\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :if ([ :typeof (\$IPv4Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv4Addresses->\$Branch) ({}) };\r\ + \n :if ([ :typeof (\$IPv6Addresses->\$Branch) ] != \"array\") do=\ + { :set (\$IPv6Addresses->\$Branch) ({}) };\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :error true;\r\ + \n }\r\ + \n } on-error={:log error (\$ScriptName . \" Failed parsing address: \ + \" . \$Line->0);}\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$FwListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log debug (\$ScriptName . \" Renewing IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" in list '\" . \$FwListName . \"' with \" . \$TimeOut . \"\ + .\");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log debug (\$ScriptName . \" Removing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" from list '\" . \$FwListName .\".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv4 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$FwListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log debug (\$ScriptName . \" Handling branch: \" . \$BranchName);\ + \r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log debug (\$ScriptName . \" Adding IPv6 address \" . \$Address\ + \_. \\\r\ + \n \" to list '\" . \$FwListName . \"' with \" . \$Timeout . \"\ + .\");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$FwListName comment=\$Li\ + stComment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$FwListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$FwListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\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" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +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="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/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=ether2 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 add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/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" disabled=yes 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=91.192.189.2 comment=Unet-DNS disabled=yes 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 +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +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=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +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=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +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 list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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 +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +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 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 \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 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=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting 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 \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + 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 content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + 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 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 \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/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 hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/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 +/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 +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/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="Setup Global Environment for scripts" 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="Windows Update script" disabled=yes interval=2d5m name=\ + WU-script-run-schedule on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" disabled=yes interval=1d name="DNS Cache Flush" \ + on-event=DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" disabled=yes name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ + 1w name=Amster-Backup-UpdateEmail on-event=\ + "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-02-13 start-time=03:41:27 +/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="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260504/20260504020002-Diff-Config.rsc b/MikroMaster/history/20260504/20260504020002-Diff-Config.rsc new file mode 100644 index 0000000..6b8e4ef --- /dev/null +++ b/MikroMaster/history/20260504/20260504020002-Diff-Config.rsc @@ -0,0 +1,7 @@ +358d357 +< \n:global Identity [ /system identity get name ];\r\ +424,425c423 +< \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ +< \");\r\ +--- +> \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\r\ -- 2.52.0