From 72746157bb1d226457cd285bdaf859013177f731 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 16:00:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 16:00:44. --- .../20260508/20260508160002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508160002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508160002-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508160002-Binary.backup create mode 100644 MikroMaster/20260508/20260508160002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508160002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508160002-Binary.backup b/MikroMaster/20260508/20260508160002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4d54ddcc7d01f4a269ac8dda397fb039c1d0a139 GIT binary patch literal 298264 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%0DU|Sc$TpImIT7Uo`_BZCYBld6fDD1wZD;K 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≀w?1yZFg*?Nld2$TRGxVgkg=^4$@5=;0d->c!(Z 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�RZcHXuEG`N)MoA=O+^t%CG0)-B4pDvY<`*B| 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
}r93>Be+sDTfitK;v6v5V%& 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no 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 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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 +/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" 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!!!! disabled=yes 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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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" 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=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +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=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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +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-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 +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" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 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" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +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" 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 check-gateway=ping 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 +/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 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/20260508/20260508160002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508160002-Diff-Config.rsc new file mode 100644 index 0000000..c3d690c --- /dev/null +++ b/MikroMaster/history/20260508/20260508160002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4291d4290 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4292a4292 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0