From bc3c531fb5362deb7ea6b6049d15265f525de96c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 19:40:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 19:40:47. --- .../20260507/20260507194001-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507194001-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507194001-Diff-Config.rsc | 12 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260507/20260507194001-Binary.backup create mode 100644 MikroMaster/20260507/20260507194001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507194001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507194001-Binary.backup b/MikroMaster/20260507/20260507194001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..23f35f741272cac759e92d119250a86c83a3a692 GIT binary patch literal 297773 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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=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260507/20260507194001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507194001-Diff-Config.rsc new file mode 100644 index 0000000..6e5d199 --- /dev/null +++ b/MikroMaster/history/20260507/20260507194001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4298d4297 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4300c4299 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4301a4301 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4308d4307 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4309a4309 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0