From 648791cff268120b9f1a500abdf7f58ed9487498 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 03:41:13 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 03:41:13. --- .../20260505/20260505034001-Binary.backup | Bin 0 -> 269577 bytes .../20260505/20260505034001-Config.rsc | 4501 +++++++++++++++++ .../20260505/20260505034001-Diff-Config.rsc | 12 + 3 files changed, 4513 insertions(+) create mode 100644 MikroMaster/20260505/20260505034001-Binary.backup create mode 100644 MikroMaster/20260505/20260505034001-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505034001-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505034001-Binary.backup b/MikroMaster/20260505/20260505034001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..45ae6da84c03d3ac5ddade2d40f427665cfd4255 GIT binary patch literal 269577 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

6a^_ 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�pHnGQ-FNQYGo}qX*KbJ@dNasuy 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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: 5260/20-Ceee/ac/DP(18dBm), 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: 5260/20-Ceee/ac/DP(18dBm), 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.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 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/20260505034001-Diff-Config.rsc b/MikroMaster/history/20260505/20260505034001-Diff-Config.rsc new file mode 100644 index 0000000..7ae8e18 --- /dev/null +++ b/MikroMaster/history/20260505/20260505034001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4167d4166 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4169c4168 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4170a4170 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4174d4173 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4175a4175 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0