From 2a184d5dd06ad1923e4ecdf41cab645be9465956 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 25 May 2026 06:00:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 25 06:00:40. --- .../20260525/20260525060002-Binary.backup | Bin 0 -> 256122 bytes .../20260525/20260525060002-Config.rsc | 3453 +++++++++++++++++ .../20260525/20260525060002-Diff-Config.rsc | 4 + 3 files changed, 3457 insertions(+) create mode 100644 MikroMaster/20260525/20260525060002-Binary.backup create mode 100644 MikroMaster/20260525/20260525060002-Config.rsc create mode 100644 MikroMaster/history/20260525/20260525060002-Diff-Config.rsc diff --git a/MikroMaster/20260525/20260525060002-Binary.backup b/MikroMaster/20260525/20260525060002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..508a989695d9ee2f378b4e8497fa220341157309 GIT binary patch literal 256122 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
    m0P{npB@no?O^ZPj}=LVNM2r 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%0DaeRtC~?A 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
    g$c$8vJ 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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/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.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 trusted=yes trusted-dhcpv6=yes +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 +/interface bridge settings +set use-ip-firewall=yes +/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 comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.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" \ + disabled=yes 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 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-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=VPN_No_FastTrack src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + 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-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="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="VDSIna for All sites" \ + dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +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="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +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=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +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 \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +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 disabled=yes +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 \ + disabled=yes +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 disabled=yes +/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 +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260525/20260525060002-Diff-Config.rsc b/MikroMaster/history/20260525/20260525060002-Diff-Config.rsc new file mode 100644 index 0000000..8bf26e6 --- /dev/null +++ b/MikroMaster/history/20260525/20260525060002-Diff-Config.rsc @@ -0,0 +1,4 @@ +34a35 +> add disabled=yes listen-port=39736 mtu=1280 name=AWG +2460a2462 +> add address=10.9.0.2/24 disabled=yes interface=*10 network=10.9.0.0 -- 2.52.0