From cf485be721d9790fcaa969a82de212fe079cdf4e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 12:40:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 12:40:17. --- .../20260510/20260510124001-Binary.backup | Bin 0 -> 302363 bytes .../20260510/20260510124001-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510124001-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260510/20260510124001-Binary.backup create mode 100644 MikroMaster/20260510/20260510124001-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510124001-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510124001-Binary.backup b/MikroMaster/20260510/20260510124001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4ba0546ed35b570a486dfed2377ba00d01ddbd89 GIT binary patch literal 302363 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

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