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