From 4d28c9b064a1c5745b013253011288c7135900bf Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 5 May 2026 07:20:23 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 05 07:20:23. --- .../20260505/20260505072001-Binary.backup | Bin 0 -> 270775 bytes .../20260505/20260505072001-Config.rsc | 4506 +++++++++++++++++ .../20260505/20260505072001-Diff-Config.rsc | 12 + 3 files changed, 4518 insertions(+) create mode 100644 MikroMaster/20260505/20260505072001-Binary.backup create mode 100644 MikroMaster/20260505/20260505072001-Config.rsc create mode 100644 MikroMaster/history/20260505/20260505072001-Diff-Config.rsc diff --git a/MikroMaster/20260505/20260505072001-Binary.backup b/MikroMaster/20260505/20260505072001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..218a39c90b1ae07692bb8724a367bf795d29f147 GIT binary patch literal 270775 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 FmrGgUZSdeQSGlc8THj-U<^9T4=!@?iZuc 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

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