From 30af5adac3a31ec9e3da98a55fbf8853b8324bdc Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 6 May 2026 01:40:27 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 06 01:40:27. --- .../20260506/20260506014002-Binary.backup | Bin 0 -> 279058 bytes .../20260506/20260506014002-Config.rsc | 4677 +++++++++++++++++ .../20260506/20260506014002-Diff-Config.rsc | 7 + 3 files changed, 4684 insertions(+) create mode 100644 MikroMaster/20260506/20260506014002-Binary.backup create mode 100644 MikroMaster/20260506/20260506014002-Config.rsc create mode 100644 MikroMaster/history/20260506/20260506014002-Diff-Config.rsc diff --git a/MikroMaster/20260506/20260506014002-Binary.backup b/MikroMaster/20260506/20260506014002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..39ab7f73b9ec6d6a8827b11f248d618689bc8995 GIT binary patch literal 279058 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

6F7QCu!0WK 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 h`ySx68r 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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 SetupScript [ :jobname ];\r\ + \n:global RemoveMe;\r\ + \n:global RunOnce;\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 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 :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 } else={\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 (\$GlobalScriptsUrl . \"certs/ipall/\" . \$CertFileN\ + ame) dst-path=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :delay 1s;\r\ + \n };\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\" } 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 \"\";\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 {\r\ + \n \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass {\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/614/a7992fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 01:00:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n# read parts of a large file\r\ + \n# Description of parameters:\r\ + \n# \$1 - script name for logging and user agent\r\ + \n# \$2 - url to fetch from\r\ + \n# \$3 - check-certificate value for /tool/fetch (true/false)\r\ + \n# \$4 - mode value for /tool/fetch (optional, e.g. \"keep-broken\", \"ht\ + tps-only\", \"http-only\"\r\ + \n# \"no-redirects\", \"background\", \"background-and-keep-broken\",\ + \_\"background-and-https-only\",\r\ + \n# \"background-and-http-only\", \"background-and-no-redirects\", \"\ + background-and-keep-broken-and-https-only\", \"background-and-keep-broken-\ + and-http-only\",\r\ + \n# \"background-and-keep-broken-and-no-redirects\")\r\ + \n# \$5 - fetch method for /tool/fetch (optional, e.g. \"get\", \"head\", \ + \"post\", \"put\", \"patch\", \"delete\")\r\ + \n#:set FetchLargeFiles do={\r\ + \n# :local RunName [:tostr \$1];\r\ + \n# :local fetchUrl [:tostr \$2];\r\ + \n# :local fetchFile [:tostr \$3];\r\ + \n# :local CheckCert [:tostr \$4];\r\ + \n# :local fetchMode [:tostr \$5];\r\ + \n# :local fetchMethod [:tostr \$6];\r\ + \n# :local tmpName;\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-\ + without-crl\" ];\r\ + \n#\r\ + \n# :set tmpName (\$CleanName \"tmp-\" . [ \$GetRandom20CharAlNum 6 ]);\r\ + \n# :local DirName (\"tmpfs/\" . \$tmpName);\r\ + \n# :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n# :log error (\$RunName . \" Failed creating directory: \" . \$DirNam\ + e . \"!\");\r\ + \n# :return false;\r\ + \n# }\r\ + \n#\r\ + \n# :local FileName (\$DirName . \"/\" . [ \$CleanName \$fetchFile ] . \"\ + -\" . [ \$GetRandom20CharAlNum 5 ]);\r\ + \n# :local Url (\$fetchUrl . \$fetchFile);\r\ + \n# :onerror Err {\r\ + \n# /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName\ + \_\\\r\ + \n# http-header-field=({ [ \$FetchUserAgentStr \$RunName ] }) as-valu\ + e;\r\ + \n# } do={\r\ + \n# :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n# \$RmFile \$FileName;\r\ + \n# }\r\ + \n# :log error (\$RunName . \" 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# :log error (\$RunName . \" 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=3\ + 2768 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## \$RmFile \$FileName;\r\ + \n# \$RmDir \$DirName;\r\ + \n# :return \$Return;\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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\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 :local ReadFile (\"tmpfs/\" .\$tmpIndex);\r\ + \n :local filebody [/file/get \$ReadFile contents];\r\ + \n:foreach fwList in=[:deserialize \$ReadFile delimiter=\"\\n\" from=dsv o\ + ptions=dsv.plain] do={\r\ + \n :log error \$fwList;\r\ + \n}\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 debug (\$ScriptName . \" Downloaded \" . [ \$HumanReadableNum\ + \_[ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" . \ + \$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=1.0.0.1,8.8.8.8 use-doh-server=\ + https://security.cloudflare-dns.com/dns-query +/ip dns static +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 comment=AMSTER name=amster.vados.ru 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=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.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" 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 list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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 +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=443 +add action=dst-nat chain=dstnat dst-port=22 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat dst-port=80 in-interface="ether1 - Unet" \ + protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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=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 log=yes +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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +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 +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes 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/20260506/20260506014002-Diff-Config.rsc b/MikroMaster/history/20260506/20260506014002-Diff-Config.rsc new file mode 100644 index 0000000..38c8906 --- /dev/null +++ b/MikroMaster/history/20260506/20260506014002-Diff-Config.rsc @@ -0,0 +1,7 @@ +4438,4439c4438,4440 +< dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina log-prefix=VPN-all \ +< new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!NoVdsina \ +> log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +> src-address-list=!NoWG -- 2.52.0