From 6fc0b29aac7d56edf0eb7f329ca641890fbed8bb Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 06:20:49 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 06:20:49. --- .../20260509/20260509062001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509062001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509062001-Diff-Config.rsc | 8 + 3 files changed, 4647 insertions(+) create mode 100644 MikroMaster/20260509/20260509062001-Binary.backup create mode 100644 MikroMaster/20260509/20260509062001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509062001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509062001-Binary.backup b/MikroMaster/20260509/20260509062001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..195a46216dfcb8ffb286ab325cf3fed08c77c374 GIT binary patch literal 298264 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 z zB$(*aQ*ldmbt{}JT=Mi~#0j1(xIqRMYuvy>U8-_tnW~iW17&r?`DjtH?Ce+#MCS-q zIknheC=FhqSObi^UhdB?h{0xyw3U7Z9x%W~B@iUm9mWNe%#N~)3AqCbL7q*Sq`7c` zSgRg@%G_L8S{NFI6)4}%bTL)-T*0U4Vo{Myz>CW3;~@Cn@LN!jxh@@;e;bKhnU|ahLQVdBr#>k$A6Jxg%vu~sb?L~@Y4#{IF*Z_EkRiz1n zV#>p+A6Wi%IRJUuS2?n(I42dzG{Q>7d}A#xWVh`x5qR#_<#+38B&l^5(hygruxSt1 zkyR?R-`n0C(+qJbkv-tT1R3<83l~}(7@0DU97|Ose?2U~tZIeEs8b9YsEG8KRGFtXWAp9=Zum8OTuUcz*i2h^Jq(I}s!&EdP-il@N&9Q#& zW`)&I?b2@DFBmihBPV0~X(CA6OEX^QM<1~_+&9CNtq>hYO5^Mc=Rdy7b@HFA{RGWP#HLaitFXCv}l9qy1{o=ri+=<70!zdeYg=PM=R(Q{ZcxRuJJ>Vi6vH#;7;S6p z%%q5cAv`npFVKRs=H9N3)^o?IRZ)L2f6cRhRxfYEI z8r^$)J=oT9aEpmqD&9u`yoQPKfqF}&g4%3VIWERVONv50baNcl@lv%6|nXxxcaid#^B+cfpM z^4TMO=WrSBLM$D0Ki+$ZXL^?n_Pf8+rtmn z&a5Ly;F3HI&UE<+Dxo*P5~RKeVaUR1+e2c0(ilBL^=Bh2oSYs87>rPD|JKSk zV}mJGc5N};yJ6ky0iNg#UG)c~>cq8JS#fVu9h`RMJprd4GwYQpRxCNbctTR*CU%V9 zSq&sAD=$w$y1y>g*P;h{alp1*VbFuO$-PIbpVr_^c4Xi(7xM?+POA>geXEnql6`$y zW0S<>Q_V}0t7H1OY*@v}m4+t&r(d1pjxoPL1W;WhvHc~W0m#y*8*8Qg;|%p}vWb(Vd6>iynN|Xa^}j(CfKYv3CXY7sH%G zqwU@?j}6OVm7LE^If?k7(Ohy|q}>(#9koLh5`3&BEKh|5(tA4vUCz&mBz44nWT@&H{XD&wPlVDp$0pr^mjtGgV+A1G@+LH79*7AU5;fRK$aXaxWG{Us1hk~LneTPY4Jx6=XB^XkZ z3yp09Q$H#0Uej$S&eGc=7?W-CS7-1?#}}l0}DIjt($Isr(S|!gt6iBh2=yV?sGp&8DEmO5U9wM>){fJF&1cy$ppDKOnq|4Qy zG*1&4%_Y`h^j^?2s_NQ8C> zEGa6%z+=ZO*D5FMcq^K?7{c=NS{Hdxu2RiB)-d{-8_!DO6IR5;6U?lMTwKqMfem3S zNToCP<+m2g?+n9V5|wIYW#yudJqOD=}&Nz)m55^7pC5C2*u+et%u$ygWlv zQYHpw?z!n0?ZLJdYS63NCt9ZFJd-_K29LAYA*Crdjr44GF!DNiO~wE)pqp9>MlvdP zSSMlGZS|hSPq=ULn=h0ZW7)VAjqgLC3qH%i&Z%0IKW_XfKa5I*tR=5lEC;3>7}ULP z5GM=sKC;?x4(;^qfUTm)QRuQuTHd{ykqbKj?1KR2_0|fvuj0obC+K<&yr5zUL!)lh z>0%o>6f9sC3qfMMeG(O3#_@qFy*}jS{xo?0cQWz6P?*^+I@7>>F`T+-mf?=k6G4gdKFmc~UzWy?Jnfg6_(A@VK8>wJyjw

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