From 65bbe1889190e1df2d4fee68c626b4e79a7e7cac Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 8 Jun 2026 09:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 08 09:00:18. --- .../20260608/20260608090001-Binary.backup | Bin 0 -> 263722 bytes .../20260608/20260608090001-Config.rsc | 3612 +++++++++++++++++ .../20260608/20260608090001-Diff-Config.rsc | 169 + 3 files changed, 3781 insertions(+) create mode 100644 MikroMaster/20260608/20260608090001-Binary.backup create mode 100644 MikroMaster/20260608/20260608090001-Config.rsc create mode 100644 MikroMaster/history/20260608/20260608090001-Diff-Config.rsc diff --git a/MikroMaster/20260608/20260608090001-Binary.backup b/MikroMaster/20260608/20260608090001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a39d7635077d5bf7ee053d9c080470c50486426d GIT binary patch literal 263722 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Ȥ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 z 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

nNX*XHX^jlCf2{Xu+OESYA3RO9=>eS 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 ^ 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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\" \"6to4tun\"\ + \n:local \"IF-LOC\" \"local\"\ + \n:local \"POOL-6TO4\" \"pool_v6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"interface\ + \"] address]\ + \n:local \"interface\" \"ext\"\ + \n:local bound 1\ + \n\ + \n###############################################\ + \n\ + \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\ + \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=192.88.99.1\ + \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=(\"::192.88.99.1%\".\$\ + \"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}" +/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 +/ipv6 route +add disabled=no distance=1 dst-address=::/0 gateway=6to4-tun pref-src="" \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add 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=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 +/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/20260608090001-Diff-Config.rsc b/MikroMaster/history/20260608/20260608090001-Diff-Config.rsc new file mode 100644 index 0000000..238a043 --- /dev/null +++ b/MikroMaster/history/20260608/20260608090001-Diff-Config.rsc @@ -0,0 +1,169 @@ +27,28c27,28 +< add dont-fragment=inherit !keepalive local-address=10.30.30.81 name=6to4-tun \ +< remote-address=10.30.30.0 +--- +> add !keepalive local-address=146.120.64.211 name=6to4-tun remote-address=\ +> 146.120.64.209 +2417,2566d2416 +< 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\" \"6to4tun\"\ +< \n:local \"IF-LOC\" \"local\"\ +< \n:local \"POOL-6TO4\" \"pool_v6-local\"\ +< \n:local \"force-update\" false\ +< \n############ use then static ip #######################\ +< \n:local \"lease-address\" [/ip address get [find interface=\$\"interface\ +< \"] address]\ +< \n:local \"interface\" \"ext\"\ +< \n:local bound 1\ +< \n\ +< \n###############################################\ +< \n\ +< \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\ +< \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=192.88.99.1\ +< \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=(\"::192.88.99.1%\".\$\ +< \"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}" +3485,3486c3335,3336 +< add disabled=no distance=1 dst-address=::/0 gateway=6to4-tun pref-src="" \ +< routing-table=main scope=30 target-scope=10 +--- +> add check-gateway=arp disabled=no distance=1 dst-address=::/0 gateway=\ +> 6to4-tun pref-src="" routing-table=main scope=30 target-scope=10 +3515,3516c3365,3366 +< add add-default-route=yes disabled=yes interface=6to4-tun rapid-commit=no \ +< request=info use-interface-duid=yes validate-server-duid=no +--- +> add interface=Bridge-LAN pool-name=fddd-pref rapid-commit=no request=address \ +> use-interface-duid=yes validate-server-duid=no -- 2.52.0