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