From 6ad6a8b8382e48fa48728ee7ad53a1bb0b0c9da7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 01:40:50 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 01:40:50. --- .../20260509/20260509014001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509014001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509014001-Diff-Config.rsc | 16 + 3 files changed, 4655 insertions(+) create mode 100644 MikroMaster/20260509/20260509014001-Binary.backup create mode 100644 MikroMaster/20260509/20260509014001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509014001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509014001-Binary.backup b/MikroMaster/20260509/20260509014001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..2676578e80bdebf8f7454a91ee2518df4fcd3a25 GIT binary patch literal 298264 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¨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

-vmz^-f}Su+|S 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

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