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