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