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

qhV-e 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260509134001-Diff-Config.rsc b/MikroMaster/history/20260509/20260509134001-Diff-Config.rsc new file mode 100644 index 0000000..26df6d3 --- /dev/null +++ b/MikroMaster/history/20260509/20260509134001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4293d4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0