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