From 0c4720145a1d5cdf3b365ddf960ecbe96b5fa1e1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 21:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 21:00:19. --- .../20260510/20260510210002-Binary.backup | Bin 0 -> 302647 bytes .../20260510/20260510210002-Config.rsc | 4653 +++++++++++++++++ .../20260510/20260510210002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260510/20260510210002-Binary.backup create mode 100644 MikroMaster/20260510/20260510210002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510210002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510210002-Binary.backup b/MikroMaster/20260510/20260510210002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..e5ddefdacd5c4bcc15ad76ff20a3cbfb7e82d255 GIT binary patch literal 302647 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

mgGLhZLs6z7v5B4JcxB#{Y)@2oqKyd7x8Qni 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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.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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/20260510/20260510210002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510210002-Diff-Config.rsc new file mode 100644 index 0000000..ff0ad50 --- /dev/null +++ b/MikroMaster/history/20260510/20260510210002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4303c4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4310a4310 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0