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