From 3be55bc01a24d9e26a8d6aaae1738aa5c6e74d73 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 04:20:31 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 04:20:31. --- .../20260505/20260505042001-Binary.backup | Bin 0 -> 270275 bytes .../20260505/20260505042001-Config.rsc | 4501 +++++++++++++++++ .../20260505/20260505042001-Diff-Config.rsc | 16 + 3 files changed, 4517 insertions(+) create mode 100644 MikroMaster/20260505/20260505042001-Binary.backup create mode 100644 MikroMaster/20260505/20260505042001-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505042001-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505042001-Binary.backup b/MikroMaster/20260505/20260505042001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f7376e8252eba8bcf4e523149af9ad8c046e62ef GIT binary patch literal 270275 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

nay#Z4|W2EGMi{%&aljGn8cBuE7?Y!y{oo;yDks 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

!pP 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \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#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \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\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n } else={\r\ + \n :if (!(((\$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=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\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 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\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 \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/614/a7992fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 01:00:03 05.05.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 WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\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# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n#:set FetchLargeFiles do={\r\ + \n# :local RunName [:tostr \$1];\r\ + \n# :local fetchUrl [:tostr \$2];\r\ + \n# :local fetchFile [:tostr \$3];\r\ + \n# :local CheckCert [:tostr \$4];\r\ + \n# :local fetchMode [:tostr \$5];\r\ + \n# :local fetchMethod [:tostr \$6];\r\ + \n# :local tmpName;\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-\ + without-crl\" ];\r\ + \n#\r\ + \n# :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n# :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n# :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n# :log error (\$RunName . \" Failed creating directory: \" . \$DirNam\ + e . \"!\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"\ + -\" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n# :local Url (\$fetchUrl . \$fetchFile);\r\ + \n# :onerror Err {\r\ + \n# /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName\ + \_\\\r\ + \n# http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-valu\ + e;\r\ + \n# } do={\r\ + \n# :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n# \$RmFile \$FileName;\r\ + \n# }\r\ + \n# :log error (\$RunName . \" 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# :log error (\$RunName . \" 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=3\ + 2768 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## \$RmFile \$FileName;\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return \$Return;\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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\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="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n :local ReadFile (\"tmpfs/\" .\$tmpIndex);\r\ + \n :local filebody [/file/get \$ReadFile contents];\r\ + \n:foreach fwList in=[:deserialize \$ReadFile delimiter=\"\\n\" from=dsv o\ + ptions=dsv.plain] do={\r\ + \n :log error \$fwList;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" . \ + \$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$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 \"kasparov.ru\"\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 \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\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 :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - 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=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\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 :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 /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\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:20: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 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \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" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man manager +set enabled=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/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=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=ether2 enabled=yes 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/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/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 dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru 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.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google 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" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" 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" name=dns.quad9.net \ + type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.20 name=garage type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws 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=10.30.30.100-255 list=KIDS +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 +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +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 +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +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=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +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 list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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!!!" disabled=yes list=\ + NoVdsina +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +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="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=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 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" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + 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 in-interface="ether1 - Unet" +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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat 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="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=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/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 hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/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=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set graphs-plain=no rest-plain=no webfig-plain=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 interface="ether1 - Unet" type=external +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no 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 scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +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" 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 comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" 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="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260505/20260505042001-Diff-Config.rsc b/MikroMaster/history/20260505/20260505042001-Diff-Config.rsc new file mode 100644 index 0000000..770a047 --- /dev/null +++ b/MikroMaster/history/20260505/20260505042001-Diff-Config.rsc @@ -0,0 +1,16 @@ +3355c3355 +< # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +--- +> # channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +3369c3369 +< # channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +--- +> # channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +4169d4168 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4170a4170 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4177d4176 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4178a4178 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0