From cb5712681b83bd1bc1c517c79171392618864d69 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 15:20:47 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 15:20:47. --- .../20260508/20260508152002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508152002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508152002-Diff-Config.rsc | 8 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260508/20260508152002-Binary.backup create mode 100644 MikroMaster/20260508/20260508152002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508152002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508152002-Binary.backup b/MikroMaster/20260508/20260508152002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0226d0acf60a49e41a9716e88333b3e79740be36 GIT binary patch literal 298264 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∨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 obG7`N4B_14&;t!x1jG`}@EOTVl_Ca\"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" 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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +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" \ + disabled=yes 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 +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/20260508/20260508152002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508152002-Diff-Config.rsc new file mode 100644 index 0000000..a7110a3 --- /dev/null +++ b/MikroMaster/history/20260508/20260508152002-Diff-Config.rsc @@ -0,0 +1,8 @@ +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4296a4296 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4305d4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0