From e8e217e6f69ab837e4b15640d428459ac079b37b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 27 May 2026 11:20:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 27 11:20:40. --- .../20260527/20260527112002-Binary.backup | Bin 0 -> 259526 bytes .../20260527/20260527112002-Config.rsc | 3462 +++++++++++++++++ .../20260527/20260527112002-Diff-Config.rsc | 64 + 3 files changed, 3526 insertions(+) create mode 100644 MikroMaster/20260527/20260527112002-Binary.backup create mode 100644 MikroMaster/20260527/20260527112002-Config.rsc create mode 100644 MikroMaster/history/20260527/20260527112002-Diff-Config.rsc diff --git a/MikroMaster/20260527/20260527112002-Binary.backup b/MikroMaster/20260527/20260527112002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..532af88e75178348afcc2a48d1689d82a790397c GIT binary patch literal 259526 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 z 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%0DnY{0e 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

uCoUY$6yv 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�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

=EuDwy^1srVZgs!YYP5RJblkp% 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 z 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\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/661/8d6d2114\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 25.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=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-IP +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-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ + out-interface-list=WAN protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes 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" src-address-list=\ + !VDSina +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-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN dst-address=\ + !10.30.30.0/24 dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ + src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" 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="Default NAT" out-interface=\ + "ether1 - Unet" routing-mark=!To-VPN src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260527/20260527112002-Diff-Config.rsc b/MikroMaster/history/20260527/20260527112002-Diff-Config.rsc new file mode 100644 index 0000000..11d0937 --- /dev/null +++ b/MikroMaster/history/20260527/20260527112002-Diff-Config.rsc @@ -0,0 +1,64 @@ +2448,2450c2448,2450 +< add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ +< endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ +< MikroVados persistent-keepalive=25s public-key=\ +--- +> add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ +> 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ +> persistent-keepalive=25s public-key=\ +3157,3158c3157,3158 +< disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ +< out-interface-list=WAN protocol=udp +--- +> dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ +> protocol=udp +3165,3166c3165,3166 +< add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ +< dst-port=29185 out-interface="ether1 - Unet" protocol=udp +--- +> add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ +> out-interface="ether1 - Unet" protocol=udp +3221,3223c3221,3223 +< add action=mark-routing chain=prerouting comment=FuckRKN dst-address=\ +< !10.30.30.0/24 dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN \ +< passthrough=no src-address=10.30.30.0/24 +--- +> add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ +> dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ +> new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +3228,3229c3228,3229 +< dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ +< 10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ +> src-address=10.30.30.0/24 src-address-list=!NoWG +3231,3232c3231,3232 +< "Mark VPN connections to exclude from FastTrack" disabled=yes \ +< new-connection-mark=VPN_No_FastTrack +--- +> "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ +> VPN_No_FastTrack +3236,3238c3236,3238 +< add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ +< 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ +< src-address=10.30.30.0/24 +--- +> add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ +> dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ +> passthrough=no src-address=10.30.30.0/24 +3244a3245,3246 +> add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ +> out-interface=WG src-address-list=!NoWG +3246c3248 +< "ether1 - Unet" routing-mark=!To-VPN src-address=10.30.30.0/24 +--- +> "ether1 - Unet" src-address=10.30.30.0/24 +3248,3249c3250,3251 +< fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ +< !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +--- +> fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ +> 10.30.30.33 to-ports=443 +3267,3268d3268 +< add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ +< out-interface=WG src-address-list=!NoWG -- 2.52.0