From 91eee6e7ef3a60c1420f5e9e343cbccd71f1ee5b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 17:00:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 17:00:40. --- .../20260508/20260508170002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508170002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508170002-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508170002-Binary.backup create mode 100644 MikroMaster/20260508/20260508170002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508170002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508170002-Binary.backup b/MikroMaster/20260508/20260508170002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..29faf838109044886ecd23ea47bfe184531d8a94 GIT binary patch literal 298264 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 z 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 %n+Y-h#BT&jwYyBx7pgzf+BFk( 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

k5kwo^*ttVKk8-(gcRN}A4II- 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

A#r>s^aE(XU3_OTvloZcILz^i4 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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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=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" disabled=yes \ + 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" \ + disabled=yes 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/20260508/20260508170002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508170002-Diff-Config.rsc new file mode 100644 index 0000000..aa3620c --- /dev/null +++ b/MikroMaster/history/20260508/20260508170002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org 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