From 8428d69986b05abea662f710a2fc635d4b4a0de1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 05:00:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 05:00:39. --- .../20260509/20260509050002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509050002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509050002-Diff-Config.rsc | 20 + 3 files changed, 4659 insertions(+) create mode 100644 MikroMaster/20260509/20260509050002-Binary.backup create mode 100644 MikroMaster/20260509/20260509050002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509050002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509050002-Binary.backup b/MikroMaster/20260509/20260509050002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0cbea39b827bd6a7c9ad8bca6790fb24da3d04b6 GIT binary patch literal 298264 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%0Ag&JrR~)8QP?q9<5Sjhwc;7d;;G;xO%i5T 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 z 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ℜ6l_o2hrK7MfcPPo$WKxeg!0&{LgiK< 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

V@$n9==wFI%6BQ4BEXH^ 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 oN%{{\"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 +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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 +/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" 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!!!! disabled=yes 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=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 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=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" 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-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-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=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 src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 check-gateway=ping 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 +/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 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/20260509/20260509050002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509050002-Diff-Config.rsc new file mode 100644 index 0000000..1052fec --- /dev/null +++ b/MikroMaster/history/20260509/20260509050002-Diff-Config.rsc @@ -0,0 +1,20 @@ +4291d4290 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4293c4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4295c4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0