From 2cd084891b333021f2ce4e68451c0207e55b5fc1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 00:20:36 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 00:20:36. --- .../20260509/20260509002002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509002002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509002002-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260509/20260509002002-Binary.backup create mode 100644 MikroMaster/20260509/20260509002002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509002002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509002002-Binary.backup b/MikroMaster/20260509/20260509002002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..78ebe0d99ad1d162236b3cb3e3e4045b31543dfe GIT binary patch literal 298264 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 oSjuybkw}z%d(n*vu_kMm1>OkvN(Y)jn\"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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.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.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" 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/20260509002002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509002002-Diff-Config.rsc new file mode 100644 index 0000000..e6de466 --- /dev/null +++ b/MikroMaster/history/20260509/20260509002002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4305c4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0