From 8a0a10499515a9f2fd68c4e43c272beb98d213b3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 15:00:52 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 15:00:52. --- .../20260515/20260515150002-Binary.backup | Bin 0 -> 239380 bytes .../20260515/20260515150002-Config.rsc | 3390 +++++++++++++++++ .../20260515/20260515150002-Diff-Config.rsc | 101 + 3 files changed, 3491 insertions(+) create mode 100644 MikroMaster/20260515/20260515150002-Binary.backup create mode 100644 MikroMaster/20260515/20260515150002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515150002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515150002-Binary.backup b/MikroMaster/20260515/20260515150002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6482a1f414e85b421f84d53c0bc24ca03578cab3 GIT binary patch literal 239380 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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/657/b0bd77b1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:15:02 15.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=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.41 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +add address=108.177.14.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.164.103 comment=googlevideo.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Mark Routing main for 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=\ + "Mark Routing main for Trusted-VPN" dst-address-list=Trusted-VPN \ + 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-list=NoVdsina \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address-list=!Local-Net log-prefix=VPN-all new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" 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 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=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 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515150002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515150002-Diff-Config.rsc new file mode 100644 index 0000000..2ab5fb2 --- /dev/null +++ b/MikroMaster/history/20260515/20260515150002-Diff-Config.rsc @@ -0,0 +1,101 @@ +3037c3037,3038 +< add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +--- +> add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ +> NoVdsina +3059d3059 +< add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +3061c3061 +< add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +--- +> add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +3063,3064c3063,3065 +< add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +< add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +--- +> add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +> add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +> add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +3068,3069c3069,3070 +< 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=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +> add address=8.47.69.6 comment=dou.ua list=RKN-dnsLookup +3077,3078c3078,3079 +< add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +< add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +--- +> add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +> add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +3080,3082d3080 +< add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +< add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +3083a3082 +> add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +3085,3100c3084,3100 +< add address=108.177.14.105 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.103 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.99 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.104 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.147 comment=googleapis.com list=RKN-dnsLookup +< add address=108.177.14.106 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +< add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +< add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +< add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +< add address=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.164.103 comment=googlevideo.com list=RKN-dnsLookup +--- +> add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.147 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.164.103 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.164.99 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.164.105 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.164.106 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.164.104 comment=googleapis.com list=RKN-dnsLookup +> add address=142.251.1.93 comment=youtu.be list=RKN-dnsLookup +> add address=142.251.1.190 comment=youtu.be list=RKN-dnsLookup +> add address=142.251.1.136 comment=youtu.be list=RKN-dnsLookup +> add address=142.251.1.91 comment=youtu.be list=RKN-dnsLookup +> add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +3178,3183d3177 +< 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=\ +< "Mark Routing main for Trusted-VPN" dst-address-list=Trusted-VPN \ +< new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +3192a3187,3189 +> add action=mark-routing chain=prerouting comment=YouTube disabled=yes \ +> dst-address-list=YouTube new-routing-mark=To-VPN src-address=\ +> 10.30.30.0/24 src-address-list=!NoWG +3194,3195c3191,3192 +< dst-address-list=!Local-Net log-prefix=VPN-all new-routing-mark=To-VPN \ +< src-address=10.30.30.0/24 +--- +> dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +> VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +3199,3201c3196,3198 +< 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 +--- +> 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 +3297a3295,3298 +> add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +> add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +> add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +> add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn -- 2.52.0