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