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

>Mz}+^fXD@M`$om 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


mOKZIqu(gKY+8;8N!n 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

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

ph6 zsL`U&RiG46fn(Ji2FI81Z2|A4#=uNt9CZ&1=6DXQeTo>^1B2N+zHSF=yIC;h%aQ+~ zf03b+m7IcywJ;$ROYe9<1uf=l!tw7}TxAcWQd*6t*P=MozTY{Ezh;=xa8$8m!8e>J zUc#`DqNr#vmJUw--$tC?(l10;AZRUlrHD|2PSe~4B?3W&nm~%KQ4z&pxgX0bbj~?h zzS`PYaX;uag;Y~8tvnVgpTL0tk(t58?Hh3{DgB7+a43??e*c=DLJTWO!o=Bn-F3%C z(aG(nFke;7K>0)aSY;_7%m4~0#vvfS`t`kgr{g7d)1s#qZycY~`D|;#QC~Xw{4;(o zYdK8gQjEhKRbF0VY+GuHy#QL+$upU4{{DS%bVRzeeGKSUf`V;1`qRrwTFB_BXih^K zwy8sf#@3#zy|-ZMNM~18daHG9SKJ4tLE4be!;j!IB!r`kKE*7b@3qK!r*Hyq4R&Q$ zslKgzNKPb~ba3u#)rkJY-NBCofUp><{Pa(PU)~cOx{l2A=f&w{pU#2KgW!wxVUSyF zkVYtLa$IN{)yUHC;(S^x+%}D5+q_I>X~CJ85-uYWe+T6 zsSC|Qm>$TdTB6hg=Go@3ZBZ*e|Gy7Wpu8Tl_&?lmJi1wPa#LVt45ox4d<1Y>P`hQXH-qH} zy~~tqP|8`*Wc(x&Lp|ub#Ddzspedb=vl(q)@-F5X?jzJ47$)eMa?Gs?;-ej_*2fTw zG`%G-4T$h1qDb-40%;gSL{M0;EVb1vlR5%xux&QDP_TLbfCz0YW3}A8lKX0W=v07b z2gu2g_4{HjDtg+b<_YsKf&}=tKVULgH$fG6q@SA6-&t?W1yT5-nDZxoG|K}oGI%^Q zKSolY9L=vM>|yX!`0mjag#N@LHso(vB>X)K&_)w9mCmm;FxWGZxndAt~;l zzHW?YRgQaBYl_joh)u zFY$@2r97~mHfIw807`^vdMWnZ?+jNBHhV%6t?%4TK%5hITubpe#9IFUZsN>292hy$ zy@jL;ui>HFRjOIqkUSKRJ*V$Af?_H)8K!um(8o zlR~GxSD}i9180VtQIQVr|3e%SAM9_gIs<5$a;Q5%S?bD67-#2@9A0(-WW~DeR~j4J zI^S#9SDX}~+o1OQT`PbwUgf~dR)ur(D>9+61m-df#I=``*`A~~$0t@HG>{I?OO=+b zzS#R5Vr?J!$%cqa8pd@2t2?jJ8^dI&j~0DN^OyrzMQufQ3~;WV`MmZhn(_8`hG%%C ze_}j?w¨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ðn)BTdS56K|)j#Mg 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