From 68f44d77263f768d0a8fb34b015e5ce2e86e1296 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 14:20:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 14:20:35. --- .../20260507/20260507142001-Binary.backup | Bin 0 -> 295757 bytes .../20260507/20260507142001-Config.rsc | 4619 +++++++++++++++++ .../20260507/20260507142001-Diff-Config.rsc | 29 + 3 files changed, 4648 insertions(+) create mode 100644 MikroMaster/20260507/20260507142001-Binary.backup create mode 100644 MikroMaster/20260507/20260507142001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507142001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507142001-Binary.backup b/MikroMaster/20260507/20260507142001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..701849d0134b23a830af1d18b5f6226b9fb5adc9 GIT binary patch literal 295757 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

  • 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 z zjbiiE$x|#=`|Nag=K4f&acAoH~$4(i?{MQ6F}# zNJDJtc&b>uR1H5(XwLppsIjL2+m`V>ZLb#SVa(_3!Ne)^ab8{#)cg=DRZ0vR%V@oG z1()9f5CKvd<>+o=2vU^+I`gEhPUDuq_~f4-koJy_6XN0X+3t&9ALgF2w-%*4mjH0+ zu}&L0^}Dcmb_sFJ^7I?wG#vCxwa{=)&?NC4Wocw&lkDwds9kcP!r=)Kn4ASrXsQCV zD@^G$JnS+bV=CBK8XTzO!vQQrpqkCDrN!AYkTlgNo#nd*OMuDiRt$ZEV zC+v_Wj{d%3o1!3;)8Hl%AS;mxA^|-W-`^Cu6&RWhXnm=soZ1V*6qBvC(ZRLoo!=V? zc^Tat(;Wn7XQEb|nkhfw>pd&owMDR_x<(x24x%t})zzf&|1brbhSoX>3v(jm{ap5= z+Yl}>BoAyMB*bWGlKqQV?Uuf^W{Sur&V(?ljhyi4KuDG!fwG)?qF$F==a#kZ2%2_~$l_?Y7Ba7bJ$e%|aWtq8B3Q8hnPsK9z^g3zM(u*^lJ5VPW)7O~|W!>p8U%zUNU8PEU z;)}Mf{KR|(vY}MDYQrCs@jQCj`T#0t$Vlx3?24MOC7|}U>-r}x`}5m#+w<`Hi_4Rj z%1uyJ#nrfBrQQ$Q&(ELMc}BV~Yn5Oc7rHi-lp-=F0B%u+*yghmGDw>PiYd799mY-Q zw?xK0ynj-F%H|@p3Sx*!Sb8iiyA8}K&tY3f&I@g?uWU2$w^Nda8kHDxSS^PuO5-Pc zF+>Yuhs0MrDZy4d`^bI$8-;4inm9o9T8qE+eLR4^DldFLNiMquMq`SCxxypHN@P#J z(jdsI2L9;5a`K%P$~VbIR;{Unc&gfvCGlifD^#cB7mH0u!T!XaiW;PhZ83bmf-aOo z8&lReH5?Ug1d9W^f0rS-JhVjOTrv30+K{0=6M>8lq>%0teu_q|mw<9^#T%A24ha$i z;NuQuqTyW6B_A^C68;NL%0XqZ03U%2zBnX`?hCIco8{4#`S{U-bBH~fKe;KnMKBxR?bzVpLAyym8WzV>~VY}RS2FGCyRmfI%?s1^@x+3wT630I6#w& z)Tf|>=2U~s%mGg5{82Y|w-Z~yO9{mrw7tkJ-!y~hg|W$5nkekP-H=T|Yx$ge$;J`I zm%G|%{|sCBkKMYNKq8ymb$a5vGpW<02wy+1U8zpfT$Wv8z+LYBoFe~SVjgq78NaSK zn1brr%Y_!w>f5J6lR5(H`=KCw{b+G}-}T#yMQFz1IlC$g?V9zXRB`^E-&GdfcP=e# zxQNzaZggZLjs4kPZ+Lk-=l-^ZlF!^p4g0J=Ly}!eZy$t zzV%3%=rZG*GC)$VzC9nW5%?t}eQx!POCOmNl}F=Jry4|+?WHZqMQd2o%0FwQor-}O z1emwZveNjn$JR&xgm}MBdXg5yVb2n^=4faHxRvC>{R3&IQRNv}>iNyqf5fpSFdgO> zkf;=48+sWSe$K`1W1DMzstDUZvn)jqTxm{&qW`Jxj0h;uD~!!A z3wN@0?0QaE+kgJZ4vFB3FkIcK-RS9fB_?9_2xJN9&4~FY)wm;aFD*UBGw_cX)m~$_ zcf1CudFdgmlThbYU)W0j@4TShDCIg^D~;N7t6Y#>^FD}+$+0Q~LpTAc=;f9)J=EO! zxWkQZ>pWy0-zy_4grAYebQ@2gpCq@Wuio8N^|T+IHFFtb>M$MPDPKb8k_%jSZH?xb z+|Sy5pH_TSy9ICkpq%?=nTZLKqaL+NQxQCLBdp{k&m&&Sl{`a^o}^W-8=39;zl-Dl z+%+(L$#G)UY^s7oOJ%eD!| zWl$c3Vd4`n0BQAslhl9pNW0ZPx3}_b(z?ke$i({VK%kYQzeb8PG}g60fQWcT`mvd5 z+5k|}{mS!rZt64%Hjv^|9e3c-o=DzkR(tq*ZiWzysgDc&d_5jmGEwrGj#}qHS~3tK zI0Z8rN(Mo%d5v5;s}xp>^>!)_*9n_t*sfRWIvmBDMqf^dM4gTbgR=quJYN6I0LtH~ z&gKM9=xXtBI|L{Etj0?0Gz~rGkY8?~* z{P3n+#kH~o%n%K&k6RCmj8)+H=D?up;zkC&kP0XQZH>;2zVAEO?gwN5!8(Es*F)WI z9~#8{IFINUS1OtX!%*T4jE%j^n8WZcsO2(SnOo;mUxB%=5oDcFZ@D5&Sk78bK(C@5 z{vfo>o+W}rdW0dZ@eg*%9;D!IJw~84w63EPdbA%qh1`{&C>b5M9S)=E<=95Pnj?v| zs~yqIweZi{+u!sB*K7Ten9x@Z%>!kk_j-T?P$?-rcBg>G*CQmn<_=DjzN_Vq<@Qz9 zx%CJ|%^1A+gx1ZeG446G55~I|VtvRdA=~ATP>sGWTdRsKX%&JAE~oY;_5vbbeuTZh zl4kj}DzrbA*H!jp)w{%Ma|_6c4B4${URsOz#&5fNnyqv-ZGDp0oc@F$G_%E>TiJe23?UBbN6ZlE_Z1`;0wwn#=d#0Z219IPotbG75#Qj2?GFrE*c&jb ze$6WNlIP!t6SN8l(H9pRKPqQQ6yH(_>aBChXuv18Fq%Olgtn^CVvK?cnD~krNT`-s zY6br4(=!ENE)~z{joroE&<)($KKvD5`l0oU+1z|TS9!6i)CSjiL;(Kb?TtqJ3SP0l z5MqsZ{Nn=v2mDKm6+!Virm0<9@XJyAu4~4!xob2`qEv>Ad>qz5;_6Bs=KHLBE)B?y z2h|TkINcrc(NWc4k$AVeLd4@yykMK)u+-5W-hrdv8_kS`6qWR3;A^YaLVtkRUT8ET zD9w{YS^Z$NQzQE6r3;}0GSm782}-*iYahY2&XH-qK4t=6-$@4Usz9~V{*^oC~$;vMz=Xvg%DdXm@QE&g0Myc=Z-9ZQc}?)t@K zvJ2H-=BX{mx*X?Sz1pPk;>U{GWA&9s#sdw|6MsJd&MWp?+*ffD{QGb2`&YyAD0T#i7X&WeZ@L3yLf&e_JA1%1b@Fki8lsBq1#q)VrB_qo;U8&8>|>g50f< zDKu69X^G$A^KYa*c;rKf)yI&s@+C(#Iru?uD;&(6sQjH@ANdJkDc5uzVc~GGI9`H? zblm&<)seUre7va-^fL$x$5t>rj)&UyrfXI^DEgdAQHSGx1m7^P8OcbHRO>4eKX-hXguW@Q5m+nXeo@Ty_P@QVkU39X8IdO-Ty=%ota)} zY_(}!T+#H!5-yaw<@(LJqntzrZs;)kWO9dWPZa32<0;ABj{G`7sTug408P6u6KT0; z5)RuAOVzohin|JyWrDp1K+EZoRY}rd4$W-dael)WbUf?0-fP!nop*gsF_$zGosyVD z6}>#2%^s~Zpuc6`?w_3aG(&hL?=a;#+rM}1Rq?W6b@q&vFdcpsTB@$TjKk(%NEfxf z*JCc@aELiFdVB4&DT`%X>rbIbmzh=#-Y-m0mmmLqvz`D3wL9xAvvGJhI3CDor6O~9 zI5$p7y%qyG)Y4|)%}|Dil4~HYjSqfws<>q)&C5%EQiiQI(Uo4Sc-y?STDD?e>i&lv zw$DFWgklWAv0$J>UqN7t&pT@upt>=TYDP-$ba8tNw*t{U>d&weTtl6g@P1!3k+#cO zm0Gl*8Qqf%DWjsGoipqcTjYd$f8xuV9bv)FPZ%O`Z*HjxA?!v=fH>=a96n`qU=hrt zW2WQgp(}&txt#5u80IxMM%f~B$%fzC2*N$U?Gr#oGF~yFl8DuLTiB!?e83*93tZKK zr&MalcBq_`Q zOVza}0?{51>dz3Sq5@TAy1xh{_0*2BVeJ6TS7_cSP#3&F)${{@#HPXAgxrDaC127F ze8Lrhy9$H&7q_$qe&^C&v#~Z4E+(mot{X1oG~UivrC~N60U(4gyjqCvRmBXiB+@st z34~EPUC$HDjf-&zFX`{gkf>&ToP~SSSP?@x~T4ZRyeYL3CB1lpWIQq-6D2nq2 ztQzogt*YO~4J9s3dFXx^Dk9$`w&FG0fug($)z+0G;IkpRkE zLxYv~X_Z768V61J-3wP?@fK9{Ld*-o2-S zB_@+%!BvO5E;Q%}@rO(2k;iVqe?6s7dC!bkN3{U;^Dky~!hQL#E*U@4)7 zwC1Ctd$vb>raUfx?acbK0DjjJqb zbaR3oSYivF6%;6+h;~xuf&&t?aO^3n9BqelhKGlIb~4%?`^JsJNqsMX}RE+)yWqGmQArpEQykx?WVd;>dgEz9$X)A6No z5q+IAJo2aRA$U*IU3dt~8NyfGFECFo+C~z~r7+wbcau4{aU{2vpLw)pA*S6sR*4KF zNd~6Kxjf8pegNZil&(Soe}-;SgK*vm{||fG!^GmQyf88h@T-ZR&$S-l++tWL)!qX) zCVpD0zB}S7O&Hio0kic;A<;?Pm=h(X*%5KM^ZVKL7EHgV)BMH%w*IsrnOXfipL3!v zu9T=5mM1>Bb>c{LgPsGZFqOo_NWo0y$<`AHrok6Yfmm`h6i_2*yP2#)&(zQiu9xQENFc&kWAIKIkU_`P7?6+eo{!K$ICcWW#;OdGA4NIj=CdR z8)vHZ!p*`Wi!T&#yuaFKp}#s6fG`T)>mP6JI)yxl4}zPNV25KJ^=v$wkrXic$U=`pxi+HiuE6dWMQh;^-87?8EL_&ACNkdDwolw(KH_LAcN zS<}E<`qG|Yc6I6jqdm*egaw(Xm;2Avi?o$h6$RCEZ%9%GbQy+ z@Uh~ry+aR^Sy>*uGYjyHk1Se$d&uvQvj^SOf z3y@w}Po4=P_%I|*2jyF96q50IZv8OPZ}ZAMl(6q_F`#EC6VU*vO{=lM$ZL%KgZ0C; z%3jbu>mT-TyqC#Sk|4CemD`1-6!Um^S}CpmOi3(wRsry0{p!7NW(8Id-yY)TIT-%J zAtuL#0-aV%;3t-bc?*)1R3FF28$vsvon0Of{Rb%yIP?R>+cHr|Fp$8ijMrfVB^ARA z`HOnh;Ok2q3S&>-mG-}(ri#$VSB4q2=5-Cq1No{RYk6WvTI`G^dI0k>F?n&%$Yo{7 z{_>c6A>oqZ1x7qdKv?Y>Gk=VDaVjimPZuVEp8`86yW&|yGutkxPpWp-m*u}2s%QZ2 z_Xs)qH086It{mXdb|6Xb!7m_%+{?sgFj}p%5-#h?`G8Daz9;G|B?0O{TKK>F`XWBX z>MxuHb-o3>(>b~>hV?5<*)o7(ThhCyi`>0EbENtYmxb!D$`2XmFUUz$NNWVfv^o$quAXfB@;&G-OxL6MeDEf=PNKTLA70Y z^gZuiScM;D^hgQ4-(T-v3h?yaGGvQ!Ow*l*9-V6G3+dsQ766wK%h3yKjh;ceH?LMZ7a6;4<(^(j;h4@8GlcNEMe}VB!!Vj z-kNs0dv*9cwWlAqWJtNaJc}wKRGGK4 zg*3m`_z{;o@4V%@p6X0EOWoGN7I!tMd!zUDN(@cYgZjEe(dY6g1G9>TgVd;h33r_c z!T)F6uO@^tzO*ki`#TNoX5mzA1;?qig}#9BMkr3dlnL`N#o`VBz(Wf+MdmKDQ(dNc z(ySEPBpie++4L4{{lAqfa*X_W)>r$UyHR3QkO^L{D@mdm3bI(tWE~w^Rw4%_ zCq-M>2f?+5gi)NCdxqo9{=mqmaOr9K{U%YwzaZ*+S_zs zRWX;v>LZ}XVD~z3mXjhO&q#xXT2AU1i!^c{ofz+-UJ>aM4yp+or2Va+^O4Y3`GhC$ z{ty}SAl;KYx6?kdX(%a*&A zZzfceoykW;#3B$<>CRg3Q&YAI(>bb}av;w>uaeqSd?s()W2|$fb#iKE+Kv^qfXht9 zf;SDDKv|3t698H4_(77u7G}N}3TvygFhQ!4C_TMcp+23uAb)K2pI#CXT*I z_;Y;Lwz^MY$uptezdQ;wr6@G+ z-hyv~!(*?6OL!DZ@qlwh00RF3D5z{6DT+5s5oY*!3Okm=mS4W#?_B4C!$SHbj-ux- zk4vaT+(joLz_a3NsMFPA2~Qnl5$-um;+kIaIVcQLcaQd=ufpQTUyzwWQ3YzL!pa*Y z9E8kHap_YN3q{eI=c*L?f^G7-eU$nh!DHfR9{*Fp;@o5!BEL9MIt2h7l4V^%)G@AY zI*`4)E?e4l=`(&t&<-u4wmhZgyU96s5u>|_GjMSkoyanJ&wvBqY(+Y z%n-1+f0J&fS?|f?f+90+O&>5=4s=j0G15Z9KQHh{-ca|O!%oC9*mKMMOI%W;Nza|Y zF1W3ZDm7>RrbM`+{A&%(sK&T!&?>g`{)V1|>E3fitA?w>w*A2Y!<`o~iUQ+IMe+iSYT zE2i9!P%1l>G*kE;8)4$WVVk_Z>fGkVGY&$Eh)R|jV!DlzksJz2UvB?RgYPhC|DE7}Yw4ylYN0Nv&j3(YAQo>!iBKZhLL$}(b~e@$;O7w*{4W&Pxd+6G z`L{}(+VswC3GC3O zmOhx)O7=i|uI1-*(Dzirlo)+UU8)*5AKx`yfZ~V*Up~z4!qDQAeA+g6;!kF?>RR{J z3mNdUXQt$j+#&9rHb$|hhJ1+tJV@t^f!SE#+Jy#|UWoQs@Bemr%P8~H-$9D}t>c+p z4ZyZ6+8j<_;lY(I|3PDkqQX&N#rY| zDMvH=^R9x~{05CNuPq~M)-Jrjs~=1Rh#cy|c#2G|viXh0gE9+tc;TlYE7xxl@)Y`n zoaI(il_>Cwhn9!`=C=RfacleRVB`($BD-j#0Boy8s0sL|7($s%e68kI-%D68>32 zBA|c~S(}@jb!AAX^_yu$j%vH6CHbkg@GJoODB2>ry*75ZaCm~59v1V0kEj1I+v}nV zM9bYUiCQT{1A+1fDc2A`daWXv^TMNK2r_@ANw=TRu%6=Qvad{(zDb zXG{L$C!grXJwFViV~d4k25~nE4>rFYP9ml$bNR}K0#3m=Aaa%qy7ccfEotNqlZh5a zE*{9xgWbOxBrX5cWM51lUIPbS|E147&hUc!blK|~F&wiX zVACczHaCN)l^ujDEyP3j^pe%*=we~_VXu4M6qd8gJxEu#oDOM#$jBODTUfjxXmOn2 z($&`+JUH48)$aqwY?>3hvi9@D?OQ6T24;mrZY{yI_ZuPL_Z~`04y51S2i6EvLYqLt zN15!b_WKjC|K?p?Id_PRj+xv%VyK=Gq0n<|%5W~j=wSzhWm)zz^ z&_|!MjFaleoby7G8Qq*&61R)OfU3bkmFXzoA zW~dRnWV&X}U#jq>!eT}XxJpiJ{Ir)$&kr5r(P9l^Aq?5`gg(WHpOxF4UfS!3`=~i; z6Co=D0LLXRXFrj_YCjxB=r|&Q!ga86u&{Wj4ef(9W-81Ux4EB|Gx03wuUw#9hNl~k8 zj`=x+It#MkdaVFR;zdE{GL9(D&%6H~cq>kV82J_biY>+e0OIp}UNpx}V<|z&-X-uo z*rz1>%)yYR%tJ9CB~(y2RNDGnzJqsbf?k(6!z~jD8b|7rlr{3ScW{F`h(u{UV9h?< z3(~i7B?VwlR|bRw{B7KJeJ}dlOZ}zcj67(7_pvuxs^52*#b{hKinCEdD5uf>yQ0=n zxN;AThQ49162ob;&I?9ZmoBLw_^nl1rF2gO)VFVZb(5ZG7ymM><*1dvs7m#-x56(` z@-VVx&4kPTy0e{fp}S872;KJn+k5wgV&{jr<=FD9U=6|vkwcTGAZZm=>;t>40C=VN70f~{nIPeX=jv`@6xBj#`; z0?!HD2_ISPPK|0$D`S)~%++-$$r%rPJ^>rYr+9Trh;pp=*lyHUsulXRhRJH{>Iijy z@$#|XoaP_owZ;Jhe}MrjOyRX?Sm@J_3!Em15!5hmWjFk-iG&c8#7O7k@Ps3JS6DG{ zGFZKxffN4T8H}YxTHtS_t32miyGYSM7!>W2+F~-a1b+`S!O6?+Zp&Cl)6PppM2YEm z{@J=sn2sSj+0^DVtU$NR`coa>82frU(Hha|J-R@BLd_pOJi014A!c?zlJXsXN^9x* zVWVFYCviaAs0T^A6Yw00_wbdjMU@VfAMQTn2QBx`Ue~dizfU|LYhSTlW$K)^kCj ztfx6{`ZydIkQF`e2QEF`PNYw7IfNe`x+wv2`#4gG*Q6}%`d5SmE1!8}kG{VYaZlAJ z8Rw_kVR&WV_nM@&%bO-(Nk$9=S_5rjlL{N1Pkr)uiEf{a9}3`bV*y>IDp=Jn;#l_^K+@8R9-y%TU^ZHe9%x>5e-!;JMv&>0vuq2L zrJGr5k|VCl$<al(|g=bD7uq>awN8Z(pd9mj!yX7?R<1zmZ!+)rzxEg*E7@jG6 z#_YYqAg@q<-|+<%3U2{kLo^-%B<0=7jDAAn=LiR<44QBJZ1NUW;eXgocrxFRHEXsE zh1>Z@l#9GrznIEL1P>jfat~Pb!{8zH-!oe^m^@do!lOQFW_;{h8$w+!drfd-sJ-8o^`Oc+%DrA!`@fo)j_)7c@AAv6Zii|yvZv0Ap0I{u*b#E z7nxK3m!3p3^z45Rme_7eFjb9+nQXP5oE)`FM&L#V!}q=j&Nt|cWAd4D*yO7CCx@>* zL!i$iY80OpWvX2v&9uXX0eX{3H4f_mMH{tvj=*o6bOO`-$)r;Fdz{*&(G0XKhVtQw4z|C#E|JeU-vOkS^$wlq>1K{Fx3%U2968vBy6i13S?>w-&V_r)8TT4qnc@;*Y; zmJE6!cvEk9=-Jx z#5aMVg#0{w=x6o7nvy0=u?&^p@J!Zq5;NtEWKyPt#QDaB=sJDjD$m=Hm1vsVN0KRi zx`}99*wu{tB=-PKyXVVZIyk>7DaPg41*aux9=gOFs{IyCNu=Dp2}|^jbw0 zQ#YuIVixR9x_lF+Y6b}CaB(>K3r=z)lV-mDeeye)oXW+$-#Cu;C;S{E_f{+5WkVDD zfhg6bJzy7E-oP~HMj|9{w~;0Fya(O8|E>pXFJuOK#%*Gi6COkz)|dSXB0IAhwP6$e zJta3{uAclJ&h&ZF{P?Ws{4y#kj1NIP+CF32p{fhDrU3k*Fx#;>Se`2F9z!H#?TF5q z9%_6U!}?;|bO_WQImoACwF-DM zadzC(4pl`h;nu@2VoXld-%=Orq&~F$ImI=wW>*vJdeB?q4~!+mZi0JS2_pXLQV68j zmnreR>D=WkoB@B?#n@wVA}tA@6z83wL}dGZ29jr5 ztyFFHv0BQMr>Bq)P5JqLxA@yxDFGY=x{kI8E-(V6?aQh;Q4^Ncd|txLi|BD*M-Re= zLi#V;4l-VTpk8@4)7sA+NeSN^TozDH5(@6O^Rks{3QTDZ{2P%Nf^@(ghQ1~%CnB`R z8AKtqvae?Io7RJxEH>X<9I=?mXAu*BO8||-2$6y`|ICRYV`3!MTdee6T$%9U@J!>X z`mUlAI=^~K(Cp$i#fC(~L9J2D%SkyePo;QRlYXy*3qd6@vCzik<8R@{*1wt-d5&d+iempeW5_?Ae&PKZeuB&WJzY@YT z=`E%h8MR4?yWqVYTISJUS_gkN(_wVH54o#QOw*~P&U%$@cA0pE@g`Iwte}f`FI%`m zIC8z93A_(A4~B_ouHj3I$dgWciDEqy(>se=nf#qp%_gKUSN2>1# zcJ7Y-jVQ%4xEc5ZLywEgKt}a3r+}_}u#(0K#)^#1-9ZoBV;UN!N|J`gMbaZBp;J8! zDr7T2UeCSoQV}p^lkfZr)ey}UOUi{B>W{)CZn$DM^E%k*mWwbnn#FgN;3iX%ftnqi zcVbY%e@s}|E*3lPsqUnoX?EQ&J<3gpkh~D&WgXNAH!{LFO9umAOZ2l-MgpTtY$Fea zJdXp~8-`?`FuyHF;#NW{OFx!Z+wpt?1QV8=@LJ;bzbDLk)%fn@5aL(k3uwvqpew!4 zmkXnx_pwm^^-$;>|K7n{1m1a%*W_p44tzv>FASUIii-)@%)K;B3uBmpouy2onVE@e zXX?@*Zkng(1Rlnc795yJ9|?xYQ#|jtUv(|8IJO`)gThmh6+8$Wz2T|ugZ`nd6`O- z$Q>$hz4Du;`VSELryDF%sw|-EWWFDQ3PJ}1+F>CFSr+(@5Mpl*=sK;kBUNMaOsmX( zS%w@E`c>7S6kbMH`NP)+WjvwMxa|Tjt-B7HLb#;w z?~5EN(@z|qfIs3LzE57sv~L?)o>swYd&b?n@yE_+|jDSZ(J0qW=`MJ8&m zZ)JTjyW3si^}y#-CrgKE*BuzaPD4I1#?J`aM-BAm@Su0}s6MOZd|KwK-3~!CK4oE2 zEY-dT0IsPy5Yc(!NG1Fc2zn%T_=)+Fgk0rAbZ?%ZK>Quz?2`F(Bc9LC$Su&}-dqd? zn&zT$cfVRntZEd)|2#tU(+FyC7&xVyMycAwo({StVWk|#_l~LnfYboC@f7=ajfEmu za#IG~vNjk%%<=?wP7Bl0wo*I-5`BA5o!YwVb69u=ut+wz?%Vc8D^iW?SZ9PUVfOcu zBGHIZjxEy^cZ1PK!^AdkZU2K=p_@_jE0C3`Uo&}a!C(Ch$W$&(K)PX-))z;A;^Jjf za!1(!9cC(QrWG1cXV!7&4EQmK5#InVW%!Qm2A|Zxxhjf^z&^<|WnrUgpeIT<9 z)-FV#PUNbCf9lbbv&zpoA^SCVm(u8-fBn9%gDq-hMThg@*WA6i-h!Ad`T6!YN9heU zrG=id+p$lF<0lfCABj-T)^~R;_JoF`P&n687DI-rF6T3578Qj*7}*pT%@2O}n>n+< zAc&T0I0tmLZvB2Y>5tYjVL|$+@|-P`4bKw zl+lIP%~SdP(jE4QEvpwuYV5L289tZryani1GuPAlAv^c8uG%7#1u5gF)lOY;nte((`P(f%mPQ(U^>NjL_8$sEd z8lRQO!4UhtFx#j5Sren=U1Tz4m+b8#aF4c%o``y3aluiwD7gLzb%d;H)Za@0(T0n5 zQyotbGf6esnRcmBP=g}6ns5QBmHZLaWvme9C1PkKt-gjb9>_wZCTlI1)frf-ptITS zSL>ig6!;l%KlC}=C_#7EgXMt<>c33rhgsP@E=&xVCo-?JyM9{wAO)ox28$3B6KQ7= zVL~_@noD;__3*9|8mn+SASMMxg~HE=2Mp*T4*KXd0RKM#z&R*+VgVp<2mv8F_eXwg zCwx_nHc!<)OK!dBbo^$4m!>UkusZA-09CS z=NT$h<^$#`O;S!@g&&lL#p2j^I9S5CG`WVme1g;{8&J^EVKfd%kDbqTG|3`+GME8< z0xH33O)__~N@@SJrglxSL9oG8<65LxChbsFj#uiEl63*Y)3y;|R>BFlvUNKP5JC%E z-f%Tdu%}qmjv@(_IXX)&DKN$8lNhr~DObOw8)>lEsog{~@z&I)Q)!{NIc5KKmPxI^ zt+(g>5rs@n2V0h8&uK@`5~0Nbuq_Kbz^Up}uW>{mSK;TtfWNkh>kNKTNNsGH*jP zgK>O7dpWN#_QMOyJ^yvP-(}>b(;C8PAVqN zDu-?C*xh^2=82cy{Ur{Q8+Jz|D|bgtSjl1|QLLfxQL>kyr03V}G~&)=I;GR=gIoe(6rxG$?rXo9MxXby?W0*fVquw+O=Ir ztsMb|6I-`tjIlR10mT|yKw@gL*uDtHQUXNd0j^mOc=mwbe97;wNbGuKi26=Duxo<0 z@~h>t13l5c(=*#e=^XO43z--R9)v=k>2eZEj@bIMno-yt7akUo`-l%@|IkXbU_K@ah1FPRr4Ty-FWY#k+g zihuS7u`}RO-Olki+j4^Vd~uZ-yo6S6cb>xkZ&u}Be*CwAVLCi@z=Ste|AA{WVY~|T zzv;6yu?h>`$jq4Tzk1To_CDa8=~V&+U!Vqumu!met@CL|K_nWPq`@H{;^Rv_Gp#55 z9v%0C_DkKOeLC{0-nynW^<&QhT>FOk}dh$LaP}berKNb+deKt7{vJ# zhp9HR%h_v0;=J*T^i4oaP9B|s?~^`MnvOD;j%r<$pvQ*a?}5n0L0T$>+_H_7!N&UJ zEBJwv=R8#i>A_)wp}TP{H@Z09f-vV6YT~5z^2u52Rf_vln@(oDOIu@X)pwS;hmmGy z)WCf0-#h*zFL5Ibf})t#e4qcY^C4M)c-lGpo2XO|GIyiZZ~Zw8SW}rg|64eTE&bN? zy-StHqjC7*@E>ubJZoH%qyW;RzfaG1=3Zd8Qht|J*kPuk!Y|J8aNqV-31+I&j1D*r z&BJgt-hAYP9XjB>8C)}>ITcVrF;I6B-&t-|pk(7~+*(0l+ycH3tK^$d{GlhC&=h@9^~yF zmm$ey3j!B9r#nxyqiio9ud#B(&voza@tjecpfE8q-S4*@bV#x`lAe4sYRSCzF~7E` zalenGZx;$f8(VR}7QJRohWZ-y9CuJRXSc5Vqt-e7uDBY2-3%aL`VFF5Rq&iKv$A78 z62K6(fLFoZw57)|vWsMlstm+19Bng)X`ec3FrIbP_OIy2IBEK#nGv}U?^I<&cghG$ znO=+Es;Os)4qTF5WWzbQ>Q!|kr4K+Ox3Dm1ELX9aYBxuDe}}76QErpF;964$`}Sxl znHxC&u^|A82n`}Y7oM+Q9KUEET(`UOk^QT|eyQA)wL$yHtagRrH}v`)>$$-h={X25d#)R8$4%I3 z!@9eu%G}6Yt*H4MX{NJ@sNKS6L&KYj=ccY-^181fA z5IV!xx0vMZ;9du=zQA%JF263zk2TA_-U%%65>?GUB>CT9Tvo+P?mp1yR@+uyUIEmXrg&|O*{S;&;)A4_n3l+KJ zzffzK4}Z&q0j@hxd*LkZeXCY# zOWB_CUVSReQ3Yjj0EJMl*FBnLQRBP;b&aQ*=fy!;Ju3tgN%whJY}9{Q!sq;2R``tZ zAcoE-j+YwtK;Me6T038|LF0jb?A#7PiM>yc{-W|7h+sLG8Ba1>U$Xh&1zI=W|E~}~ z_1`3DL4bBMA(N5Wa8S#r!VVy>FQ#KL3vMqiHLhk`P!L0>4JVPa+BDnzR-+C|XsGaW zs}Djxa%I{z<{EkIZw2Mvph7ed4nc0t{%j-YB}R*&QQr?Wmeb;V8AJ-zk@`kxEj^*2 z;5*EskiDI6si_;)h1BZ54tefZlQM>wiP#Unn<9H#6czyqJl;ozxxJyv_YC=Owc)5A z2k1GAz*jFUI!;ShNQeTen-S+#d1T_lXnaGh3!q#K>KZ1Ypnv|RMD!hs!jDZy#0-2c z*ZmXbTdEQ&BcM=t_kW{%4CWXi(DQR`_PBQ`uQz9E;*e`ZoD{?o^8$L(dFK9Mh5s%{ z70)6wYV&Wy-;U`xwg$P=CM#uej-tC6R#&Lj``J7RNf+@;+>(2_IXR0=;>28!90mP- zTjh?|cij(2{AVunw_O}I&atXtgi^^`I10^2+Hz1KeTHk+uIbi$wNH9T2{VK-X^5-w z5^@%n3NZ+B$9A%;o&HGvl+nz>0}(ac!8t1;xW$Up@M^SYQADcnxk)0avATpg!0ac~ zPH>&UD{d9>6S&NMDp2zG= zE?5ZTNg9=}TD7$YobmoQEw=&P*JE&B7U|1JrVXhX3OUjkFyv5G_}JJnI?w0-F`P4- zfScV~M6=nvYy{Az7`%X=*5bZA#c51e$~T;RTX-#WyCVNLbK1_KJt2RBeip5mXXW@*w6;454CPL-5kA(&N*dpDy! zYH3!Ss^Mr4A{Z%5q`K^u$qLiBsR`+8W>VTvRPScQrmO}cd+^O-1oy{`5>?AGvOEIp z$~3^$=&v2}1(C@_RhW1s6%>CM6XC3Cvq8Oo7ASx&l$5Liqdocn!OpZ+_1nH?2=(O8 zY3D49dR>v#jX`tlAAnF`cfB$Tm|9e{!sf!xl`#Ng&%a@dq?l8puJk$%4rGVI_TZdZ z2>y2ycEsF~_M#Qx8TPFfbsjsW%Gn<@%qf;vI=vBFvJHsO?`8sl4_sX~0(x|x@V=S^DeOn z5{}z$XR3q!w>HM{k79bSi$H#XOMHC310$1j_hl%r?q}$b7V^V{#=JZ!o z$=pgpG3s!ozgv`RU*WU%lWG9@`-2zWi%g}`Hgr^q;j0*%oXS+t^iwOL=+wk91xRE$!eWW~Y1!m`1?!zyWJ<7{u>%cE3vM3V zkaw_3X*zo`lBwq73kM9D105)&1iv2DL!5xL4Cy_oThC3#cGK1)47e4>jQ}Ia+5$S# zxG9$&R&%zCzVfne9fy^9p_Vh^H3R|Ar+teg6{mJQ+y0khh;1U5Wa^r?_CHi5P+70o zK0XC?QbhDUv_r=740cD6W({vWkpyKe;lzc{qHY1qeC@HqYhdH6nzbOAO6q%&jWQ9) zOv<#U{=m})>>8fgJLO;rN!)b4VYg_V4rX>O0^WeMib;Gq-N{QT zBeg~_uApf9K6=jTG(tJvKtPl74HM|>4CjsaQ`k73Q2>F+h&2 zNt-Y5-3j%v+XMhIhX#q&a8fdk5YfvCH|55TgOr}VZSjWuVYXpOMeDj zG*WYBaez#OG~n%b2pXBDYXv4yCw$^hMz0A1#_lz6fpG`4q;XH@5!6hiew?$2yV2QA zU7+WwWO%L7J$0JTM~z$+@LI$!L-Hr<$`Hu2y`RvW@h`~lW1Tym&kyw4SFwB1QBWxz z(KL11?3}$2)hzrP*;^a?lDn8~caVrDFmNa=w+!Oiw3MlA^b$P_5uluxUX;#*dwZEB zk#&=Uf**|$cp7z$I$g}}O&h9%So>D14$=JkJ-&!&YMh|Z@?t|z%%>cs-g!IDaP5U0 zMRKa+cP!7^RGMdD68%lim2xD23*1#F*C`FI+_lXjx|jAxOGYgS)$J3LdsU%-#f~e) zFbM*DAo~I()OlmZDhTtOac|YF)cPH$dx3{uj3>KZ;d<`3r4*X*6j;P4MVkWQFt>_P zx7iz*WJO4z)X*FvxxL-k;K|XWSmpRx7K-}H=pw8;9l*Lnv8F`&M(Hsh&$P909$RZ- z;=u8eupSAw%oam{NC`|!HN}UE=^bx8mX}!u!CZsh`F<-JQ0OY5|DoSk^DP+2@9g1{ zxT{|89A#pYbgmLSeD$qwgL(Yz6DaRP=dY{}{n~Utke8lP8!_hv-NAQa;lxTib(|nq z#uxN)HM$29vBI!sDNw|kf)t+IF=DNxR0Q53S-dcDM{=``5sS8B(DPwZkG*!eW}!|W z0(yqG-h}gP$O>%{Fah0zts$4Wnh&|yvOwVt!y(0XJj%JJe-LSM&DEONe+<`EzZdD{TdTGbZ5Ck+|?pZiU7kfQF>H z&r3RB(6%km4p$T;4p=g|`9RjA&15$j674!^?K?bWmD<~+lkBmPE7p#`W)c`IA}T^kP{<`*pD0^ti`(FzI4t6Qzgd!W?^yc3!DZ-*rK zq6LwR7biCF@II}d9s9(npWsOh0@jMIj070E?Etusn#QlNSN!b4F>f||w6dyxz91-! zj~}!fV~I}n3F&oqBmsDPe}AcKVo-EDPKHPZktigD=#gZ2r0D3qL z(5andX=Ol8@vV6!rU0uC#kIP8I_nFYPAf_2uq@sAJ1(-1rX!%&VJJO#mX zB1O@c#uNOe;PN&ez{6xJx|^G_N0aQ^qOXoXAhb-57w6le0g)}NcK5lTKw$PWA}-P# z8rXj;Dme1{Vz*mdUI0I!Jwoj>-;gLtDVWwVwG;MfLk;;E{SavqtkPYR!?eRx44a@d(J4+4E%d4hM~^TWwWr8io+Deuk$O9tkqL~AAKyX7eGNIF~`7%$9 zuO-0(>=xayD4{gQE+_YHJ;Bqv&RCCnj)S*vawuCDqS;H&cHFLFZ=&L4So8Wy8iszu zX@Iz?O99gxk3-HjZ-J<7NZ3e@59RYv6$Y;hBl(_(qZl~>4z~qaTchR@L{~OJvo|<4 zL~JDv5Nve@Uu$9loGdBYO%a02CQx_54&3?Q@bdkp7iTfpETAAlUXTE1<`%LBtWu$r z+Rg4B&C_sFm&7dSZ#PpB7Ju!(O?2o0d0SSO679pdk&DvnW{AZ z#naf@f_5%}fR5P_wY$$;culmVd%A#gh^#QKWw@ZUgLM+lfbvaGU9+spi2v?mvfa*k z8`Z^kFrea=g6J!Rah;vMF+jZc-m z8wlPdte5r+$Z_A`xAz?I?%eY%>+!&Xs?4pW!oit?;~FOr@%0>wBHY=oaRaEO%J5tf z{*OT+NXw&M2;kfC3przk$xOzs=%(2U4(ye05>7 @h6i0YnwIfZc(0exL@;YUtX& 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507142001-Config.rsc b/MikroMaster/20260507/20260507142001-Config.rsc new file mode 100644 index 0000000..38b1f0f --- /dev/null +++ b/MikroMaster/20260507/20260507142001-Config.rsc @@ -0,0 +1,4619 @@ +# 2026-05-07 14:20:03 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\ + \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.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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 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 list=Trusted-NTP +add address=1.ru.pool.ntp.org list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org list=Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org 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 +/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" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole 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" disabled=yes 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/20260507/20260507142001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507142001-Diff-Config.rsc new file mode 100644 index 0000000..d0a1613 --- /dev/null +++ b/MikroMaster/history/20260507/20260507142001-Diff-Config.rsc @@ -0,0 +1,29 @@ +3613,3615d3612 +< 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 +3618a3616 +> add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +3626a3625,3626 +> 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 +3632c3632 +< add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ +--- +> add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ +3634,3637c3634,3636 +< 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=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ +> type=A +> add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +4376,4377c4375,4377 +< dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ +< VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +--- +> disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ +> log-prefix=VPN-all new-routing-mark=To-VPN passthrough=no src-address=\ +> 10.30.30.0/24 -- 2.52.0
  • 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