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