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