From c283581755bbe401bb824639604040c9f7c20a00 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sun, 10 May 2026 04:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 10 04:40:18. --- .../20260510/20260510044002-Binary.backup | Bin 0 -> 302173 bytes .../20260510/20260510044002-Config.rsc | 4647 +++++++++++++++++ .../20260510/20260510044002-Diff-Config.rsc | 6 + 3 files changed, 4653 insertions(+) create mode 100644 MikroMaster/20260510/20260510044002-Binary.backup create mode 100644 MikroMaster/20260510/20260510044002-Config.rsc create mode 100644 MikroMaster/history/20260510/20260510044002-Diff-Config.rsc diff --git a/MikroMaster/20260510/20260510044002-Binary.backup b/MikroMaster/20260510/20260510044002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..63b254aa42caffd3512572e2ae7d33c652e5d755 GIT binary patch literal 302173 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%0ANJSKzX)LezwZe*Mr9q$;*Kb$+BX?$R_U6oU2!G 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

{+3nZsGC z-3vgPE~eKPNM(APN<|Xbn*HJYLpdYY3iiJ&bd9rmXfM8{OJQCNU|uIJT@;hB6C_8A zgf93ov-RS-c7lE2y-V17DFJJ2pQLyB%klbJS3Ga5L|Z-DH7{o$1A!;Kq$68bJz-He zh8Xs;>-W~Gz@NJ@YSI&n5+{7+D>q_vb@1FfSWInwvuso8!@p|K1FTTAPYtqV#Ogkg zzUkf=2dy9Y*I9}Yov3YVBxQkiEcMk(GdRZWI$2`)8%+Ns%0DmRRRqXY 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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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=0.0.0.0/0,::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=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 +/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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.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.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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 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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system 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/20260510044002-Diff-Config.rsc b/MikroMaster/history/20260510/20260510044002-Diff-Config.rsc new file mode 100644 index 0000000..c8c0212 --- /dev/null +++ b/MikroMaster/history/20260510/20260510044002-Diff-Config.rsc @@ -0,0 +1,6 @@ +4302,4303c4302,4303 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +--- +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +> add address=104.20.28.254 comment=dou.ua list=FuckRKN -- 2.52.0