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