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