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