From 44824514f2d42fc7769e9f615ac26c4040038571 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 22:00:45 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 22:00:45. --- .../20260509/20260509220002-Binary.backup | Bin 0 -> 300002 bytes .../20260509/20260509220002-Config.rsc | 4643 +++++++++++++++++ .../20260509/20260509220002-Diff-Config.rsc | 16 + 3 files changed, 4659 insertions(+) create mode 100644 MikroMaster/20260509/20260509220002-Binary.backup create mode 100644 MikroMaster/20260509/20260509220002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509220002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509220002-Binary.backup b/MikroMaster/20260509/20260509220002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f53d8f464564a04d9d598e3eae87924ff07cf135 GIT binary patch literal 300002 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ℑ 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

Xh4a4tf(LYRh#_iL1jSPYZ$!XAFoRHNX>{UkUk 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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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=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/20260509220002-Diff-Config.rsc b/MikroMaster/history/20260509/20260509220002-Diff-Config.rsc new file mode 100644 index 0000000..574f549 --- /dev/null +++ b/MikroMaster/history/20260509/20260509220002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv 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 +4303d4302 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4305c4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0