From 23af63e9ff87100ea1aa1073c29e995a0c6d2bc7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 03:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 03:20:18. --- .../20260512/20260512032001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512032001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512032001-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260512/20260512032001-Binary.backup create mode 100644 MikroMaster/20260512/20260512032001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512032001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512032001-Binary.backup b/MikroMaster/20260512/20260512032001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..77a62ba97a47f602ea96a14c5d31c2ef6c8560d2 GIT binary patch literal 302647 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�_4( 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�O(VWc7G`0RVsLqH2fb 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%0DJvA`rn;^oaP|JKJ5KIoW=@?hlMX!fD!(G5!GduO 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î>^_CiT>N|3 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�o48u($trucWw@?{)gJUR`NiuZbNt5x#Y~L;` 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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.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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/20260512032001-Diff-Config.rsc b/MikroMaster/history/20260512/20260512032001-Diff-Config.rsc new file mode 100644 index 0000000..15cb1e7 --- /dev/null +++ b/MikroMaster/history/20260512/20260512032001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0