From b22f9b555379c239ca8fbb777dc55ba29f73fb15 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 15 Jun 2026 20:20:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 15 20:20:51. --- .../20260615/20260615202002-Binary.backup | Bin 0 -> 273529 bytes .../20260615/20260615202002-Config.rsc | 3672 +++++++++++++++++ .../20260615/20260615202002-Diff-Config.rsc | 14 + 3 files changed, 3686 insertions(+) create mode 100644 MikroMaster/20260615/20260615202002-Binary.backup create mode 100644 MikroMaster/20260615/20260615202002-Config.rsc create mode 100644 MikroMaster/history/20260615/20260615202002-Diff-Config.rsc diff --git a/MikroMaster/20260615/20260615202002-Binary.backup b/MikroMaster/20260615/20260615202002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..277a027c120dddafeb0e40b0ecd7681cdb9b0f3f GIT binary patch literal 273529 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

$saeQ)}hm7 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®jU%E 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

ecXS!N`aj2E8OG-jp5`-I`#GA8t z3Z|zh*oKU-lzs+11jLj;fg7Agtgj4%+eR@59D9y`zrjoyi|U`Q8L)RTP8S0lZB;F- zl!j}?ja|Q&vw93i7bKNSAO@B}5LfMV9YBz!0LoIBsjiFqIY{W~ka-JZyazQ66!REG zbmC*K2;3y%@X}oZ%xx(e6=rOw|Ar%$PkiN96j9<4<9=0_{9<9b_A~MJ+lvxTGIT~W zSBMAXpkCmHq3$Kb@GpkfWZiZ~VWd?LFv5HJp zOX>O5AQheKimHYEwAV4`-^&Gt#gUft@AL~r((Z)&c956elB^>Jmd9!DzEgzC%Gory zYy@U6H;=4YA8;Uup#AaF5rLxgzNhY85br-}C3YISb!X%df`0RsZmWG0h`VNl9IZ`X zPQ%T)Os{6s53_3Lfn_mj<_kk|j^GHoLCU!S_pdf9U3A_cZ5LKG4Dm`z!n$hB3Pv}N9 z@}1O}P&lYYp*CAA&P}A`nis|pfeGY0AhYA!C)(9z!%iQT21x>4H`ol)QnMiZrvbRi zFrFFCq}9Pb_*?L{6Dz^DENzkJ{`;VV*18P6yLgD#HFUMI+s$Hb0=UZMN`hZ#RsFvS zaQ8H2-?0u#R7@;&KZN1gF5zf+ZM#NO*UoBqAa zK>|*6HIhPsX4qI2{Qu2{CV*0BZN3gW-c7g*3`B5_t$TvP3O#XPMSRI)I_wno-v83j z5>szlG!)+*0nnldLXJoLnqTjEdk)BFGgf5j&07NvS^GBh0VPoH@fc=aDbOWMffND;ccqx!NNWfp+7@r48@OZy&YKo7 zi920Z7aOzc;9dU8O8A#163=5}{JlovBj_n!i3^wQML{jvwgVu>HScYGw<`s;2=&#h z>o2HXjPIMD&Fu2}T%*0AADE|`SX?kR)y&)Z8#EB7qT_}9Iuaj#Yaf*?Uh9@ %L6 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℘S@~!5zqf@2L{`=w@6g z7&gKy@@bX{1{&m|7JS+{-cb!-IY@!i=md+ea6#u*eiEyr@w+gTUHOgPpNoW(W9l%R z7&uC%Ac)i*XsLFllf^8;leaiP!2csH-P2RSeFqw_Iro!)q}6pbUYIDlh0%x(w_CKJ z`x>8>RRh)@ziDP*4FL+MU)djEhr|fERso8l>R*CDv*wmwibq7symEkuno2A7L7&W( zMPv>glsYGxWX^Tz00}EtH`f$893~7`lX7cH7VnH7Rm)M=0}llf0qm zdS+qrAQctA=7;e7{pLxcWVmRZX(AAt_>Iwg{aca$$gc911t1KrL$a2;RX4XM5zfla z9tj}lzSYUwPJcX&!jnNv9Y2N%&pjH4MB^q+1o%lpt412wea(B*LDAaIT7Wnx1%Y)b zK_j12$N*!5sJ(q9;a)u4{cHNk_gje5zwUb;!7|wns}}iCuQhkF5D246w$81RJN`4c4nk)-ARfR(?r14lye^^i#+O^Eb~#F%9u=BiLyLH-2Fe$YI|4^ z?hO2mQw-7ix{b70T@j+kUTY|^QBQybztpo~nyF*a*GF$O}pFbc%Z{`|^7eHCMh zEyW9Ea^Y}+{$xgZMzEY#jqXK7&=xNi!W+Gzjlz8PYmqfclo)#3k;fZUa>WknMN_uu zQ;FTzKgR4-n)FZivPJ3w-t|}O#FL=^L%(PX&Sjt1);Z84_0nm`7ZUO_7BA(DpBj*W zV?OdvxV4j5(aBsuf1Fx=*)$}30;)apFaewVd4a;N;QwT@Yp~E#$(+V@SaOR(m{NUX z19-clUn-{2PPSCpvLcFvVU8N8bITUTqT57IG9#hq@mIF&9*L?8!$p{Zr!mWlN5%D# zw-&L5Ml>Pu&-r6=!7`W}&hw99RnmrFyPsDf$#_;j%rPGiGMuneiyTlQ5Utcu*8v zqQv18#F77S>zNdE5SA>j8>v^rp_IlbJjzSTbUT6)V1)8e!;WV#(N^`E(jCu48x?bW zL7s{cp?|6wZb?#km{|&2bsB~Q>FW!zYzQ57WR1tF+;Yl@O2kb|v|9yzi;Pa$m}1Di zU*SW)rr24dMa~*%@q)!F-6odj0RkSM2N2-If$n>^m+9bv8dCN!ZoCOx@{s$b2HuGb zSgmnkM@!HPSG?(^mPe$Uw;=Zy!zg!lR7&^(n1~SF-qZq}JIushL&!Mhz%3gebyPwN z)U>HIjp3_KSn+n7`f^@E-wEFg|7<\"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 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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=146.120.64.211 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/20260615202002-Diff-Config.rsc b/MikroMaster/history/20260615/20260615202002-Diff-Config.rsc new file mode 100644 index 0000000..59d91aa --- /dev/null +++ b/MikroMaster/history/20260615/20260615202002-Diff-Config.rsc @@ -0,0 +1,14 @@ +55d54 +< add name=iVados options=HostName +2670c2669,2670 +< dhcp-option-set=iVados mac-address=DE:4D:72:F3:1A:9F server=masterDHCP +--- +> dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ +> masterDHCP +3515c3515 +< add forced-ip=146.120.64.211 interface=WG type=external +--- +> add forced-ip=89.110.101.17 interface=WG type=external +3517,3518d3516 +< add interface=wlan2 type=internal +< add interface=wlan1 type=internal -- 2.52.0