From bf1adf87eeef7b73e46cdb5793e2c38c48340d8b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 20:20:45 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 20:20:45. --- .../20260515/20260515202002-Binary.backup | Bin 0 -> 242464 bytes .../20260515/20260515202002-Config.rsc | 3405 +++++++++++++++++ .../20260515/20260515202002-Diff-Config.rsc | 37 + 3 files changed, 3442 insertions(+) create mode 100644 MikroMaster/20260515/20260515202002-Binary.backup create mode 100644 MikroMaster/20260515/20260515202002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515202002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515202002-Binary.backup b/MikroMaster/20260515/20260515202002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..14b093f5ac10df3c4cb967af2fb0e7c678edf6d1 GIT binary patch literal 242464 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%0DO_POh?FgTQ{G9>6Ngsn5o!HE9_J3Owr~ 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

(6R;glZWV18)S+qT#vRP*{!7y? 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

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