From a4460f09a45910df78a1a755864cb0161001a37c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 8 Jun 2026 09:20:45 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 08 09:20:45. --- .../20260608/20260608092002-Binary.backup | Bin 0 -> 263192 bytes .../20260608/20260608092002-Config.rsc | 3600 +++++++++++++++++ .../20260608/20260608092002-Diff-Config.rsc | 129 + 3 files changed, 3729 insertions(+) create mode 100644 MikroMaster/20260608/20260608092002-Binary.backup create mode 100644 MikroMaster/20260608/20260608092002-Config.rsc create mode 100644 MikroMaster/history/20260608/20260608092002-Diff-Config.rsc diff --git a/MikroMaster/20260608/20260608092002-Binary.backup b/MikroMaster/20260608/20260608092002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..1c67ed761b062f32dc854084a1b40173c8c32b47 GIT binary patch literal 263192 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Π%yuOahza23^p^^!mMg5O`Z|rTR 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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/672/7cf8bc7a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:04 06.06.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" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \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" +/ip smb +set enabled=no interfaces=lo +/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 trusted-dhcpv6=yes trusted-ra=yes +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set allow-fast-path=no disable-ipv6=yes max-neighbor-entries=8192 \ + multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ + 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 interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add check-gateway=arp default-route-tables=main dhcp-options=\ + hostname,clientid,clientid_duid interface="ether1 - Unet" name=client1 \ + use-peer-dns=no use-peer-ntp=no +/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,10.30.30.81 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +add address=10.30.30.81 comment=NS.vados.ru.local name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" match-subdomain=yes name=vados.ru ns=\ + ns.vados.ru.local type=NS +add address=10.30.30.33 comment=reg.vados.ru name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +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 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 match-subdomain=yes name=mikrots.vados.ru 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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws 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=amster 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=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +/ip firewall filter +add action=accept chain=input comment="udp Accept input DNS queries" \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address=\ + 10.30.30.0/24 +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + dst-port=53 in-interface=Bridge-LAN protocol=tcp src-address=\ + 10.30.30.0/24 +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 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="ether1 - Unet" protocol=tcp src-address=!10.30.30.0/24 \ + 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 \ + in-interface="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +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 WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +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 in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +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=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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes 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=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina 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=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes 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" \ + disabled=yes 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" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes 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="udp Redirect DNS in NAT" dst-port=\ + 53 protocol=udp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" dst-port=\ + 53 protocol=tcp src-address=10.30.30.0/24 to-addresses=10.30.30.81 \ + to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + 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 disabled=yes 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" 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 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=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 src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +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=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=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=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 +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru 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 check-gateway=ping disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN 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 forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 address +add address=fddd:2c4:2c4:2c4::81/128 advertise=no disabled=yes from-pool=\ + fddd-pref interface=Bridge-LAN +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 nd +set [ find default=yes ] advertise-dns=yes disabled=yes interface=Bridge-LAN \ + managed-address-configuration=yes other-configuration=yes pref64=::/64 +/ipv6 nd prefix +add autonomous=no disabled=yes interface=Bridge-LAN on-link=no prefix=none +/ipv6 nd prefix default +set dhcp6-pd-preferred=yes +/ipv6 nd proxy +add disabled=yes interface=lo +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set 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 package update +set check-certificate=yes-without-crl +/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 certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260608/20260608092002-Diff-Config.rsc b/MikroMaster/history/20260608/20260608092002-Diff-Config.rsc new file mode 100644 index 0000000..fafcea3 --- /dev/null +++ b/MikroMaster/history/20260608/20260608092002-Diff-Config.rsc @@ -0,0 +1,129 @@ +8c8 +< "\$(BRIDGEMAC)" name=Bridge-LAN port-cost-mode=short +--- +> "\$(BRIDGEMAC)" name=Bridge-LAN port-cost-mode=short ra-guard=yes +25a26,28 +> /interface 6to4 +> add dont-fragment=inherit !keepalive local-address=10.30.30.81 name=6to4-tun \ +> remote-address=10.30.30.0 +80a84,86 +> /ipv6 dhcp-server option sets +> add name=domain-search-set options=domain-search-list +> add name="=\"Client ID\"" options=HostName +2415,2417c2421,2423 +< \n:local \"IF-TUN\" \"6to4-tun\"\ +< \n:local \"IF-LOC\" \"Bridge-LAN\"\ +< \n:local \"POOL-6TO4\" \"poolV6-local\"\ +--- +> \n:local \"IF-TUN\" \"6to4tun\"\ +> \n:local \"IF-LOC\" \"local\"\ +> \n:local \"POOL-6TO4\" \"pool_v6-local\"\ +2420,2423c2426,2429 +< \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ +< address]\ +< \n#:local \"interface\" \"ext\"\ +< \n:local bound 0\ +--- +> \n:local \"lease-address\" [/ip address get [find interface=\$\"interface\ +> \"] address]\ +> \n:local \"interface\" \"ext\"\ +> \n:local bound 1\ +2426a2433,2466 +> \n:global MAC2EUI64 do={\ +> \n :local EUI64 \"\"\ +> \n :local MAC \$1\ +> \n :local HEX2DEC \"0123456789ABCDEF\"\ +> \n :for i from=0 to=5 step=1 do={\ +> \n :if ( \$i = 0 ) do={\ +> \n :set EUI64 [:pick \$MAC 0]\ +> \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ +> \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ +> \n }\ +> \n :if ( \$i = 1 || \$i = 3) do={\ +> \n :set EUI64 (\$EUI64.\":\")\ +> \n }\ +> \n :if ( \$i = 2 ) do={\ +> \n :set EUI64 (\$EUI64.\"FF:FE\")\ +> \n }\ +> \n :if ( [:find \$MAC \":\"] = 2 ) do={\ +> \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ +> \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ +> \n }\ +> \n }\ +> \n :return (\$EUI64)\ +> \n}\ +> \n\ +> \n:global dec2hex do={\ +> \n :local hex \"\"\ +> \n :local dec [:tonum \$1]\ +> \n :for i from=0 to=4 step=4 do={\ +> \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ +> c>>\$i)&0xf)+1)].\$hex)\ +> \n }\ +> \n :return ([:tostr \$hex])\ +> \n}\ +> \n\ +2473c2513 +< \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ +--- +> \_mtu=1280 name=\$\"IF-TUN\" remote-address=192.88.99.1\ +2502c2542 +< \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ +--- +> \n /ipv6 route add dst-address=::/0 gateway=(\"::192.88.99.1%\".\$\ +2527,2561d2566 +< add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ +< ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ +< global MAC2EUI64 do={\ +< \n :local EUI64 \"\"\ +< \n :local MAC \$1\ +< \n :local HEX2DEC \"0123456789ABCDEF\"\ +< \n :for i from=0 to=5 step=1 do={\ +< \n :if ( \$i = 0 ) do={\ +< \n :set EUI64 [:pick \$MAC 0]\ +< \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ +< \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ +< \n }\ +< \n :if ( \$i = 1 || \$i = 3) do={\ +< \n :set EUI64 (\$EUI64.\":\")\ +< \n }\ +< \n :if ( \$i = 2 ) do={\ +< \n :set EUI64 (\$EUI64.\"FF:FE\")\ +< \n }\ +< \n :if ( [:find \$MAC \":\"] = 2 ) do={\ +< \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ +< \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ +< \n }\ +< \n }\ +< \n :return (\$EUI64)\ +< \n}\ +< \n\ +< \n:global dec2hex do={\ +< \n :local hex \"\"\ +< \n :local dec [:tonum \$1]\ +< \n :for i from=0 to=4 step=4 do={\ +< \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ +< c>>\$i)&0xf)+1)].\$hex)\ +< \n }\ +< \n :return ([:tostr \$hex])\ +< \n}" +3478a3484,3486 +> /ipv6 route +> add disabled=no distance=1 dst-address=::/0 gateway=6to4-tun pref-src="" \ +> routing-table=main scope=30 target-scope=10 +3507,3511c3515,3523 +< add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ +< info use-interface-duid=yes validate-server-duid=no +< /ipv6 dhcp-server option sets +< add name=domain-search-set options=domain-search-list +< add name="=\"Client ID\"" options=HostName +--- +> add add-default-route=yes disabled=yes interface=6to4-tun rapid-commit=no \ +> request=info use-interface-duid=yes validate-server-duid=no +> /ipv6 dhcp-server +> add dhcp-option=domain-search-list,HostName ignore-ia-na-bindings=yes \ +> interface=Bridge-LAN name=DHCP-v6 prefix-pool=pool10-pref +> /ipv6 dhcp-server binding +> add address=fddd:2c4:2c4:2c4::1/128 allow-dual-stack-queue=yes duid=\ +> 0x00030001488f5a8e1abc ia-type=na iaid=0 queue-type=default server=\ +> DHCP-v6 -- 2.52.0