From ca982eb10fed02a8c9340b2c320b9f3ca7372be1 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 04:20:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 04:20:44. --- .../20260508/20260508042002-Binary.backup | Bin 0 -> 298454 bytes .../20260508/20260508042002-Config.rsc | 4642 +++++++++++++++++ .../20260508/20260508042002-Diff-Config.rsc | 75 + 3 files changed, 4717 insertions(+) create mode 100644 MikroMaster/20260508/20260508042002-Binary.backup create mode 100644 MikroMaster/20260508/20260508042002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508042002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508042002-Binary.backup b/MikroMaster/20260508/20260508042002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7082e0e814ea63913ae01250e1d18db1bc878712 GIT binary patch literal 298454 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

URw7_k8IR_<~7^sz5bq4Y_FB$ytfnzyFU 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

7lr2 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%0ATh?|OHN(+P)Wm*Xmm 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

<}B~z?n^+a%V#v%0kJWZ^3aY_Vk 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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 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=8.8.4.4 comment=dns.google list=FuckRKN +add address=8.8.8.8 comment=dns.google list=FuckRKN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.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=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508042002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508042002-Diff-Config.rsc new file mode 100644 index 0000000..da7a6a0 --- /dev/null +++ b/MikroMaster/history/20260508/20260508042002-Diff-Config.rsc @@ -0,0 +1,75 @@ +3147,3149c3147,3149 +< 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\ +--- +> dont-require-permissions=no name=AM-RKN-dnsLookup owner=vados policy=\ +> ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ +> !rsc by Vados\r\ +3177a3178 +> \n \"dns.google\"\r\ +4295d4295 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4296a4297 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302d4302 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4303a4304 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4338,4342c4339,4342 +< add action=accept chain=output comment="accept WireGuard" disabled=yes \ +< dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ +< protocol=udp +< add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ +< "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +--- +> add action=accept chain=output comment="accept WireGuard" dst-address-list=\ +> VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +> add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ +> protocol=tcp src-address-list=VPN-Server +4345c4345 +< connection-state=established,related,new disabled=yes +--- +> connection-state=established,related,new +4384a4385,4387 +> 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 +4387,4391c4390 +< src-address=10.30.30.0/24 +< add action=mark-connection chain=prerouting comment=\ +< "Mark VPN connections to exclude from FastTrack" disabled=yes \ +< in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ +< VPN_No_FastTrack +--- +> passthrough=no src-address=10.30.30.0/24 +4393,4394c4392,4393 +< Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +< src-address-list=!NoWG +--- +> Instagram new-routing-mark=To-VPN passthrough=no src-address=\ +> 10.30.30.0/24 src-address-list=!NoWG +4396c4395 +< Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +--- +> Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ +4399c4398 +< YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +--- +> YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ +4402c4401 +< facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +--- +> facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ +4406,4409c4405 +< VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +< add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ +< out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ +< 1381-65535 +--- +> VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +4412a4409,4412 +> 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 -- 2.52.0