From af4ae8d8a36e18234cb96216d3d49ba854b5a788 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 19:20:54 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 19:20:54. --- .../20260508/20260508192002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508192002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508192002-Diff-Config.rsc | 12 + 3 files changed, 4652 insertions(+) create mode 100644 MikroMaster/20260508/20260508192002-Binary.backup create mode 100644 MikroMaster/20260508/20260508192002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508192002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508192002-Binary.backup b/MikroMaster/20260508/20260508192002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..93e9104b619a14daa4e5145bf8ccc254e85a1bf0 GIT binary patch literal 298264 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–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

2mv5XjrlB3!^m0X!SW7l??02hK9CCI{oj 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%0AE-9ccA@M>4PL0oEZ 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�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%0D!M&xsd36TniK2 z==0xrt0H8rMirF}PK~kdSsR9-<_)ky+kh-D_FEd0366P%=Bq$ez1&d`f zJhL>XlBCj5x@093xn{CC_Q~m*q>_@rDdD;lS`@3-x1IM+Ou>sLRuCHXaGAWSW}$59 zYA`IR3g-R77K&}=#drocf$J3q(0xZU9nou_rDmygY7YvOt7LEc8T09McxqTv_Wy38 z4KLc>GJ=+iZ?T}x?Hu~^PfB|_U%>d)n5G7~OH7>F#v3T^WM(n~@evi9HWccgO;vxM zHy)QB$6RkM$<~v9HHGTs)EAyKiXM~g8|Lhk7X&oJ7w5ub=yyAX>+c|zUo2KdasOZ= z#c7=PYs3=~a&zOeP9x!u5NzK(@H`>#a~rCf4sabHuenvY@+Ier z1{#l^`|zz$xoyBY(Jl&Uz;QZM>YgTCK}Yqtr zR&#=w9pi|+o%eJ;$IpKSUui#qc_e=ohtN!D7HmgtrB2o#fZvBzG(sqv+Ui9T(*vSw z0BJOJwBDBZb{dRgrqkY6yEG{D^ir1NK)d7UVcEgSUBUhtuMWMvJJj&?Gqj23KDtL; zdq*nxks5$z2l9>pTv&gDqs#le!H$XnKgP6}8Sd%_ z2(`zypoUc($Vc80R=ieuhbM|M@Zm+@ECff7yo`cLIt|mgBVz|PlySTSK`}IQN+}!> z7fR`*Cp0g<_0Gl=kjUWpM z*;32`>;g?lT~=(HIZy~VBfgEV_sd?{^CMI0hpb$wvzQfvGcubEk9L2#G9*1or7(B# zs+7!YH_##gSd+YV9-Y0Do%<|VLci9u>n->{(j{M5xJPV>{uTBlGqzUdl^~fIm~AkA z{e<70yk6BoAQ8MI)DR3WF4bf;mZoPyPupGgH3AhQJ{BBM{J(KgCSmfJiW#2f1w`0~ zYy4TeGymDvbSUQ@iiE#Nv|uB7e|FJLE)RvUsu0_=HBYbS?=F#i(JJ8v3N;;=uk>#$ zx-3o{Sltm{Muie@gSX`h(Fd`sM{@?cG9B+!L*?hPX|?YZe_F$l-gQZi5L2}&J(Wzj zcWLwdeGfl>BYk8gxy-h$)!Ch*D9f=|)73w|Qit!jg>Se*UC98w{S z^KgE>049=xw-+SZu$A?eWg`EQ;i+&HqCX?K-S0$ z;ovsA>nQ5r6X9W-$LmlViGVQilgG%sDWx?nKsoB8(TA!tWy7Fp`-)3agMLT`eOe8s z4FLn#NF7QTOHUb+ChAc)dyaz^uJ|r)xO7z6h)uuDjm*&_4B#-D6nupT~-EZBcdc?yiYayCwwMtt^c?acqJ3Io+*aUI#aixb9}`#kUjD#ZMSfqepv&a5 zuEk`5H4Mfqfr|^J33h4Z6S6ZVg{I=98c({ZA^y-QCY6HXPntCyVMw7mM_2&pbq@_| z;Fb)U8z;FEG~|q20%7uYEDVytdJMH1c0a|`P_G{=et;Id?)wnH0BLh%pgrVa)Rq5v z`II0jiZA5EidO?;Ky(o)`lGrp9KH}Ujg9pe5lf$|5B^$b@7DRGUOS4wS(Hq&ex!pZ9W=~Ug)i{#jP1%T8 ze@{O)@h~+R14`W*s4|9>&a0(lz%p^&wV*60Z3yc9*@oj*MD|R>=F!G_F-`(7+pnMP z(B}Zi2BwnpE{_pGM_ADtJ#FkiMOR8AQxY$N&udZP5N_sYQ$ABhU{;-m4fDk{S{cW5qZ@`4 zfWCU!hPUX?T`6njp8VJnN{>7r5^`Lmgu^)jnW&|b&!!~W`-QQe3qpW)WinXcOxKnR z@`Ud3*7mRd>Idzyf2i>(V*Z76Sk~bfCt5~Yu2h&VH)U8!@8~h*?L{u&KAfh1 z?#lMM5O|u5eWvQmuH~-R=8>lTMypwplL7zFKNhIn)rpn?&5>mu&=XmQNL| zGq~70_nY=q;fW+S72Y(83d~*BBagILGwD9oWtE66#keAtXH;Q6X1ki&yOr-U*w~!W z03BkG@7PJy8Rq$bd~oHf5G7qhQkh9f?t~uoW{nu+y$17yEsL7t#?sA<2YiyQhu_8o zfqkq?O?)XS8rws{Rfl;8|HdD=kUSPgUM8Ew&Hv)}vu=ld`dh?MP?c6N=R_jZDKj$s ziNY4$Xdxw$c8zpVAkNrN^_uoPCfA|oo6k~=U0|)-&2)s5?@|{&OFxUfO;?@EZcV;% zJ>l^CXP;3YO<`%=VL(>(gu#3?)&(qnaqMkhXk%~l9(6tMpv}ot(`&48g zjLVrl;@zhCh<~z39={dJ{Tk44bfI}hSn5X8WF;P4H4`VgDC4n|m~M~QczxRm`QSFea=yLEq90zESX#{lFBB1COR96#wj{*K z)3C^HFB`!HD{t*pmhQt>z<&bJ7ey2~^ZcFd`$7ws(%mbf1~+$6B}wjnnC>~tjA%}8 zJ;D)M8f}uKt{`FS6K*OBP$TjsI3Xa?<-gwPml!0lh1R=_&g@qtKr5O4Xy)eU$3T^7 zUF>^qJ(~W_K&S3VfgcHY&bx#!(pO2N>LcFf661VlzVHwK3I^jClf|3hR`InFt95E{ zVdsz&qZb%hnYR)Q_7){;nC){P)W{u9Q>&mZO_V$n1&&oKw*Nf|2Q7=Jf+v=cjm0iKX`aAwG`S;+?!*1Jh-53njuV4VkHf!&76CGGQt)Ub3@B!BpGG!;z~_W-CvPd zv;LI69b(fvO*_wp>LW>wKvKK&{}F;GK25_IBBNJG^!ip3&6`tvV9|Js=}cg_+y&b} zijMDw+CSuSbu)^0u-gwZ$%-Sm+M%#_PN+*Xa!8nPVCYx{#{HMJSM-N2Vwme1t)pZq zh{X@`+WAOlZeQzB08eGLUgpoKWZLU#CM=qbRxAkuO5$h7FN_ts(oGR%=O9!KqBl4J z_!3~awRRwuL7Qd;qrgL3s(~z%7g$PX{h*8uEM~k+qhiEQ^6!EN8L~@A==Sh-tznA& z8^&}uI{=98R;z`CT#h#h$-nyWQg#U=vIE$xz~+}Z+p_HME+?#HfJ%dVzIrJ5;^WAE zDEDO$VhOkDVw_YuMb^z;i1r_21hnVz)Q#=p2}1YZQpQ5$7LZu>6k7y^Vjnil4-A_+giNrPMHV@7I7QtpK4tn8HzupI*!}bc~?~GGb z!@HwSp^*f`oiuTB!Dpu76SB=?le6037tOYYykygY_a*Udn0VI4UAVDg2LBK8F+mX} zpu%ruXovxzOtM0P_|jH6xQ3FEBfzFTw_HS!6YRyy{+$iwH-3!g`z0G&skq;wVCbhC z&w)1`yjy7NOn2|%NsvXMI#a57jFb)>zsz!1%K0*ESW7Nv$$PI-k4kvObPD)Kc;<&) zQBAjLv~SjNRhC*+bqsK}?32ftBaO);=pW?9mrEr1GM~B)8l(j`8c@0Tb zm=dSZhdwC$2WlTLvXbCKP=w6AjY0$Ng`R>gx=)0!xYTN%v!|N6LEOqc zky?j-#qNF;v{fo}JxaSF|KQU%py7I3H@7>H>mMaJb9)(^P)&Cd?$c+iB)qhGv(rC` z;uj`iY}*s{q}5)LQ|_djNNOx|EA&QbLmk-0(q*Q>s2CmzPq*5_&H!Y4EZd+GebJ%- z4(d){?81hoIPD4XqGyXu7=K$pKAfa#7O3P7Tc?NV5&%aBNw@W2Smwk1*6lvtA>Lx| z&%(I4_~#XM7oc%#!(sYqT{ht?qxb*%nsn>UkOC$H3R1HQz4fV&$J-yx$^2qg;B`}R zNXPnb4n-1Wc>MM&2BEx)O?o-`!%E?Z z1l$(hMElwpS=V=aFK1V!FWcU$*fBfZa)5THPYMVnmpM>+P(Bnq%OY|1Fk*|XOL)>v zhb0Umdl|bud69tha(Q=cggA_FdXvxnEn7axm9MdowbOJ#cqkwPX}%cp-Cu^~w)r-Z z(mM|`esDo@0O4>#R}9WM+fPYR#ICIzkDbka=vI<-)LfggABgqu51L%G{OI0AFLa4< z7^flyn&^$Ka$H~fLeG#(*do0HV}|QMXJbHNBEEP@qc>37B^)Rf!0M$i|GjRFU@F5> zwLz{P1Zy~!mH6&Zcz-hm?zY@aX@uI9)dK;vZ|;XZyW&;T4hO$dd(?^4;Wjgkp8R)$ z3{qjFs$EQ(P}ZmUR}akL+Z+xKDRbD6fKkiUAcs?q5T#|3s;dkG7L-PyGqWP(o|f=Ja~tuPoun$oY1*C< z{u_gI%m@a!EB#<%Ys_1e;me4bULkaMWAUt?!NYGVonR&W+5+^joU=Kw-8I&e^*Z)XrAZT;)DeN$6RLG z1{REc2&xYvto+2}`C+}JoXQ7T11r@0SZ{U^l$w4oA~N0*^wM(Jf`t0j77TQ(W3~{J z7+WR#lUCtt3%@jJOS&xdWlgO~e8@Rm1tRucCd4(yjl|1fs@lJ*OPAOUn~36-+3tcU z>in*4Ix5JJxATmDTPGJVleRayO1X?}A#|LpP}M+rb-HmnW@OfauHF~ty3Mpg?$?+y zqMsVI$}L0GY~+=stH5^XwBTQ^;bqHZ!=xx1Bf*N{V`FBrzzPFO#E?Uy4J%|vs`Fgw z>Xmg+5BaPCqTwletoQKM#>Jt5)=|qy zmLnpg<06zYtItbn&(5Z_IVR-7h)k&lF)lO5>w8&l2OlilR{n%zjM~x_y>e8g%Z{Tj zJ%FV$Oof8R30$qz9@P$<%*9=rJlUDW3$^1h@{*ZtFwWapS@fjv;*C?SVn)r|{*Ewd zWTm6d;+8mrC{gphT)E>hkTX(i_?l=P5(N_cv4{z&{{a5E27w^Gpq2yK(2^{5nUYr~Y!^ko8OR$%&-MdNN*7->c+j84dIoNMcxC;t0&q4Zn`?CS-@Su2? zyNs2V0uSy8Y{iCEF=z-)-1Elf5Y%8iapHtFey?1fGnE>H2t8h{m*1%0nGpgVFZTi| z&X(%zib4PjxL5FFz;2r+fFi{oU3qryA5Tz@7etTivt}^_#xs4>O)?Vm|30WkqEv7| z23>H;)qb^r1-5^y@B?Oth&{7S?>LwCknr3ofwLy2hY?9hO~y;d|1@TYk7TQJ3R_b-=!-8*=)r z$Jr;=HCLe5-51=6f_c~mvZ@Bp3oZJ254;N61mzY=7ZYG5vM z02dWl^blp{MKHjP(jdk3>|aE4PhFO--}vV*+mM*GmZL_Gfv4p=4@wvY8U69Sd9q0d z7t3oSg(yvKZ@HUCd&sPIc&1A%U)IuhO=i7FRNgBmlECb{$7=y!k@< zi>jmv!cLAeY+c34iJRQ$WylXRGL%_=38>fi#JJNgOd)TIcGP-@!(vW1V*)qUv1;i!SCFUQ|Lus!_wrZ19+LAYD1} zIJ1(72A2%ncZIr2AWigcus_%dzD=>)0Vwq#C+|deGT&svoR=x;?+=*cHn%asfROO< z?$4jZD^|L5adTL-L$-zJXlf5#pR@f=;EO{kK^B>$_#?vGOn&Nrx9z72sJt=|5$N@* zBe|o(lwt1tcBd6-i$+~wMuR^!K#m-?i*hctT)%6?OZz*-&4vi(|XU=yAkPFo&4!s3Sf^! zQOQPdf7--Lpz=o9%WlRm7Zq*byTM^RpD*@qSlV9{vcTQ)v~y&2wPvMFO&lH#tza@W z`^^t!gW*4NJd3C7OZ3iSSeT&?=*?&=*ot+P|i7& zixS8BUfxjSjxXKTJ3#e>5QxCHn8Eve_N5-oZbi-`Nlet%C5dY@`HNKNR{|CZ)sk2I z3HInK!%G~v2{Yju7)2``-@@9jWZSiu#T!RCP$u?UIUn|E9?3_z&dWvHkGu* zZwwScwi6t^-y$3#)+|mrUh6)?K=xbG8P>!}WxS^E)y}TSmNW5)?Ej#!RULE+nAey! zfdMBZinx+`ZydY20#g+hf9y7p$ENhM`AQapY=nsqj{{ZIjLlO}G%Y`WrawPJWg>mVF!GLa5fszF26k^f_0k9a3WU>IT*+OYUzzt~9H#$+ zWg7qjK)Ru1E2-#6sI^Lv`{1<|?wngs22{RL4aV4pvvGtD4G#Ftu$rRyi3k4s4bzK9 z(aQ5QFR`pk6Ip(`N+#9faQ1o0S3G|5H+>frj2&{a=V%6IC(M6Y?dLMs8W=BycNPRL zVmv4jTuN4(Xb4t;gLC(7u%@mi*|aWiG=H5iK;ix54?JK=b)iVyO1F%zB-s7x0jGyH zE+kBf!CvsBD1v$4U2WvQruLp#P_=BAELtNTaVwsyAUQC@L(o3gL}FAQqy0#Bp5^J97)FIB5ENi>6bO@sX8#^sWKNeuJ)0_X)F z>%nUX$mw^!qWVvyGbns!xE+$wI0_UX^c6IRw|zn^+SJXDunIi2+Cf%w$)^STKiPUVnIwa zN)1WSNu}ZM!aOm@e9Temuj7ifyD@QyTVpnX<1iwTHfHg}Oec(7V(+z!0ZQ;7WGiA4YlLQM(|%BVGh^Sb_RKI>sPHr*etgBL!D_aFAjoFmx$^0@oIy zYs`}B*M(>km)+Uz-*?l~O3hEyye9C1tXv894BmpgFUxk6pDASzt4di6G;Q=)5#`}$ z!3diRNMvQp5f#l_lXLV0grHQqAZJ7aAnt&LkD9w+u3b}w#OM;g+TiAlxS{Ul@ib-Tvk%t5O2~tnPD}OeLJb( z)*h54JjAK%`u1S3EN(f3YP>;q9UuwG$x88ce{jkQ{|XLl4LrWIh4R@(!J z-nV!*YH$JX?uV~R9{m5?$qi=sGsBROET&_3th|F(94<8iWz~@=0X+6xbL-|W257bIFHxrl))`m?xSC)qb~dJ z#O)KUdYO899G2oJoQAZg%Z%`f8}I^&Vwn;L$v|8;WE%k!ubVTOgYX+!NMAa8YZ7*x z1}(~|e*N2mkoRw@BOD=7GW%r`~vk z^^N$F0-RJr#!Fw&?mQq#z9utejJ6d${q+Y5n%IsX_>j=p55YguPKky}!;C?L**z;? zAjn`gWx*$TCju}iWiJ~rqP&e0@Yol}F`svf=4xSQQ9YZwDZiZX43|d0gOP(8Rboz` zhwkhjW0a00dKc4z7K&?kNg;m;It4rznyLfT+a|Qkd^orVdqF1GUBxavp9HmOY?RG{ zur_ui^UOi+#STwGK(Xzn`CkQ&*OgCT{Wpy86Y~O)1Op3^>W@^+SrZ6{=5zu2 z%GPe0kAZQo5pX0meQTfddsJ%UVlz>me<2F`kYs19`pZ6)c>_sj2?tqEI+!H8r((E6 zLeZAnJ0ef1DtL>4Y-J>cBs7^?ph=nU*v;b$t9%l8AzVmxlg^?RZ2gFMXPz5?R7T}$ zcCEFftRy?hzc=lEI|HUg)|j8zPkhU?dk5r;9fAQlpP3GWN=bQ8({&nlZK+6y-Q>ll zt%MB4;SZOoJcj;4_O9L705hLk}In#CNP64n!TAXa*XVo?v zEN^>N&TK|iDH)zZl!Y*trA~L=u|5F=69B?=3$?_1PamuO)Fba`y|_rP_&*FEVqW8~ zTh=C9GWz*(@`Z~o^&QJt+q8&=`A*dwmdY&bon}yDz*0;5neR>WrgYfb-y+^diySCJ zJ*U5esz3hTLt6GxXv6g~wN3O;0;}Z)e)$;p&&KCPO3tMeJf_ExjIgd|of?woN zF{jR3+6gjA>(GLX)}cO&&?3y54 zMFPI=2={DG>a&Dt9OAXUGn(Xg9SOY=J;XBu77>a8zc1Wl)yzmzdbz+S`FpnI&fQyo zVk&`-jf1_b7Qdoha=-%#Skm;>9@1Yo!Q`mNlog)UXjIQfPf>%tFG-%B*S3k9Yi+82 z>e7qu#fF|jt&>=MWJKdt=~Z#&X97p~h|w-(*Y0TVzvnnMkk4gp6-1F47{BBY(RpAA zw^7fNzdhs$aBDuU?^7r^Kmt#phdqhzWI}v^-n(|D7Z8YZB=QMpA02mjOUM{Xm_ZNu zS3S(!s7@DBa_r7{Cq2^bp^eMOBkp;O;7wq-l*b}vc_m^JJ%pq#$>^M5* zEy}lnTIUGu0)I>N3LE(=}F?r$~EfWoa8$RbKlj9ZiS1#H z21bQ_B28cBT8S?EY17TAiCa2i2n!T8_iG(LYWLBL3A=!b_Tb`@at#M7-!HS-WR+_k zYOfVvHf3Ma)GjNmk~l<8f%-462wKt4Bf>4zAUOT+fh+Y<2Cadk)B31apDtP2#-zeU=xb1gX_R< zuJ&PeJCD`Qn%WQ1(&2}QckxSjEU9zVOg~VwipQwU+4-4gMvWc*;v~EK`r}qd;}% zrviwUNZfTyXtV?vZIz^Il%kQfSn2Q>pZq#y?o{?_vFOqC*LYpM^_nSB1c4)w4ACa4 zZ@a?-v~x9pie@`bU(nYe*NacUFuzdmJ>Fkvdhb~1pef(zu{*ZJQkM=>xc|D9KA+Rv z**I?T`QSBWFGS?=!j@G%hL$)5;HxgBY_BEg_SYtw{QIW$1=2HXD z3=5U|^ou70Cq4Qr=)?H_*glT!@yTM>>}=RbLxf{wLx=72c~k{jV=yp(;E;nhX1OsU zmnaNPSyJwC5LCj=#{L+o*xv5>*x7bu&jLF{;1L*300hYplYKC^=8JI`Y`2-RpV=Rf z1C4AKw>p*pj;ZRtp?ER>YpE6<9ym4?OnX#q9(~Gv9bkn{GOYSlCFwLz7H9N2$|P?S zhCkV-wC?uO86mPf5KZ?uTrD2?U}cEZ?Tguil zn5@`euu9z^Y##znWz>#;1HGdtGO$88J*|E#TnTskJ#O3zpv`VwHZr+gK zA#kU>1(^fde4NNbW@%Xt9pF&gW4{%BIFCO`SLiR!4b36cC~OZ|IqKsQunFbjcK+>W zfsd8trAEl>4%ab^am6B@hDJ-(#@exOm$cqFbZM8$V(~ZqBMg?%p}cvEZv+EH{ltM+ z#|CesVpWMsxI6e1{JVkSMERBhE4{T+q^+%FsMgc)?W7=B`8C(#5QRc45Tf)z>ZJ=ScI6A^F2%-B!)?0 zY)LMOoSt0bug;U8&Ml66=(Q{PmZdp@Ns`5Wg#zOry#PkiaoR-5P#}^F$A0V;dI=ee z;hY>-i&C>o*9GRX81%P6R&(bp`c8Q9A3%4ZAxPvynX=DeU`=N3y6;g*16h4Oj!7(x zAObT!)hBQ8AY2XB#>;V?7VhsW89M}4$2NkVR^a7~ryq5NVmkO@Tv1a)6i%JG zozPCgIlg%EPGohNzX5gakEP%_bZcJqS!SlnaRC8$dz$6w_xjbKLYQ6wA4*cgfftp) z!&q=LjXmlFJ24xL&keI-u~h5XK+qY36B;zs46@5`gQaLd`Kxpocol@&nQ&L4@2g5Il3OIoX@WukWmjjZy6L!)7s% zpt=+Cst_{3p^sB};e39UN8HE6s1oL>lnQ?k@F;>{<4Z$+8`*v|DT!8;Ugf!o3-T^$ zM=F@PoLR53w0R4xmrgV+D(&6iE3XC{<7K5wv-{K&_eWnwGqbcWF2;mZ=xp+M zGHLDf4>5t-Yz+>o*%QOPQMR!8!4I@ICc=PxCU@3{2d#n{E-7ts zUdDKSz1Z!O{MGC&O#8x+j;k$O z)XP4I9_K8Y4ioIjqF!6dsY+karU@*6&Pgb3%oLz|eDzT(n-m|tPNF;UU|iAC+tlsR z{};lh;-YvL^FJRw+7z{5PVZ3ER_g!|aQ9d0KY2|o5@rCb;Z*$-vTjG_b}UO2xM{qL zDjD*9;0l-0PZv)xXMwx$0U0Z7ccxZ7b~8NVVoN!M=?0u#K#gN{BS%?P%E=odkk~9A z8RVl(n8_))zw4KwM$k0R+z9Q?MPD^L@4;$Y=7Sa%wN{Wq+_{p-1-F%;T7>56hrY=*_84;;l2j~Np&rlgF5 zT5hE$+jR(Vxt5WHpjsX;ZDkAHjK9Z1>sVu0tYLPV*E-2Y=!NMBSO<;`i_>p>hNyGu z4q@;50X})9+wBUcKdN)#j(ZjWX|1X_G}#@a&yFZq>xR7$v*VTsbw7vDSe5R|dG|o| zQ`11io1v7`XLw2-Nx3d$UQCaSLL{_Y$n4Fo%&EZ`zJRgv#LgQZHzW`C zWNJ4;e>~*6iA=&Q{cCR&Ng`Ix|145+sv^AP()(Hm7RpAdEt@DKPTn)ztMLyy{0C8#8D zKJD#0*w|M)KW`Yio?`=VWjLr_pe`jHBp_%sE!*U|k}l3Pf_Rj!o~mNd<%wDzi%J~^ z!PlR|!{rQCax+8msxR6oK=`_v42`r=A6uSZS742Y3_fliF#T#@Au}n*C|_hGBX_of zM%mjJ{J|S@brM2{<|7HUkF!!0oW9ppQKyP~*?%H^K=*!QrVQrXUXf;}i*nC6Qcmpg zOEswmf>`;07_E%gw!iEHJvZd{46A&+yr$j5SqbhqTG$T3XLLX{fcPH0^IN7}H{ryW z_05W$1#BlI$eyFjRyf>#nBeMVNr7*Qc&!qK0+TgD&wE$=I-Gq4t@h@HIA)ec*=XgO zIjTy2S6=|^EZ2L#m%C*I2Bu(Q zp9Hpu$9To8vh5pg$e(PRw{9d0Z}=`%pH&ZWJaqBKH-=SzfgYJAc%&Yq|K^5-UPXk8 zq!*f5!ow`zz#&MX(e;i;Ux(A781NgtT`hf~A9O+zMar@)lECK@0ssLj4b}47j=9No zKop0Gu!cr(->i&w+=rH0=sXMz=&)S&ddacIZXIXSD)lPjM+DBxv$#T?VGH1~={pdt zbtK4$e$DVQHPizfiQYB0NdnnUG`}SiW+A)QZ9(W9>hS7y8EhryE5UDU%+`N}UMTK`=O?FqD(MrnAhXUvc*Sb{ zYKJWbUy6&!2$Q-vet7rTAqTFH&{OzAOTJfxP>x`Rs_c9V#0tu8ZOZOko`Ex2RRgL@ ze#E<1=$nq4`rZvtfg{P>gc(XF%*@t=@l^W>jjs{qOGZT(A`2S_CIzeKbUudO1j8lE z_XiTIb@>d+E;IGA_+%y1U@<9R)Qxa+%@~+nf0j&@Ll-)Da(=H5&Jut&&MbU380D`_ z&9up;=aI$nB=J|F-m~zUiY7?0rej2sWZG%9$y9!0<0RZjb?j7EGbKB(Kh6FpnaT>( z!Uv`9vihsxY#3Z5q;IJfA%2p{J&Z?{mRqc1QO4#WUpol`R37L{2v^v0`cHgcHLgZS zUDobxG}>9`pz@pg$ZTdrtk14+JZej%&|OZ2_yE7F;i6C6XIgdwhllx9=+z_2Qm?s$ zSU!Kd_>`0Xr@WYIGc6Iv&2pVau)yP#B)46EflASn7A$xwr>7Mz?d-fscG9(!5&DIJ zXq7s^4)L+O6eo&7bm->_O18K*2b|0Tlt~ldu|Mv?6etV>Xza(c@?AJQqw)Y<*aKV$ zJwlmxO)SA80<=0zNR@e;j(u8hTwLMGzxy<0)gvec;OlKxXjMgY0ipdW`nb@IIjGYH zY$Zt+lGQ=U6#xk+XzT~~5-nv(kuF}Bio;oW&%18RkZxMSJo&A%5BSSV*X3+ZmST&U zy9`3Jnbm=P)Wco>yBqxB@ zLhD^v?3A5`#6S|rwUohA_WwNx1+u+jUtG){ga9z313Zui#onD}RP-EMk=vTW>WuKi ze%KNUaN#FFv3eQ|cX9$2$9SS8#pW%IS{W_tXTUE*Wij%xHi^rb1Ie^`!OS3*{k#}2 ziei&o83V-@qwcl5ia+2=-x{N-X<_tL{;GFw%RLXc=7naF;iA$bHcEC67?N}3tMLWR zC`rNxCf}yagPn;%i3a@1+hVIR$R1s@0cEWbXi~(zX68MMncgDKHAf9pIV0<+ecD zY`i}ApZhj-YQ59ckMfzp?@h1r4(S#;n&;gK--IZGQ;Vr{wB#6Tgu20IxH=+I;_|CJ zzvB9xn}7}-(}7ET(U zt)_{Jl6~u=>6rN8F~CK3IDXcXTY^(<;^6{*nu(+`9yv}dP|X2``K9h4xbm<0&H&xu zg^La)2?D{_nkIt}Ca?n}%%V*AprUMq^ySgeh*Qf))Qmm?XXhgQrIAa2w0`TkZu%K} z$f}OcH^=)Chsw7>sk+JKk{C6#Ro^spRcfJQHN9|cH1|nR^O&SNG2eUftu)1c{NuNJ zTPI1*0d|l`aY_=y&GIXsK^x)YARn(MxkZ!ah}9z0e_I~Y_7WR- zD3Euv+ZBJu5;h*(27*1F$&Z46YaoF+QkaN9{+)*w7bYl~7^&Xip_ezX+b$jeCB0xp z(-IOBTAloTF5-M>6&LJ{JOOV`Rn{{|vfIH^+!tkqGk~q-vcS9)uJiD^@)a;mSpa@_ zI{t_jrnLO^T(%49Tk!rliv}IN)o~4*0_g=loff)kAKNG52Ujc2xsjMstN#Ec--ZgD z-Zy&`Sc;`SgnY#&;MSU5>xA-O(#U-0FYLCP&!v28w=qWDJr#O zl+*P&b^DF&p503$1_>W}Sup-|PjMdKf!Jy3dyx)XdAtMH9X;x114I~OE^vd9fn}Fa z^s`Q6@j~&ZT7(^2shJ@Gd|cSU{r@Gg@>?Hc^;!fTy~}AjE!kNZm{K+M-k&r>SyQ4( zi{s14-%Br4a}c)yhiKNg2M$O&!-!*Z>Ft2)UbxoI$< z+`kj{B%(mN=rnqqqSfJZL{dz?U@m#zs4*O_yZE2m@Md7YN z1T0i3-ZVj*WO^3wY(uIU0n>}RnG!4nw#ZH)*Jb9!15doB!5bny)A5W% zWUu+r1NoDB&?y25!mEx*K*O{21XN@H=JlR?wVB)rVx7{pj&b8r|6-RM8C9~5ROzD( zli~W)dOhpCnlH@-x{i<%6X;B%@6V5AC(c*aEVjKzW6_ymos)y!k;&8LXfY-(5HbC8 zTrLf=Y%GYwCC?tdFvlNQCeK5Dv-@+o%L?l+6_6h8NQuv&sote_v2r0Pt)m=n6N7b8 zrS68Iz;)BXMV1<7XOcJiOIOOp{C=BwP*y6u2_UXVu9AsvYLs%w_Y4`?hy^!RkT<&F zVY+_0RDlQaFg{%+#md2<-Y$U?0$NYSu!*DrE`l5M3^Q;5Z7Ri#*_0 z9sS-T!U zy#qvXW#lc;%ZLTHX&Bef+GGbz`iLgV3r4#e+0+BF5_Makz%O-S`T6+e+S zx!I0b&S`w<&KwN&>4#~C2h8iZ@#kbWsPuco*b1rC`cz}#@TuiKhY_HQyKXP-5J`Wb z5ab|mgAY;cyKpZhNp#@0lUSPb`ZusNjDHnUeX6C|Js!JmE|T)v+jnTF{(r4Ne{RFc zuKW%7Cu@mY)uyvXMde=Mp^l2l^Hp$gF;lw#X^jnITR&!6MU97k&WqfL(Q}|U z(WNTZ$kvRs^MjhjgEz<#7gS2%HKd8HZ)!KKxOeyO`#Yt%f60QNZ#ShiwR@d+u&?NBE1Us zkf^7)qHR8*!lFn>WBeC@@yxiuJ2-bz!Iq}dE;I37Cls|1W)O-cbS|r7*-t<7saj0W zKqQ(mn-deyyB#EdX`^%Y$ufav``(N#K2yU8uTH|osA1Ev?SPaP7M;(EyvcJ8bWH2% z`H8S!^j~lGy*}*)pOBq#a6c&LlFm6 zXI&!BCws+g7uiWj*UOPbrhXOs@Lw7AFer6U5@I9-B&>0p;E-e!(d3rUcmAlX`#}-{ zqM`;$HIUxJfl8kXlx{uglkE)7%(y<{Ml&gJNbg=oH$y|{jE_ik5%qavv_W;lG>C1} zle~#7`PwJu$9b@E3sD_|@GNm{#vUCjFX3ADnwO@JVfgObh)B;h$XO=IiQGlqug?#~ zB=hv?I|L>eVBvf#*;4@<7`*OkE6u{j)PD0D^q?E@Deh+%Ltub0qK4z3r>*-&9WE^D>ynf&r576m zEfS!@1_IFl8lQHzkU5?ePKLagX=is5`dn_#t$FXw6;03i5mB{Gynhq literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508192002-Config.rsc b/MikroMaster/20260508/20260508192002-Config.rsc new file mode 100644 index 0000000..41db8b0 --- /dev/null +++ b/MikroMaster/20260508/20260508192002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 19:20:05 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 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508192002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508192002-Diff-Config.rsc new file mode 100644 index 0000000..57b73c0 --- /dev/null +++ b/MikroMaster/history/20260508/20260508192002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4296a4296 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4305d4304 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4306a4306 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0