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