From a8da7e67045f0921a4edae26b004af1e29f7cb2d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 04:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 04:00:19. --- .../20260512/20260512040002-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512040002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512040002-Diff-Config.rsc | 8 + 3 files changed, 4661 insertions(+) create mode 100644 MikroMaster/20260512/20260512040002-Binary.backup create mode 100644 MikroMaster/20260512/20260512040002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512040002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512040002-Binary.backup b/MikroMaster/20260512/20260512040002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d88ae6fcce82132d5c5e5b3618831c53501ca413 GIT binary patch literal 302647 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

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