From 3698d64fb46ec766bffecaa98a5d05bf0f6c71b7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 23:21:36 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 23:21:36. --- .../20260509/20260509232002-Binary.backup | Bin 0 -> 300002 bytes .../20260509/20260509232002-Config.rsc | 4643 +++++++++++++++++ .../20260509/20260509232002-Diff-Config.rsc | 12 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260509/20260509232002-Binary.backup create mode 100644 MikroMaster/20260509/20260509232002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509232002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509232002-Binary.backup b/MikroMaster/20260509/20260509232002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..95faa01dc015880242f4892d7d71b4671a69b95c GIT binary patch literal 300002 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%0Avk^ibzLgm`=ZKONxKvw|_kJ>;bDj*2D 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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,::/0 client-allowed-address=0.0.0.0/0,::/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" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output dst-address-list=VPN-Server dst-port=29185 \ + out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" disabled=yes new-mss=\ + 1380 out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" 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" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509232002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509232002-Diff-Config.rsc new file mode 100644 index 0000000..12c487c --- /dev/null +++ b/MikroMaster/history/20260509/20260509232002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4297d4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0