From e38571ba3534c796cf55d5b3486d44caa1cce8b8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 12:00:23 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 12:00:23. --- .../20260505/20260505120001-Binary.backup | Bin 0 -> 270787 bytes .../20260505/20260505120001-Config.rsc | 4506 +++++++++++++++++ .../20260505/20260505120001-Diff-Config.rsc | 4 + 3 files changed, 4510 insertions(+) create mode 100644 MikroMaster/20260505/20260505120001-Binary.backup create mode 100644 MikroMaster/20260505/20260505120001-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505120001-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505120001-Binary.backup b/MikroMaster/20260505/20260505120001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..c410fe3188ff52376407f5c1fff7b5170fe20129 GIT binary patch literal 270787 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 UB0 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n } else={\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [ /system identity get name ];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix \"\";\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\r\ + \n \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/614/a7992fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 01:00:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n#:set FetchLargeFiles do={\r\ + \n# :local RunName [:tostr \$1];\r\ + \n# :local fetchUrl [:tostr \$2];\r\ + \n# :local fetchFile [:tostr \$3];\r\ + \n# :local CheckCert [:tostr \$4];\r\ + \n# :local fetchMode [:tostr \$5];\r\ + \n# :local fetchMethod [:tostr \$6];\r\ + \n# :local tmpName;\r\ + \n# :global CleanName;\r\ + \n# :global FetchUserAgentStr;\r\ + \n# :global GetRandom20CharAlNum;\r\ + \n# :global IfThenElse;\r\ + \n# :global LogPrint;\r\ + \n# :global MkDir;\r\ + \n# :global RmDir;\r\ + \n# :global RmFile;\r\ + \n# :global WaitForFile;\r\ + \n#\r\ + \n# :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-\ + without-crl\" ];\r\ + \n#\r\ + \n# :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n# :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n# :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n# :log error (\$RunName . \" Failed creating directory: \" . \$DirNam\ + e . \"!\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"\ + -\" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n# :local Url (\$fetchUrl . \$fetchFile);\r\ + \n# :onerror Err {\r\ + \n# /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName\ + \_\\\r\ + \n# http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-valu\ + e;\r\ + \n# } do={\r\ + \n# :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n# \$RmFile \$FileName;\r\ + \n# }\r\ + \n# :log error (\$RunName . \" Failed downloading from '\" . \$Url . \"\ + ' - \" . \$Err);\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n# :log error (\$RunName . \" The file downloaded from '\" . \$Url . \ + \"' did not show up.\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n# \r\ + \n# :local FileSize [ /file/get \$FileName size ];\r\ + \n# :local Return \"\";\r\ + \n# :local VarSize 0;\r\ + \n# :while (\$VarSize != \$FileSize) do={\r\ + \n# :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=3\ + 2768 file=\$FileName as-value ]->\"data\"));\r\ + \n# :set FileSize [ /file/get \$FileName size ];\r\ + \n# :set VarSize [ :len \$Return ];\r\ + \n# :if (\$VarSize > \$FileSize) do={\r\ + \n# :delay 100ms;\r\ + \n# }\r\ + \n# }\r\ + \n## \$RmFile \$FileName;\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return \$Return;\r\ + \n#}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n :local ReadFile (\"tmpfs/\" .\$tmpIndex);\r\ + \n :local filebody [/file/get \$ReadFile contents];\r\ + \n:foreach fwList in=[:deserialize \$ReadFile delimiter=\"\\n\" from=dsv o\ + ptions=dsv.plain] do={\r\ + \n :log error \$fwList;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" . \ + \$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(18dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,dns,www,api,reverse-proxy" crl-store=system +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name=client1 \ + use-peer-dns=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface="ether1 - Unet" protocol=tcp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface="ether1 - Unet" protocol=tcp src-address-list=\ + !TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 dst-address-list=Instagram new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address=\ + !10.30.30.0/24 dst-address-list=Twitter new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address=\ + !10.30.30.0/24 dst-address-list=YouTube new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address=\ + !10.30.30.0/24 dst-address-list=facebook new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com log=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set 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/20260505120001-Diff-Config.rsc b/MikroMaster/history/20260505/20260505120001-Diff-Config.rsc new file mode 100644 index 0000000..0d92e35 --- /dev/null +++ b/MikroMaster/history/20260505/20260505120001-Diff-Config.rsc @@ -0,0 +1,4 @@ +4165d4164 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4166a4166 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN -- 2.52.0