From be98cffe751db14228024e8775607f82eb8306e4 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 09:20:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 09:20:47. --- .../20260509/20260509092002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509092002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509092002-Diff-Config.rsc | 16 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260509/20260509092002-Binary.backup create mode 100644 MikroMaster/20260509/20260509092002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509092002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509092002-Binary.backup b/MikroMaster/20260509/20260509092002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..b3d6af1c1820051a97133010e08ab2dd1297cf03 GIT binary patch literal 298264 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

qah;V; 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

Y<7c1Kp+sd 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%0A^w6|&~G+w4DTkE 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 xwUW7No+XX)IRRrMd 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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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509092002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509092002-Diff-Config.rsc new file mode 100644 index 0000000..9071f9d --- /dev/null +++ b/MikroMaster/history/20260509/20260509092002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv 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 +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua 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