From db3cccfbf2642bb676b5b8663b92b2d7bd265332 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 2 Jun 2026 19:40:15 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 02 19:40:15. --- .../20260602/20260602194001-Binary.backup | Bin 0 -> 260575 bytes .../20260602/20260602194001-Config.rsc | 3462 +++++++++++++++++ .../20260602/20260602194001-Diff-Config.rsc | 37 + 3 files changed, 3499 insertions(+) create mode 100644 MikroMaster/20260602/20260602194001-Binary.backup create mode 100644 MikroMaster/20260602/20260602194001-Config.rsc create mode 100644 MikroMaster/history/20260602/20260602194001-Diff-Config.rsc diff --git a/MikroMaster/20260602/20260602194001-Binary.backup b/MikroMaster/20260602/20260602194001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..5cfde78dffc23b473f8d3bde2d0caed1230daf45 GIT binary patch literal 260575 zcmV(cK>fe(sF8Eu`2zrBftZvSI4yz@ey-Y0MZdfN000O80004Z`SAPzLr<6$Y5E)2 z%Wf=bbWwpAga!3Y1ey?@)R~hA>JRU&COi-MSBgh;CrLtfODJGO0UF@VK%IbOM8nO& zk3)cP_>{o&GxId$l@uQN_AM84>FK@}8wFuw9NN3TIR^D+q$A8pzglZ~= zI{=rbT8`n{;L`uMiHecsSAVb&W&qM1A&dLQ?~)Iz#2pUDWlap7249i+t+~A4u>in^ zW%FBD-zD87va0ZKD;KN*`XQ{*%531}aID01gr2u~>uB{$Kt#L?;4)huc9nWCf&+Cc z+dW)e+nmLGbVx!Mj0bMbJxKycmxLy3Q4M_)p+jx_IEbRI*yYv->?h;aj7O)RDJ z?W?Gsc*W>2(B0^pnozYr*hsROt!Ex6cj?TpcdxX9N=4me&|va+80_!=D04ng%DDO` zzY1~_kUz>wv}<7-u+#3*?4U3gRgOR1G&UM;guDeqncV#-zcd#PSe%?uMlx>vduz14 zO_s1k^R_w~TX#2QaU*zMrb?qspQ~;ba_HgxI17fOTkd{*VczK{pyNLY(OCY;$md2L zo9IW$&(#pPKZ@mCwGfdbS~wzeKE!x3!k)NT@kkTU`zcimt`@z3Qxn@JH0hS4%<9mv zv=zE?-+YFDr=&BbU>?L*736QX{(^O{IbE`d;HzpaGNPTdOF`m~tST0Rbwca$n0A75 zH*2Xj1t38A`OI=TH6BJxK@J4CSg>=Kg|4tDrgv2Wq^H_DWetDZh8jS-0G}mva@=!s zqnLaDC&%$Y0-|sra{;{VB^Z;>3N|-JHdtlBD8NeeqY?E0q(gCmtk9)R95T3PbNjMS zG76e@QUhB4@Z^-nnP#COHm|LKE?8M+7VHEVIa4H+Q4|eVu2-PV*amn!{R+@a>ME(0 z^}c&@zq-V3p8|0bpzPN8TKN{#l$j3?288CZ#}K`K7+MSp7JI1Rr1@*?pBYc0MBTu) zbmqh#8fLFTftxA2Epq=?97nE(k8>HaHN+QoxbY)?>BgUjR?_6rj^T6UM}Y_`V4Yt*ue%&{W~x73YPPqi~Xe}xfkY* z#s8`X?gO;mKG%O=IC_D*iEOIv;O&QMBr|sYLJWpaCw!-&uWW&au+0^_tUvHyT(xJ? z2ra%jf}*d$@nQYw2={Mi`ly^W$Gc`?0_e;KtEf4!;X$E?5+N;_Lw!JH9e{NkF7Bz< zROKM&0eUapGbvqwzyq79YgWqx->pUaclMJ=xadQ7DgjIRY%DSuXJsmb#|lNUmMTvU zK6R_5VItOC7@iC0maw3YP16`_rIq;{|zN%aj)uU z^itX|&{v+3T@}||{`SP7gTXT3oY8hN`75QTkEA{mSwTH+wR(qh|KG|5(~@XZ^*qiKJk`z4-DzKqq;9D&t{0Z3|PNzSL_(Vdb_;Xk#fZD8ZD5erXwzh2&xtlDXYTa!?Yr7Bj|wih;zC#Cel* zmpF5sFRj*^>?9{%itFRwBaA^nM`?Ssimow_T1HTWZJL>BWSRgeE96^zKLH@TLOL

