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