From 355fc33a92fdebea20c5c218102be25d0436cf26 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 10:20:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 10:20:19. --- .../20260512/20260512102002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512102002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512102002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260512/20260512102002-Binary.backup create mode 100644 MikroMaster/20260512/20260512102002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512102002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512102002-Binary.backup b/MikroMaster/20260512/20260512102002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d74cd594bcc856c67e925346e38d452c78a55454 GIT binary patch literal 302647 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

Hj(%Ydr;}*i;J?%GLPV_V& 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

4r_}q(GGJz^D6~EtB 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

j=%^8n>T`NH(O#6!HhO~|I$!(jT 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�B6LP0FxAUFZmd=0T7{oZK5zvk^1D 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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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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!!!! 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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=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" disabled=yes 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=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input 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-routing chain=prerouting comment=FuckRKN disabled=yes \ + 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 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +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 passthrough=no \ + 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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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" disabled=yes \ + 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 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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260512/20260512102002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512102002-Diff-Config.rsc new file mode 100644 index 0000000..ff0a331 --- /dev/null +++ b/MikroMaster/history/20260512/20260512102002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4301d4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0