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