From f32d717760714a11a2e7842ef7f693bf19d9ba80 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 05:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 05:00:18. --- .../20260510/20260510050002-Binary.backup | Bin 0 -> 302173 bytes .../20260510/20260510050002-Config.rsc | 4647 +++++++++++++++++ .../20260510/20260510050002-Diff-Config.rsc | 8 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260510/20260510050002-Binary.backup create mode 100644 MikroMaster/20260510/20260510050002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510050002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510050002-Binary.backup b/MikroMaster/20260510/20260510050002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..383b5f9a99599963aabc6b0c00dc3125cc475637 GIT binary patch literal 302173 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�NBI#+p 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

i}JokR;r5pD}`+Cg8g(H;f! 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 xKSZXMkA6%zY359KEU8\"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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=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 +/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.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.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=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new 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 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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260510/20260510050002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510050002-Diff-Config.rsc new file mode 100644 index 0000000..dcd888d --- /dev/null +++ b/MikroMaster/history/20260510/20260510050002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4295d4294 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4299d4298 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300a4300 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN -- 2.52.0