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