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