From 6b6290c7ad0e69a65d9c7de89c8f1948b389d7a3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 17:20:21 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 17:20:21. --- .../20260515/20260515172002-Binary.backup | Bin 0 -> 242153 bytes .../20260515/20260515172002-Config.rsc | 3406 +++++++++++++++++ .../20260515/20260515172002-Diff-Config.rsc | 24 + 3 files changed, 3430 insertions(+) create mode 100644 MikroMaster/20260515/20260515172002-Binary.backup create mode 100644 MikroMaster/20260515/20260515172002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515172002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515172002-Binary.backup b/MikroMaster/20260515/20260515172002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c22012c781f223104d8255614c275e2e323712b4 GIT binary patch literal 242153 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
    {hn5RJaf2hRJ)%X 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

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