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