From 2c882d2a6a2f021b304bc0c48ac120dcb528c59d Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 17:20:37 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 17:20:37. --- .../20260507/20260507172001-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507172001-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507172001-Diff-Config.rsc | 25 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260507/20260507172001-Binary.backup create mode 100644 MikroMaster/20260507/20260507172001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507172001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507172001-Binary.backup b/MikroMaster/20260507/20260507172001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4234017774b795a6fcd663c55dec3276e8cdcfaa GIT binary patch literal 297773 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%0DZk&QSa8EO>vwm$j1{}wLO3#_VB|C!5 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 TdWu%qtvSk^w2Q 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

=MTx9Q6iq&b| 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=vados 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 \"dns.google\"\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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=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=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 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=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input 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 +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes 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/20260507/20260507172001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507172001-Diff-Config.rsc new file mode 100644 index 0000000..8dade68 --- /dev/null +++ b/MikroMaster/history/20260507/20260507172001-Diff-Config.rsc @@ -0,0 +1,25 @@ +4296d4295 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4297a4297 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4303,4304c4303,4304 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +--- +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +4306d4305 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4307a4307 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4401,4402c4401,4403 +< dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +< VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +--- +> disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ +> log-prefix=VPN-all new-routing-mark=To-VPN passthrough=no src-address=\ +> 10.30.30.0/24 +4541c4542 +< add blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ +--- +> add blackhole disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG \ -- 2.52.0