From da610dc7ec87edaa9a03e547edca4cba52f76de2 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 19:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 19:20:18. --- .../20260511/20260511192002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511192002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511192002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511192002-Binary.backup create mode 100644 MikroMaster/20260511/20260511192002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511192002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511192002-Binary.backup b/MikroMaster/20260511/20260511192002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8b0cb49f1268c9d4b8d33455c34bcf1ff9d072e2 GIT binary patch literal 302647 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
+DZl!L<3YI}xG1zzk>F3G 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 G~^lsCx!ugIOfLG4@j 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⪚ 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

Xsq|lZ4@&;l?qhcp)q=WdyYej{@)Qd(=-p5u8i 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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 Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\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 UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \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\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 (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\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 };\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\"; \"mod/AM-\ + Certs-By-Ident\" } 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 (a);\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 (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35: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: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={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\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\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 warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :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" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/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 +# same mac-address as ether1 - Unet +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 +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 +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=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.4.4,8.8.8.8 +/ip dns static +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.33 comment=AMSTER name=amster.vados.ru type=A +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 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=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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net 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 +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=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 disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 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=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.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-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +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-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +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-list=WAN 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-list=WAN protocol=udp \ + src-address-list=!TRUSTED +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-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +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=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram 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-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-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-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=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/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="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +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=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +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 +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=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 +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260511/20260511192002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511192002-Diff-Config.rsc new file mode 100644 index 0000000..be676dd --- /dev/null +++ b/MikroMaster/history/20260511/20260511192002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0