~q$fuhJ!hkd?MC=`wi`W$ZgdNDNNt?892HZmrI_ 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 z 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∨fKcuL}0OR%yn5yst-fD*uQ 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%0DLitKCs}SseNPK;O>$CJU6|$i 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260602/20260602194001-Config.rsc b/MikroMaster/20260602/20260602194001-Config.rsc new file mode 100644 index 0000000..e85ce88 --- /dev/null +++ b/MikroMaster/20260602/20260602194001-Config.rsc @@ -0,0 +1,3462 @@ +# 2026-06-02 19:40:02 by RouterOS 7.23 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus mode=ap-bridge ssid=vados \ + wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus mode=ap-bridge ssid=vados5g \ + wireless-protocol=802.11 +/interface wireguard +add disabled=yes listen-port=13231 mtu=1280 name=WG +/interface list +add name=LAN +add name=Internet +add exclude=LAN name=WAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \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\ + \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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 disabled=yes \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.1 +/ip cloud +set ddns-enabled=yes +/ip cloud advanced +set use-local-address=yes +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4 verify-doh-cert=yes +/ip dns static +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 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.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 name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage type=A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test-IP +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test-IP +add address=geoip.co list=NoVdsina +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=VDSina +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" list=NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=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=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ + out-interface-list=WAN protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new disabled=yes in-interface="ether1 - Unet" \ + src-address-list=!VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn \ + tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" routing-mark=!To-VPN src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + 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" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=To-VPN to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +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 disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-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 ip-version=ipv4 mode=http +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add 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, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" name="Cuad9-DOH IPv4" test-script="" type=\ + simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260602/20260602194001-Diff-Config.rsc b/MikroMaster/history/20260602/20260602194001-Diff-Config.rsc new file mode 100644 index 0000000..4171cc2 --- /dev/null +++ b/MikroMaster/history/20260602/20260602194001-Diff-Config.rsc @@ -0,0 +1,37 @@ +18,21c18,25 +< set [ find default-name=wlan1 ] country=belarus mode=ap-bridge ssid=vados \ +< wireless-protocol=802.11 +< set [ find default-name=wlan2 ] country=belarus mode=ap-bridge ssid=vados5g \ +< wireless-protocol=802.11 +--- +> # managed by CAPsMAN +> # channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +> set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ +> ssid=vados wireless-protocol=802.11 +> # managed by CAPsMAN +> # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +> set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ +> ssid=vados5g wireless-protocol=802.11 +2441a2446 +> # +2444,2445c2449,2450 +< CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN interfaces=wlan1,wlan2 \ +< lock-to-caps-man=yes +--- +> CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ +> wlan1,wlan2 lock-to-caps-man=yes +2513,2514c2518,2519 +< set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ +< doh-max-server-connections=20 servers=8.8.4.4 verify-doh-cert=yes +--- +> set cache-max-ttl=1d doh-max-concurrent-queries=100 \ +> doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +2516,2517c2521 +< add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ +< dns.google type=A +--- +> add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +3393c3397 +< set time-zone-name=Europe/Moscow +--- +> set time-zone-autodetect=no time-zone-name=Europe/Moscow -- 2.52.0