From 7bb02c3e037a6d2a821778102ed8b6151fe00704 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 19:20:37 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 19:20:37. --- .../20260507/20260507192002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507192002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507192002-Diff-Config.rsc | 4 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260507/20260507192002-Binary.backup create mode 100644 MikroMaster/20260507/20260507192002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507192002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507192002-Binary.backup b/MikroMaster/20260507/20260507192002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8a2ca3c4be901c52dc26a0df52cd537e650849cc GIT binary patch literal 297773 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=vados 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 \"dns.google\"\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" 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!!!! disabled=yes 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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=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=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram 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=Twitter dst-address-list=\ + Twitter 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=YouTube dst-address-list=\ + YouTube 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=facebook dst-address-list=\ + facebook 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="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=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 +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" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" 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 +add blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260507/20260507192002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507192002-Diff-Config.rsc new file mode 100644 index 0000000..886be57 --- /dev/null +++ b/MikroMaster/history/20260507/20260507192002-Diff-Config.rsc @@ -0,0 +1,4 @@ +4298d4297 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4299a4299 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN -- 2.52.0