From 224b6959b8da43606faa4904d6037654a6146bb8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 12:40:23 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 12:40:23. --- .../20260505/20260505124002-Binary.backup | Bin 0 -> 270787 bytes .../20260505/20260505124002-Config.rsc | 4506 +++++++++++++++++ .../20260505/20260505124002-Diff-Config.rsc | 16 + 3 files changed, 4522 insertions(+) create mode 100644 MikroMaster/20260505/20260505124002-Binary.backup create mode 100644 MikroMaster/20260505/20260505124002-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505124002-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505124002-Binary.backup b/MikroMaster/20260505/20260505124002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7717c8236d7d86b9b4d9e3be37d67906915f7727 GIT binary patch literal 270787 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

*Yf;NVM?@G0Mbeb2EUfW_c3I`Srd?@^hU= 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

6IZ#1M<$I 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%0Dv1e7e{+ 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 z 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"FWT+)!AL+my6n7{Bn>K#x0atxN31i^a0mLuy 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 z\"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 provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add 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 note +set show-at-login=no +/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 routerboard settings +# Warning: cpu not running at default frequency +set cpu-frequency=700MHz +/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/20260505124002-Diff-Config.rsc b/MikroMaster/history/20260505/20260505124002-Diff-Config.rsc new file mode 100644 index 0000000..bac05f3 --- /dev/null +++ b/MikroMaster/history/20260505/20260505124002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4165d4164 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4167c4166 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4169c4168 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4170a4170 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4172d4171 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4173a4173 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0