From 7fa750f3274c63b27f518cc8baab8ec472d50a6e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 14:20:43 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 14:20:43. --- .../20260509/20260509142002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509142002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509142002-Diff-Config.rsc | 8 + 3 files changed, 4647 insertions(+) create mode 100644 MikroMaster/20260509/20260509142002-Binary.backup create mode 100644 MikroMaster/20260509/20260509142002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509142002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509142002-Binary.backup b/MikroMaster/20260509/20260509142002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f7f1742866b1d5aa7096aae8a040b3d39237b824 GIT binary patch literal 298264 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 jk#TRXcSXztta}YOiN#=mRBv^Z){9U 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%0AQkRhX%T5M`nUUs$mI^p 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

*4+xrD^Ar3(ghQneiZ^WEyh{Mi*O?duog@ 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�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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 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=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=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/20260509142002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509142002-Diff-Config.rsc new file mode 100644 index 0000000..b5a6496 --- /dev/null +++ b/MikroMaster/history/20260509/20260509142002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4296a4296 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0