From 2181711f3f9f5b90d19d10b64df4ea9519e121fe Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 17:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 17:20:18. --- .../20260511/20260511172002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511172002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511172002-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260511/20260511172002-Binary.backup create mode 100644 MikroMaster/20260511/20260511172002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511172002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511172002-Binary.backup b/MikroMaster/20260511/20260511172002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..27940d9f50a44cf740cb2ee620d163b08912e5cb GIT binary patch literal 302647 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 f~r9Oy1=!FXgAd$b4fgVHOHY+TO4;c!!Hv8XMN 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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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.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=172.66.164.200 comment=dou.ua list=FuckRKN +add address=104.20.28.254 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260511/20260511172002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511172002-Diff-Config.rsc new file mode 100644 index 0000000..a422f06 --- /dev/null +++ b/MikroMaster/history/20260511/20260511172002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +4307a4307 +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0