From 0f3a31bad68bd40c81c1f0a8d895723f28aef305 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 19:40:48 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 19:40:48. --- .../20260515/20260515194002-Binary.backup | Bin 0 -> 242677 bytes .../20260515/20260515194002-Config.rsc | 3409 +++++++++++++++++ .../20260515/20260515194002-Diff-Config.rsc | 24 + 3 files changed, 3433 insertions(+) create mode 100644 MikroMaster/20260515/20260515194002-Binary.backup create mode 100644 MikroMaster/20260515/20260515194002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515194002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515194002-Binary.backup b/MikroMaster/20260515/20260515194002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4eab1f003ba99ac734f43dd6a4e17e011ef71d77 GIT binary patch literal 242677 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�$a5XuBXswpN{ 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 V7O\"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" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +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-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 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=173.194.73.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.73.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.162.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.162.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server 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" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Mark Routing main for 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 VDSina" dst-address-list=VDSina new-routing-mark=\ + main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address-list=NoVdsina \ + new-routing-mark=main passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack routing-mark=To-VPN +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN 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" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" protocol=tcp routing-mark=!To-VPN \ + to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=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/20260515194002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515194002-Diff-Config.rsc new file mode 100644 index 0000000..769488d --- /dev/null +++ b/MikroMaster/history/20260515/20260515194002-Diff-Config.rsc @@ -0,0 +1,24 @@ +3094,3099c3094,3099 +< add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +--- +> add address=173.194.221.104 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.147 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.105 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.99 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.106 comment=googleapis.com list=RKN-dnsLookup +> add address=173.194.221.103 comment=googleapis.com list=RKN-dnsLookup +3104d3103 +< add address=173.194.73.104 comment=googlevideo.com list=RKN-dnsLookup +3106d3104 +< add address=173.194.73.99 comment=googlevideo.com list=RKN-dnsLookup +3108d3105 +< add address=173.194.73.103 comment=googlevideo.com list=RKN-dnsLookup +3109a3107,3109 +> add address=173.194.73.99 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.73.103 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.73.104 comment=googlevideo.com list=RKN-dnsLookup -- 2.52.0