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