From 9431bfb5f3bf650532356f4c17345bcca46445c5 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 20:40:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 20:40:51. --- .../20260508/20260508204002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508204002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508204002-Diff-Config.rsc | 14 + 3 files changed, 4654 insertions(+) create mode 100644 MikroMaster/20260508/20260508204002-Binary.backup create mode 100644 MikroMaster/20260508/20260508204002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508204002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508204002-Binary.backup b/MikroMaster/20260508/20260508204002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..96a5e7eea8ae92cf3cad639c66bfd49fa939fb28 GIT binary patch literal 298264 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

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