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