From d67d6bcba371d1d1bcd9c454bfb9a22888f33fed Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 15 Jun 2026 20:40:49 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 15 20:40:49. --- .../20260615/20260615204002-Binary.backup | Bin 0 -> 273513 bytes .../20260615/20260615204002-Config.rsc | 3673 +++++++++++++++++ .../20260615/20260615204002-Diff-Config.rsc | 19 + 3 files changed, 3692 insertions(+) create mode 100644 MikroMaster/20260615/20260615204002-Binary.backup create mode 100644 MikroMaster/20260615/20260615204002-Config.rsc create mode 100644 MikroMaster/history/20260615/20260615204002-Diff-Config.rsc diff --git a/MikroMaster/20260615/20260615204002-Binary.backup b/MikroMaster/20260615/20260615204002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..719ce933acbe38bb657ba00a702e6d5ea715d0eb GIT binary patch literal 273513 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ℜW@mM!-|QU$l!ot%vp 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
#NTE-pvd(R2`yE4 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

_v%g(_6~ukC%v|`S{YV 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

D|KCT_)4JHtbTp_+@$ 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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/692/cf80d9c2\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 05:40:03 15.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n# :do {\r\ + \n :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - resolve ip ]\";\r\ + \n# }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :local cnameAddress;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:30:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \n}" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted=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 +/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 disable-ipv6=yes disable-link-local-address=yes forward=no \ + max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=all internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=Internet +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=WG list=WAN +add interface=Bridge-LAN list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 109.107.177.79 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=10s public-key=\ + "zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2/24 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 add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=hostname,clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-broadcast=never 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=iVados 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 +/ip dns static +add comment="Local DNS server for vados.ru" disabled=yes ns=10.30.30.81 \ + regexp=*.vados.ru type=NS +add comment="*.vados.ru Regexp" disabled=yes forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" disabled=yes 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 disabled=yes name=\ + ns.vados.ru.local type=A +add comment="DNS ns.vados.ru.local" disabled=yes 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" disabled=yes 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 disabled=yes 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=wg.vados.ru comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" disabled=yes 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 +add address=10.30.30.33 comment="Direct connet to DNS servers" list=\ + Direct-DNS +add address=wg.vados.ru list=VPN-Server +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=22,8291 \ + 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=udp +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=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=output comment="accept WireGuard" dst-address-list=\ + VPN-Server out-interface="ether1 - Unet" protocol=udp src-port=13231 +add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ + out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=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 src-address-list=VDSina +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related in-interface-list=\ + Internet +add action=drop chain=input in-interface=!Bridge-LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VPN-Server 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" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina new-routing-mark=\ + To-VPN routing-mark=!main src-address=10.30.30.0/24 src-address-list=\ + !NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack routing-mark=To-VPN +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" 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" disabled=\ + yes 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" disabled=\ + yes dst-port=53 protocol=tcp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=dst-nat chain=dstnat disabled=yes dst-port=44333 in-interface=\ + "ether1 - Unet" protocol=udp src-address=!10.30.30.0/24 to-addresses=\ + 10.30.30.33 to-ports=44333 +add action=masquerade chain=srcnat comment="Default NAT" dst-address=\ + !10.30.30.0/24 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=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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG routing-mark=To-VPN src-address-list=!NoWG +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=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=109.107.177.79 interface=WG type=external +add interface=lo type=internal +add interface=wlan2 type=internal +add interface=wlan1 type=internal +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +add action=accept chain=forward comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/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/20260615/20260615204002-Diff-Config.rsc b/MikroMaster/history/20260615/20260615204002-Diff-Config.rsc new file mode 100644 index 0000000..4428619 --- /dev/null +++ b/MikroMaster/history/20260615/20260615204002-Diff-Config.rsc @@ -0,0 +1,19 @@ +7,9c7,8 +< add admin-mac=48:8F:5A:8E:1A:BF auto-mac=no dhcpv6-agent-circuit-id=\ +< "\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id="\$(BRIDGEMAC)" name=\ +< Bridge-LAN port-cost-mode=short +--- +> add dhcpv6-agent-circuit-id="\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id=\ +> "\$(BRIDGEMAC)" name=Bridge-LAN port-cost-mode=short +2573c2572 +< add bridge=Bridge-LAN interface=ether4 trusted=yes +--- +> add bridge=Bridge-LAN interface=ether4 +2585c2584 +< set discover-interface-list=LAN lldp-med=no lldp-poe-power=no +--- +> set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +3516c3515 +< add forced-ip=109.107.177.79 interface=WG type=external +--- +> add forced-ip=146.120.64.211 interface=WG type=external -- 2.52.0