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