From c2d2376472c3f19234596f0f4f1e9a627d9e3d9c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 17:40:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 17:40:39. --- .../20260509/20260509174002-Binary.backup | Bin 0 -> 299956 bytes .../20260509/20260509174002-Config.rsc | 4641 +++++++++++++++++ .../20260509/20260509174002-Diff-Config.rsc | 28 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260509/20260509174002-Binary.backup create mode 100644 MikroMaster/20260509/20260509174002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509174002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509174002-Binary.backup b/MikroMaster/20260509/20260509174002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f531a08489a4b85100216813624aead3fa345ca4 GIT binary patch literal 299956 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 u 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

^vhss$P=!!X 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 uJnIrH#j<0O8$*oMgl-)lzNFphr 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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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=udp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new routing-mark=!To-VPN +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +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=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=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=FuckRKN dst-address=\ + !10.30.30.0/24 dst-address-list=FuckRKN new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 log-prefix=VPN-all new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509174002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509174002-Diff-Config.rsc new file mode 100644 index 0000000..d8fb5df --- /dev/null +++ b/MikroMaster/history/20260509/20260509174002-Diff-Config.rsc @@ -0,0 +1,28 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4339,4342c4339,4340 +< add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ +< protocol=udp src-address-list=VPN-Server +< add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ +< connection-state=established,related,new routing-mark=!To-VPN +--- +> add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ +> "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +4345c4343 +< connection-state=established,related,new +--- +> connection-state=established,related,new disabled=yes +4348a4347,4349 +> add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ +> connection-state=established,related,new disabled=yes routing-mark=\ +> !To-VPN -- 2.52.0