From 641615aba7e9980734c43bcd6b6b229f5ac48960 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 17:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 17:40:18. --- .../20260511/20260511174002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511174002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511174002-Diff-Config.rsc | 18 + 3 files changed, 4671 insertions(+) create mode 100644 MikroMaster/20260511/20260511174002-Binary.backup create mode 100644 MikroMaster/20260511/20260511174002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511174002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511174002-Binary.backup b/MikroMaster/20260511/20260511174002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..bb2838492c3b1f39f42163a80264c370ec7d4a0b GIT binary patch literal 302647 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�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

R52}?^o?gR7+}&?IG2`I!+O`>202~6^P*#9 zh@hI?0ymFVvjUf-IdXA%hW^UoK?|I#z`VKOJFB3DHaWdV5stL@DYjN07r@a*CW1;# zt&7SF9R)upuRb%SW2a)9wokCgH}E@YLeyX8Tbm``je!!9^)2Xc1CepI5Z*zLf_g=I zD`ljPuGaZ~4$namEi}*V0S2_3JvI-Mw^)~)>YErNQ8RZv0E^0vZ~sr3Bv`Ct|bM6<-#HMQLQH5@2P^jN_9xehoFqTOBe^q^x+~h8Xkh3}~Z)8ixQR(cK4f0OCe;l?^Nc4Ha zpJ7;R^lBW{BzL5WLWxueLpZ~|OSa>}-twmgjN~rV?E%(C6>U?sZc(GaXV9z$_c$6T zB-2Izg``q+R;5i2?JPR)9gBfHnR+qy3kB!2ur0p!Z|>Ey{#^(>ipjyJ&^J!eT7!{k zpPG3HSv!(OmYUJCjq*wnng+#;6SZa}{49AdcJ=;-C|2c)n*G?i?6qWcpNx9#E2GEd z&E7`giLr}(70w+`sNHKF%#JX1faVYqTFfFfkJ-l<{1O_T*(k2L4Q=7a{@Hb`Z4*OK0N+{x~9q(~wuSlKqeNX1;1b zi`fm#!IyAC(C~EEK2AoeL{CF9qqFohQNSv!)ekT1NGDCt!g+F+GU0VYn&Q+)bKws` zzhMchUYfACj#`0ej0M8l5LK}ScHN366Oh<4SXi>b+#1IM1%hR~sUFNuG}i9h@)tG* zQX$V!(~;d^tlpZc!H0JA3IiqXwNf9q+e^8j0h`7V@G*itS7h{LP)$%5q4-Bppa>1Z z4j3ahV3cx*7GzwX3_B;GaaN~Ba^RK7qMSW|EKkw@$Sb%Df()I@mv%l#I^wcHd2!$z zGPDAb?=!KWZ(AzW*ZYK{DLvv=`lXhV`iHZ=!_+HF6(%c$taPKV<$C8vzjq!@ENhyK zOC?&`h7DN@m%KCSNu=26wdAopR`0R1c38j?bV8i-c6x4#g??mHpbKJEpfg<~vn;TGQOf$;t+zI{w<^+!C!!pLW6 z5pbRj?}oS|wPj>y4u`;W&EZ{1!ClObXfj1On?K7+r=ELz&kF#M1~%24OUE}>qJtK1 zfYv}S?7jT-XPJb^XmwtO_#8YcA_Zzg<>h;dtEG<}tet#odn{Et-Q>}`)sVwtgiS4xO`#pOxJ<7vKvx(Kgw8V<U8153%jFnc@-N7vw z{BeauT9Mi;a3;fH!_RY0KK`Xq*?rIO6!qMjZ#tPs9IrY_`mG@s0*ayo$@J2Z?lf)- z{T!|}H^UogntN&*4*7S1i!+5X{N? zFagIyqh6SK!B@t2f-P&skC>TCvFA)DdHJsh=jRGHgR2EjBC<2-Jurh#5cKc~g2u9u z<|3F@RHOju)oF{m$)ljqdGp&w6vI*x*WqDfu5HhkcXH`i)~@u8zkvrjCq-9$x!L5z zt+nXlw|1ti{J{;jnJJL*l3>FnG%9J^pLmp%ObbGFf&46X$MM!mw|oN|^KwBxI3=5M zZYlArkri=1H0{l5d-#Uu*pu~keGAac##r+Qa z9ikcubCDp!kk-zVPtuWBx$5mS5l%KTLQk1v7#_DJ8pE8wl&HZ79on+6Tzfs>wrd{P0;M?Q3r;uvAQ+8edZz>Qqzvk}B+vH<21 zo}Rx_%NPprSTweLmR?$#gYp7ly8SZDYJn3|OG%V-r+@WoQwp%k5wuS&V<)opI}3B0 zHgUp5a&Q~STd$luNeV^HoA0Sit000b_6}edD4oA$)2SIMqH+!tF14W5T5&C|C>XdZ z0d975{~|!4B_fG5a6k=I#?et+T*>v$7n!&bMC5A`F$=;&^==pPpA`mO=DW9!6>uv* z|7X~6(h!TPFmodtC{CZCMDV8U^cYlN)mTy!)3^w5J1fWZy}otIMp`I?j+B!2i5qPh zU+(5~`x4FCYQLkZ>OwMCT@E0*X9*o&jaKmiw$>?^sisv7CCtepewq~khOIDbk-WEB zCNC43Q{Qo$9`uq3+l*t z;$9CaMtMa!*NZ-0-PI8r>(7v-GpWtBh7B!(^E0Q+I})R(910P~kjb44{I8oL0r zM&IzmYa{nupc{FSFC7SL4se7Wayf~EA;clesqRDqB<>0YkcJliWl~#RL?(iSbfth~uUSJ| z+qkOn7#}_4NzC-oGypKpLuWIEU=qR>d!MKj46L2{0eAoA6%N#$Z7{+9X7}i%TXpM= zD56yTb6e1Es%H4?Vw5p|h9ViY)6FEI(E~$#gG1B3>M@}z1bAC|`Afpc`D;=Nd)n1- zJVCVRJ5o?>itvo1GOMbzh_&E@85J>mg00Cicel7o+eWgSw@ERq`@h~Y7Yh5S@e;hD zFgAih?E75av0Ca)jQ^HPQ&YcU)h97xf&q0#_(iAokxt#$75BSYqhVYa!M9ONHmh{T z(k4w}gTQa!!q{pLHs4rtADC_R>d7A(=vv{c8!wwkX7 zdxkFMcnuv!9nfRL{i3)Vp;BK|@l>F4B)4wQWCk$5z+2W6Uv0-CafhwP5CSe>63t?y z(=gj*!yfF@U(^gTbBgh@;*iQb2T6PWFa_353+GU*Qbb|D&e_4n3}v%ta|f zspfq!W6dO)C_4$ljG0RDxBecrKZ~p2RcXgHw_Z3ASxS#%mkbAjA(#g2v?N|pz+k@w zGPh_<|+iS<>?w zHvAYFUve82y9qxhFu(W;UF!NxbAA|S{>VS-V5*yR80)p!XUt`)+&3qDRN`k|wd6cK z;JI3l4i6j8+v_{$3h2U~iZ`~?p(vz!z3@A(1>~M`*5HNoM>8C@taa$X3F7=95De%t zIPVMyQ<>(ZVDfo9^U>U^)YI4*@yEbbPA+wW=H1E2@%;1Qm(d=^CG~9^w=fFBD^t3v zMfB67(DJc2E0v$emGi|>c`veb1UTWEiIiNwAg$y#YJo}JVN!vp#g`b0?a2DiYRN`; z=`F*>G;+rRLb5J^!nXzF>GQ-G3q^V zOrupN^1A$WvXs2Qi4-KB#6B4~oL?v@nPNlDhR%-4VY)5(78~{YO z6`l3(xuQ0?n(fjTz++yZIeGGis z3gX|kKM(Qqw}9dK=_d187cA0(l*a~2{*{pKZK`yz(be)Q({qS{kt`(7{j)wTY9;NB zsBa`s(pN=SZ3vrDcdicX#zCWyTj(e03n)CUK@p^Au92Ll;~k=?6t)hQdoc_$8w{GS z>bt*&P(!B|WcGIC=Ddu#RLhZ2pJ?rDb@_26kTNtN6lEIO`3$9d0Alk+(?f~rDDzpg zb8}2(U^>e4@%qCqDae>vyT?WNu+N#2M{cAqjK9q@7EHU5<7T_2vCVB5iivB}h-HRZ_JL z)T9mMLbPmkPwr4siljvxDyvh=ar<|Khvdhz32o=3QN;N)q-uJzxwT7Nn;r} zSnm&`IGY+@1_ja{MqTz+w4Z{8mE7$#oKP9;PzU0_ykC6 z+vL^lb*D{KD-I`27oAI9WS6#Fm&K}5c4e3v?VgIIX;P$%E+KI_sY*5wW2FO89&&%=$9AMpwi=e%mG`5=LZ^m)C;Y1Zw}IfvVGizD-9u)?OCJn z1kaA`VL>WsYKXFO*+%8$7a1Lj8x${mNz_lm%DK&MuyHk!oi;TLFs;Da>gp4g#TFPm}mwi0KLpCh>e7W^e~*?YjJ z5N>RHI5ew`%0#-qV~5|n!?RyMy@U;r+c6>@FD0-HAKNdE9(k4#JZsrCnlk-2hB{pY zJ6Q`zkE_hg*<22sbNyWVqyEkfUKl#*KP>v(cn^MC{&i1U{aS$9EoMsUm8Tb)%MA`d zuO*965k?nj5zk--=bTaDV#;H?xEwlBA?ZjT9J0^N@i$3D;4xg{PC%h5PsG`s9B@s~ zm8sh#*Ir2BQ(|DSGm;^%iUG}(7i|YP>f~3WA;4ddUXW?RwM$=bYrX#G_w-K2))aHS zj-;QUxv|N6et4OBaJjK7yn`+U(|l<9fgeGXc~Fu7wT2c419!8^sFchIyOH1!@Ww%3 zx(3uJP9#*T?%Ug8O`yuk79iPhrVN54Dc3FAO6Ov~!wB-XUC)I+ji z|B|b?Q1eE7_|&*)nP5aVfAP2V8|=B%HoO?Ydpq6KyyGgN@m7=Vp2&C)v%`H7Xjv)~ zC=TWOLlXi9xQOc~agLZWS;NHSLhtt z8IjsJ}~HQPq_9Wt<+8m>sywXjcKq_Kx42V%qNJ_qhrfUFSE{l@Ps9D49x(z_N2Ht+g z@M#A)i0TU`(*6eWzN@LEjKCbAXzl=}x=T-HSNau@KS6QiQS5JR9j-Z^(JIZAP%m90MMclCGd6-_f-M zig{Y2M!aH<#|$A)r*-TJ8QEOr<02`^Y_&@VobBPm%5Lp~3X|tAycl9fL?!bmLlcaF zd;&E<^(i9)H%hHNodr%;5M@_}B+ns<=p})ZzZ+hWih?lUav;=>^bY#>7rdvBD$TUd zw?&vbZ_r>HIXZ!aw|RWut1RHkiZ+D*0JrO$VVx@Le@feSNsM$xxcOZw9Z$}c8cjbn zeQXK2UYih`ngkav>aa2``!F42;R1Yhfk|&o?0%*2z~@k>0yTTbnzI`gr%qxTq*;Y7 zh%rt?FYAix1E#8Y@3a5TCtq{GL<*ffuOMpI!;5>iVIS>df`55oDoZ%UCP^ClnNkd*L+myNWrj^KF>kSFMV zP#09YmH{`i-SG1JP7P|rLMpgpT=<-L74tovR7FY1<{;AmG@z^+&M(!iI5Rb~c+~N> zRgcHF0pvqcf<0XfyRBcq@K0(rBBlIWT;w&fJfwFJqfst6R2DqGM#3oVUpXeP(xp%8 z8QqXCtMf$Ki$ztWC5zaH1SjrBO_J7Oj<&@pPQNhx8a%EQtKALD0h_M1^ZZMNlLh@V ztN-C;qP^yG`~Ys@QY5ZF>*ncmolz5s>JZ6FYU5fWoEJni&9#C6KxUXHK#V7B`RP>9 zQu>{m@~kTMQoo9c8IPS1Wv9YZr>^qPA>0==l~=6luckd_fQLdOik}$oQs{jO*D$D{ zu9^E~MhzVd<)iU&9PN?zx7$NzJ;-Nw-Vi~sY~#l1cNhy(B3gj6yKyUEY@y~$@`Z98 zr{j2gr3n-7?gco_aI>SofFW(UOtDEw_*70Zw+3!P`ZQ(7p_vVG1Z#ptCCS_d*=tbH z1}Ad)f_RBV{%GO_6+foXPi6(iCMhfOITOR?4e9ypx2Tjli|c~oLa?;7)*dU_o#f*=6W=KG zXO4doA_(T7wBi{ttAR&FC9=yc#RrxHD@p$&)|j0J?T*PmcRiNDe&zCOGcYR_&PR0oe9#oBE%A%6N;qz zF!Mh)Tvf+Sbq&=(>zPc{n9~C8orFZUVF`{KnJ(vT)4(EHcuBxwL@anlTV^2ZFtkeB>Oe8EJ zEYDy&BHCv;BAeX67qa<7n%Hh<0s(DKySS(gYy zRqv9Z`0Z3Md1gSN)-&%;eU0Du~IZj__+U~JIEMORR3GX)Q z%-C3kNA|($2{0m{?mn_;9qvq9eQ4>$3qHoLE26m!I_mV!w~0P@PryOZk}h*1(97Df zs8z$mK5*TP)3u@;b$)}WU77tS4CDxR_tr@vM*qlwJ^(CwGb3|)=3;tcbZ;RRpN7wT z8jnTNWh1s54CM|ch}*W<4pmthVUO)mA3$xauD9-t+Cf!YuG$(j51A95@B!#fy?^M<|(mNP|H=WNT+m_R+fu~bBcBb7> zc0Dw#bV`tE+@i}^D4)(Gh?l77fNW*w;5B3%@P|)Vh*nGO6iKx;1=xX3Ce%M~wr!PV zIgF05?OSR+>7eD4QBziLMp3h3cjlLf=ZnL;)+?M>lM@EM!uZA$$mQH8)SCS!;m|}^ zI^9Cdk{ee!-U{WVk$7wuI*9T?_@J zrFQ2=ALfB)V?lI%^q!d#on6E63j$g(WIDeJEYfs$qL8!GeHkDIoVz?*h*W&ccyIbq z&4JlFic|wEjC?7OuXwn6V=3I~{tHsAk>T&of`(X%eSD@{PBC}WyfKQz)(wvk z&p*no*yKIhNC~?30UgrT+O;WrS%I`QNQH!pUsaLE`9?z$h{!|6tpC3I&m}GAkK;dI zo8llMbe>1jr0`0_FT-C%n=Y9t8%ju-@~D2OEkm@&oPbc{KWf9gFn}<`JAD|Li5(`Z zY(AXGZx^1qI1FZxF4jio&jWM*<#0g)gSzjRHT zv*d~YxCnU!H5((cctGT>(MJxfA{ZP$BWmkDNu)IshQZkp@8r^CJz0)^74c)Rz>HfUt?#rJ|;_KOWX zEzY5pS%HrL(Se6=u}V+jIRBDj$W|+OAL^0k<}zVX-$Cbu zL}7j`h+9jq7StSA_el+1GMWfU8)HD`F2UdV)&YIxT07e=3pi?GSkB#nH-r1RCsW(TbWPMH z@_^wK>26;elF^#&~T|oBlaT;Ah2KFO7 zp&=I~fAo4kRy`aO#@F!;q^jbJzh991DHKZCafQJT92X9 zQ^In#`l{IR>e6e7>Wa;3W|QR`D$gnCAr{XT|MkgTZNt*Yz+QZM4m)wf6N!_!X=jyA z{^ekr`~LQeKzxVzA#I)tAO=k?x;7XC8gVV&iXfI6$vG-UntW9UHpLk(d2iq=!WB2LfcKjF zdvprDA79MDnqqBGf;9iU1WdsFiz_VL=#??@n4<93LBwLwSXRT7pfo_Y+6(<)eIOQ0 zQt6^*!ktsq`ki1n<62o2>@8Usc#WvQDvK$*2PV6+r*uS;btGNP%$2nrh4_{0!X@6+ zQWGSU3^QSKuE0|eXoG!kAcZySK)S}8KI0Hid#PyGgUK|Bi;L@5&uE6oqaJiPxq1|u za2=YR#wULSX$(paoAZ8mI8wWKw#2+sx|XhW@H7p2$D2EARJj$*_h19LBSqpE1|g5a zx0CWjhYj90LRIld`@zQoMX$~m(ZN!z!Ht@>e10y^@gSTKqp1%T{BjS2?Ifv?QyO#W z)S0E^%`gz2uht>M43BA<dv8Tc}9Aq&CHGQt>y4L#(;uNF?PgRt>3csXcf?G0?j$-L)ML}O^i@yIia zLfM-O(-d60k55{YiI|FdfAq?Rq&pvzdfVP(dzUFeQ`i!b)Nc#T2A+|z4U!$fYyqKA zGs4Xfh|q4pM!*=)4}{1PH6%+u%RZO%I~Pl}yb>Qpuc+Tj5(I2)1hKGG zAk8c_O0Apq| z6^{D2=%H${3fXpK5?r;GlTM5%dOqoQ=IdW;oQf~(vo9+Oh2zLWi)*!;!JjV{VE z37k#2>B^7=BcDafQ;vK59R$NxK1kb3b>HYs@aL>=4;?%B#%*?#QOq7E!ZWd4njvp} zPL{Wh1{7zh*$%tM3P~AZCh1Y<^_n5Q>yjg1ey^|j$0RhNN zy6Anri6v+gpQhnH-Xcsw_y!Iv{>PCX10aQ)35d4GpY!5plS;xwMOVDq%d#-h@Uma4 zQ|tv}R23qB?$i}h9>z7NK3r-6xG~abfL&wA*3mUoq$IKGFWeB6_S4!no=rJDt#k+l z3X&6MWf24Z%OUIBTA{TLqV7O6E<)AC*igqUp{`u+fkImFeCaF>K4W=`DlX=fpqr8%_{1mh+Yq*6myp` z*)aZQ^-Fe6|Kwhb2%x|@WCCBm+Lub!2Lb14UDYi8rRxyTcJvw(|Y$$ZRsHe)Z#qW(%k{u+A{BD9BAU3AvD?tiU)H)v^Qio{3Rf z1<&G=OpjB=9-ER%gUu{6@|ZT;s)@J2CX^90a7b1qFL{4Y-NC&272`IZ?+_eacyn6d zQE7fXxmNvL;Hl2UKb}>ozD;ecnnx1g&3aM!w$d5>xLP8JRWyIw1eCrM=$bf1-OK#_ zdU6&bGm#(L2EZ76LF1&1>D^=4f#TCTIN}QB1%lJq70}U%G?>LvOo-EZm9ZW|u&sKs zgQozHRZdMj$$J5Kmq=m0qlCii;Vw5Nd{LH@Gd!VDHw)|mG*Ln~opV0rh%<5mVhwN= z1u5^V91KH!P0Zi=jy$*>h$0Q!EFD+yJvG|uyG+U^(Q&Ua42fa)`Yr3ekLbP1iESGx zg)fbcX4k)v>~lIt?$_X;W2*7uv;Nsj%QssRR3z7{%o;IX0yAUvExGmyurX$$+RNkm zYCamskn)|n#U^V!hu`zA+m05G8BLSQWt+g@_O2z~I%^)xjUQJU zB;odOd1pw1h7*bNTGD@;rr&&4x+r7y4uozqx6PtR^m4g%XAtf zg2CGs-adXgeF=!Q8dZ7FSHnq2OK)15QKv;|GJ4jm$n9gjnLusgcJAz{n!qONv4c3uxq2o;jogOhmhzKtv-S z8lUQ{%339oMQ`y7W9}id%+PJgaF%yJJ+Y9Uq_7HF%to8Ll^&SsECG7>xAwP*NdR50 zL;@v3)0T|5PM&pBHlVpSB5fu0c&X8mHtIg1{5iwD zjgNk_Tz7Fm_Md5h(vv_6O@PlWxoKdRfeJ8LQT3EQ&$d(5gn0UB0Lb*i>n;DlEH9g8 zb$x>1H^8v^jk1<91Ru3yv2+_L)R_Ira9~?;E6RK~F9HC=(1ct}VNq~yR{>{a^ z`x4B!af^&=h%RDH9!LezLc(22#q?EebJXJLpuY=98Zzl*rsrFzG4dNk56FRu%148r zgXhH0v#hbr9Qf?8OF=|gta1e=Ph$g=OR=euo!a{2Y;?>nYJH@<1#lzMlXl(Du_sYnrXs&J=Ko{a=n6+9I0pB)eD37|hvDSOZxvB_h5 zZM*EmI#d(7Jo+YF%o{2Mj3ct<)0Uz{IK)b)(Mbn|Dhk!MeLQY9Q208Mh6@FsUEvwT zc@M~^i6Bb^HRnG`F6kVFh@=ZpEls|>iq$kFOD3BTxaLn~%HhwXG6R321n(8s?Z2i} z9tf7-)+3rCqCA=%>QR-D9fzOm#Xl73`35e{AmG?1MxK&OPxKh;Z@DVm?rdA8Z2uzz zA{$!b4d5X~LzAcf)W8m)I>NKJUWO|8P&)l$DUooWi1#&;SKjU#6jWxcFEt_X7;uX? zW>y;{kD}Hd;M9q}5TRCDW_hh7-BS|X*2-UcWjPKvPa#OUaF7E0egM-_i4|E)4Fh)4 z_fR#>R=4=7yE1I9xkmo=SmftqUEKixKLEf+IX)F0OerdDdj0eA%pzk|`2|Nj1hMYm z+LG(Vyc4p8K*X_l4&=D1dGYNa1f7j@ZG0&z=q@uQpIZ+0>X=;B;oQ-p_y_ zfdT~>vlek==!M1dHJApNZTg3t_Il!6IJ3x=hkDU7WH%2GP^jOm%xDDv@=#vfg)MDn z$$H>@1eLDLpudXk`(=zTL;zQ3(#@}mohsIO-=Ey#d*Q}*3=CuT(mP>w#bS>lg@ zZWQ#kEo|^(k4Q?JiSDeGF`rrDd>osht1VRpvr;g}S}U%rQL!=?&kcLU=C6_QJS*!8 znPe4bLt^>{n3ZmIELNp|Sgq4rS*KWaI8NtqxI@icHGB z#-~9_WzB|v<;jkUMo12fa^~UblyMfgG=K_OdqRNwFI~Cp| zZWgF-cXqf(ydN5Wjg8<&UpxqwP=Fx5^=KNjs0{&IP~pR=NFKE$5bQ-%x~nheE@`vS z6p_x^fqlu9qvJyg=9Z@ud#)mhMh{C5hkpGO%+0)QuzCVH6+!LG)zRJYq;(8Fk{l3_ zut%5Qu_PqQm@B_8@Qm7j;JU<9oiq;BHNKPyDjU15{4#Exaut)el&@YPWS4`BefwUh z<5@evlU4@(-oxL^s;L6LD4!UFEoo{J&RMp2zD1sLlFQzhx%fznhQnH_8-YZyYfhz8 zOWFUu;5-=u)MPTa;71a1aqs?XO^WIPZUmihUNB~eip2LMKk!@m;CBy}M z!_Zyn#ujl;iQ;BwOVU%wzKT(V!2!*ZU3<+P%0$a< zm4};P^hGPvDs3=#X|hW5@1O1stR12<JeN7yk zx9ZYMQFW~nz-%&rFJtMXqzQms+W-5Qq4`#DI4vGa+H zc;;N(KImb^eE=09oVDHAku`bVIE?7+#iwi&1x-`?aCqXP=9uj+h?Wl%{WqYK;t3-^ zOi7cNl8Qt9j=0HB{z8>Q8QWe+$W z3u<121!$=E_1LqLZl)g98norLXA_QMtesM2v!fP5ju#5xb#GPW%_c(Fx!JQ)!A>l% zYDs01U^yBiOIblHLwsY)fPh3pg^KEr=eS2Nv76cLgvaXfSmcYYb7!=94)TDs@?k%U z7IUcYu#?!b5$Xfp;KmxC+8G?v*%nSs?s38J@V*GTibZf7$H*9exPE8gdfL`96iRlo zdpDn?8$cz7azpP^V)p+UFbJ5O!e!fT8%&ztxg80X+=IR0cmVs*P}=X;cxVD6tHun< z$YyFtQfY&aD){t@*AWq+s?lHPR}>|bbh~*I)f(*AJzD$l=MMT^2s&KUU`rTtzm|zz5#VO1hz(7Ot?G)4h z;$-f)+323*cAhP@y9yI$O6GRAUt18G6lF0|uk@Cc6U~iG%Oa1REHm z8}~RY*;}%r?vOd=au2*c9Hw*~BXHO5V)}7(=th2obPX~Ac&*vx`2O3R!9l)&2hKB0 zMrW~K)^H8@Bx)nFj0}KJ12h{!c86{(XEyh%Ep9Z7m@0~R-11u(s9DCZKB8UrO5BBA zc>G1u6(J^bVUX9V7G>k{rk$N?*1?Z`OgS978*a(eDav6_za_N=2iM_(dM@wWkg-OWX_Z>s4C;K+{SCd`#ZM zrGOPNV3(w$12vQxU)^7s=HyJQTyt&%h$coR>t}t6CUo$LegMx??x|$T?l@ce6BOt5 z%w(f1`MfmzSWh0@Js8ArOHLX?ME@3E?RZnEy~SPv7w!fw&g-X(gBU}5+;~0+ySyRi8U|M~I1;`|n!kqmS_sEqp zsve)i5cLS}saM0g|D4(kwFu)xp$rsx-wiWh**AvRo z*_@M|qPC*^Yq<6tm4930iFA$yDVeA{!+Ta<5N)T}$X;plZm8BIJlpk2!&Q`STc7jo z>%s2sH3g92hXKsVhqMpPoY~f1;khsT$MJ$YGet%opa=p!Ul}DQQw}+e4e2HiyPC}$7fPY`*Ex%T};w|bPeD5l3WU+(Ew;lch71b=Kr;S22~4ps7P~}1>RT_agj%Y zJD#EjLVd>|rs=vb_yJSAJ~XMS!3z(?;Wo(bkZ-bJxyIh&r0IY1bcBBqz64A))SD2Y z`+b1HZ^&XOP!<7p@4}Hm(#gRi?t*Stf*Ik+I~87CDYdGuIlnj6H___ilQAG6oV#MD z)gIw7wp%paUF~LUGG?5&9GWRKiS7@@ydUuKrXIFna{(mB<`%Qn(^?MBLPiT~&24i| zB3kaQ>0bxP;mtZ%t#sW917YcRD}@&LME!tk>%)Jv1xBn*&hSHxp25)j*Zkz_!%v(u zRqfHGDjr2f}y#$x<-6^#}v1Y ziHiR8hyp$CyUgRUh7~_TEnPkXuQ^qCdL8W*%LTwLJc2& zzN3Ae*!fCin{3@9eM2t~OvbL5cvJHZm}C$ANKZ+q;#ocaMLn+V(qMPRJh3-X<2QU@ z_5|ezn~FTewGZwdn?+z&Ywa868dnFD+Z7MT8Qq zsdmZ%vJ{%bM#%)1wdkA#h<D>T%o%#%hNAp9pj)mKp_+M2nXd&kbW@1lA{A@8R>)wu2tXh5N$Hm*X zaxqRKd5^@UyNyO!#lKtoj$%VK{x!7eIz3X1(~O}-Ao{+e9T6<1pj>cUDcL%?meays zcv90YbJqEUcjfZIxzl2(bWmsSTbi&;x0*}*qJUt(btNwj*m#4-h}N-Pkzsm4`FK`Z z1=I)c1rgOEnH=8kBw@fw9Fiwu#}no~J2Kt09S?H7p$rTdfa(B=nTf17UGdhCLC9Y@ zfh240nM<7n%vUY1t{wd0g^-)-Fat$o2qMh@4BY22(X# zWez3nM;oy|U_Dv7efvY@OUiEr0&>u{PKs%d4n%p-+ zCab5{xnHm+fbND>Wt%z-V#IV8)8x7Gz66hK*U?D0h0Ikwqmx`!j&`Qp>_b3jgX<~D zacDspIZ(>4{Fw-9Cs>f}c%&o1VQW&-?|s4wsATn=y2`;{Y6}m;aMf$h;FR}33-<*O z@{ym^Gc9MD`(f6@ynLMe_`UEu1K=cObIIY@gdWtsrv%vT?6Xw2f{4)G@WK zx*UQQ5L}F>a{|OJXr3m#wc}cPU_|!!$q}p=@*S~nD7JtB$T50Z!v3a|G^H=?CDM42 zKe;!HH>d%;<{OIurAsF^V)}-;H@5AtO*cwyR-K=*4*xfy`qe~s0tIOQ?u-#^i3&-e zkN1^S3x=PPL1vALb2l#ID8h1ZV5o`}nCc}z15I15eNf8vg)P#m5Q2z$$*YnnKin{ z$l4}IJhew*7$Xo~%a4K4t4Y((u^cF@+$OCDR;eR!*RnD=C)2pQ7Nf~wvu$b97j1(> zpd{|$AAHz}?~ICf&!l!?+D7&+)TtK(314AS3{+fBNT38!0^{!zrKFZpjz@By`k;GQ znK2`;?20upVlc`x;wn>} zvf%>_qg?F-SGtS}m?PiXa%U{mV4Moy(jVYPMh>xKgIQy{r>Ke1ZhsTClcgV*#YwZ) z5-Nm$=3|OeW*g`EOQ9=HJM~hN_(miM@u$H8-guG^nE& z4RBA;s(aUMR{&bjOz$9N0^XK?7%FC%p{yvGU4o|o2G5j;fEE!iJ$|qs-NfKm+o&hNyV^wjYasrSyL~v|$*HXhzvkD~;!k3pDX709Gp|mMPtL%3PP%Wx(h5 zjjbQ7y)dil7SmK@D65JP=U^Nl0=@`I%ySaWDo#+{`APK9lt;-14SB>vqzAsu&fiP< zhlO<7gJsL+@q-I>!X3hiB5wQpZ6394{1$laC2;eXub~3(iQ(r^p+EE6|B_(&vD_T< zi|oKbamXAOS?IWVzJ`_eQcN5Kw`&vJ{H;JJ9-~Impb=Bit%Dn!NM{gyrTS^TxpgIT(%Ondxl7hHMC|i4wT7!nW zYZMzqO`_$~nZ>s)%&Rt!LCHtkJ{{*yTEu zP`BTnD}!V9?3kE|+{mTA?kxLzr1gXgpVNy=dmE(2@r-mRzCnSEe3O}LA8~VOiu}PM zD%FtZ$^4QLKeKO*x>^B6t%J-u62{SOX;j?H zlth?*9^`3Vxm*gS9VRLIq+wVT2pgDJG|n$ z4K+c@vm3ZjIP%$i2S&|UbqD3 zXEsU(ZDO@^3^#Z1Y)_I4jugFCo!dAAGl#zmlGgE>QbCH8*y$0)uXMVq>e6y%f1MMl zAD}n6#hB-t$3`BRV-D<@|5{Ue!iolum zCHCfDd=6)2h}tgX_MLG5=sZ{BEbYDxv*-VagoM1!vlX=33ehKQpD_D{mn+@{My-G1 z;;2rmIj$#;82PZ|T!`}P$#O$ryr&Tn|ElwOujc+H>?Ssmc z<0{qtFc*w{kKS(LkgvT-R)nB>t+zc&VP% zm{~-%Bau-8(hFRjYyl0rjmfq$OlR=?i2ISJ~@IJ>340ooiq%3IaO{|G1}Cm zQGq}ptMD5(fr24gapE(_eKg7sgw&UtwRRz?-m=#okavt%k>8k#_1xb7dkvIt?k|Df zw(eezhD%Q2bxGk1#U>)E|=I-bi`P-&O~8G^$t$7GhY%oFGfcZ+TqkR1v`HykB?$v#T*GnUIz{H*k#`_vt4Gk(bB{Ds5++O{+ zW9PCTcd&)bpCO}*_o?Uj4Im1tE zF@Mh22!sxffw%~)fUc$dRm<^GN zKe^^zN<;nq|0Dw&Wl|Xe*xq`b?DNs*@Ge0%ZHhF!U}v8SBu$aJfla}^rE+`6>8HYI z!#s0;LPlRKeKg6qiGd3#)0zKcvUj}$AeKzT^e#ndl1}ug_j6TNRmm=I{F!BKq%RTn zrYgd_%;3~K(=A$HKFsGjEO`?2 zRXYGDkb5SGWwZny)G;Y2)C~6ty$UPOtP1oJ&wBh6!;Q{LQJY;XsVZ(ScaPN+Kt?hR z8jSYtih}f@dk1D6f3#arW~yS_`@B#QjXMg|2^)lqecEI-rHM(RgS+yg zoOeeJj+r~JUZp$--EbZRnxtBxiDZ~?Vx9V>l@%9ycI)C{dTP{}y{Cu@A^h_KJTZy2phUjF1q&#}owGzxHC$F$ehD*+4Je;p ziU#y>-PfmkE`ckOTDg0G0nMT1jk_YF4Y!NN1$u1G zvJwPlP(I0uRBxDqDe>Idnn*o{A4;Kqy%IUs0pAv5VE$!VLX|<5^gvLE4o$~Yni@*O zCDGRsI9dz9_3X;HuWJ}b?fr-&W@>ryIVpT!&aH9n{$Ej+-JH(UsT)fgjSL(V12=t2fE2GGFW%v$zO3|&<8k@C7*0+_V% zop`nzu?~#|!l7`c$n^27Eps?}kj;UaFg1iWE@Slb#0e=&Aa9voI&oqIVZUT!-9PqWW&+>xLd+@woQrO?Hp=)Oa*R-I_V1Qv`D0 zvQ!}~<0wIhN6ZM~X?IdQ8!r*%n`hH%SSpNL_BiucNP(9rO`gkaKQ9oMF*`lWza=k~ zE^GtDXV_3r7M4`Afc#3TT&ti{ycGQyulpWhVHz`izdGy5PkV6@GQUB~n$3R&(!zTIK7N)= zJ}686H>)Y3-h#Z@6F(;$Bfi0*5ivfOn9jrXPS&E0H%B+A82w5M1H&<@4hjCSe{VmR z5H=G506-bqPCCjMb{I|?VwSAAjZf=3RJ@>6T=n?uKPiUQdHU26>;+H974_U!n)lcc z!khLJ0G8@q-I5$QT55-y24pi2bB$x3~Wg)UsqD z;cZ)J6l5h{*Y181l^tp)2&H!-YuGXyqbGxin6y=pGsePE#|q14u_Apy8Z_=`@f*6Y zM@Y*f+((Q9UzeibQbjr<6%J;HSxq(Klp-X`O|ya{L3iCbKT* z43yP)Dq8aJJV$GN|2(=ui{qiizF-tXQNY93Y&7{giyP5+6Cq1)uLJ-Fk@|PyxGabB z&6Vc)>vdNVkGSh>iw`zw3^VH*;Hj2S=TMa{N|f7ExRDd{*J5k1;ySzwn*Q))S8c!! z(+=;}`Y7eugDdRj&gy0zkK3@iWLh+%1j>95Pl}$z!+|yk!lc}D#YS??H)MIjw-a2@TquvpTnXPlicX6th@=26daE$d9B;gXMt z?X)S4W##P;4_aA{4%$0P#kv3!gKqdh+vGj0pbykn@l!GzirjS=Q?|z7NiXi8G|9 zNu(?=)+uoJXGW|RekVJ{@TQ|9y8s_3Ls6pPXF2uvCo7X_{rB)-tovarV=07*)~im` zp0}Bi5QIt-rFNGti**E+?t1=^GlytrOT_UAiX0j=EHVtyv&p)9mU}LrVsK}zc+MfE z>hr1_Ws`kl2r0%d{Kjt+1~-$X?HLx8oR!O>9&RnZslcFG1%KT~_jx0wX^Sj!92VF= zw=@o)Dh-hfubZ*gIO|$Y1jx`lbBUJIPX`MCx)6~WD>9hgC`iiwACw>{vrTBG9YO`( zV1$_AN;|%ru5n9rfPst5J2%WQQQKVa901={0QDQZ9%3L$z1KV3vkIrjh)ZB+kt;{L zt-~ld@HUkA`sJ2N@D}6PBC~NS(X^gwuANe#-4FUz!H4O88#8bOcS5%7TqZ z+K&`;Y?(uw=XjMe6dyNfTM|$Y(xiG+E->u}PS`LxP&1@a?UCt&L^ZR*ak9)bI;*q4 z7E{%8?Y;EcGPjq^gETnN58*~JwM*zKTvH`6U z?(mv{FyZ6=4p4<-WQP4OnYygM;SK>#D+e3sv!cY0Seq1Rz?-^Ee$)w0SyJQexG3i% z4TL9V;QfdRJKyjs`b$%l{P(36G*9!%NzeVpV*)k+O$+=0KZnQdg{F&`U+>gxyhd8! z%xk`G7&oI~^3SF3rp|fEn()$r7D8Wmn)28t1J$(|qgn3&owWimHyyx{S)e(j{8fQi zmA_X@^rbxsJAN-FV$Tsg67BX_Yvqym-Hn)*Z}Od%0fSRWbte7J5 zWR}M>{(1)-YsAP0y>pO4)r30CEha%dio(tb3KX7!_d+x*F(6C*2`^>!krV$6NVD~L zw%p5q)=aiTR+=p*LZ-w}$J1(b6a9KsztxQvNQ3YTTzxz4Rs*+1*Jr)G*CP43dtxn| z%du&ZXFlgo3X3?|z1{P7Eg{yJ(u}E5n+DIHyiln7+K>H0F6FK%&xr^GT)4S0N-&DL z*$EF4dNNZnogUlf|;ef#wKzwjYG|545^i zf#0z{N$nmeZ>-MSqX&Rvs@|(G>RFh%v9^yQn0kbX6OxF6Kvy z(XPu8kHS&h<~L6rzGI5+65uC`gOb$S{in)}(!$Nzc5U;e6SU9(SD`vHM!@abLT_)Ha z>7-a^J^e%4MKo{d_yems$zmXx*479V6gB-M7eB4vxjCM7Vc$f%G8q-QX`7aI-bVHv zkujWu&qUgO**!}4-dOPmXv5nJK<&FBaYDwi!!)u#@Y2l_g%;obncVnK76M1S3(Wl1 z5S~V$uBSt2o0V>d7{oy2&jETmG~QJsXHTZ$8zgGo zzD~Lo>>26}h(JvQWVktDigg;|3F4{qh?4;I^{Nw+QZu@VLl?7%7;BZ;(tdjqi#yaH zmc^ejKGS5?445on8m3X$dsPu)xW;e@JwTTQ((x=gdk45N%@k4u*n8Mc(QhA-MX;g5 zo-w5u4)>2<24}Sx`d?0#*(TmueIW-E8y3iP2S2>6_xVd0_|Y*Tm6}v4s7Q5V`Bczk zZH~Lg6V1-U)f%|CHQ9)C_v2^$+G;LJH%Li z2)r{fgdy(&J9-D;2AqlW_yjf7shqk8HR?B$bGFA=-p$y3NtU(}**)dDmdwMlwQmQZ z%(*gci)D^zq#>0tjJT>7v||W6O*mqri`P1P2T)&xR~93ghd>h?;Rx$a(+$tpglyBHI%> zk5!To)X3C;piWEls|0)m$34iN4&Tcksf^Ff(dhVY9T*W;?t2DFAb98jq~W9ke#d#< z6b!0R)GZhj(G252(30`|^~E&+i)w5~UEi>09eC#+OTfKaj9|nG!DGI0c5at}NOrDC zm-6b5_aMcy*AE{m7>Ad@hw0Lf7zO_k?~3L3SU2_w32wu{_dmj!^p$?z&G!7VpyHAu zM$u!tS3$`BD`ut z8Ff114@{G=(!#O>5&8tSIs_Yzgu|f)R#tUIhD)lf?OGu$y#?akZ`uyYK_{C!_D8Ti z909Iu{cJHSSv`E)#}7DjGOa+(G372}HtAL#G`UuuFa-k!PxZR*vNOj{20ObOtn$E% zwR8iRZNmHbz{+#nZ1fELbsTCg58lCVzgGJYuG;XJ zPFU;xj3{cuDRkx}iN>^1q-QhlZ##rRuAer?j%)J^fk1v!%VzkgO&ABO03eY@Z!f0O zQ~MLIz8wgD1t`k%0~${J;j3`&Dy|Kj`HsRY?Olbfd(z9u^@~H))*palcBd2t|DAPp z#AHf@$Znu1&7ERMU+}3362NiPl|DFIvgwz63APLSl<^UH1P^*Hb6#hGhw&f8ys&_Wt(8pf6zVZ!NgJ#isHnpvfAtXAl%IjUz>_)m zO#{NPC`kBuI59(tv{CWSM@p~Mcr^M3P4uyd;8F()RFP&d(0jYX%XGt@aBsezt3atm zrZnB8J~FCR!cfRFGin(c5P@VP!)mg0`T09tvRzN;%7NBM=LERNNhr=ijsBq9D*C8S4g1VCTUEZKyQbX)^1$EBhdbG=--YP$xK4QU znkr)Sd(`$XrwT)fGCz*|m7NCuyhM6~0V#Q6xceM+uW+?qi9Xi7=W=u8EDB5#+w+L@ z*_?B9eYjw3uVJuRZXm@|AhnK8XsmQm8C$&~7DPYqkDOPcbuS$!l9JM@lN6 z&GecRfc0i5%>`Ldu+-A}j{nyLEMFjG5wA~Ys!HxkuLIIa(unc-g!@?=*c>pf^0TJ4 zKo$Z>&tdkvK#Q)rT?pceVmx(}*CBa==LD)1l6TLamO@iQKh3d9jG*M}NL~+VQ1gMV zEI0mdJ=klrU+DsGDs+)wBav%%Vo>^GEjip!aeMlfn4L0jq+RUlX3025ZP&OGqRc{{^Eq#ZXvV zRwMlAI32q9_e`bU6Sn#^Br(PnCGp7@Kw4z@cP42x9^h;8%UzjAV&eX%@eQ|=LUkBC zrqmNVV}~R#TX3ki;v;pYTZCO>Wm7rRY+k!fUp6lIp))YO$e^YJ+Fs0O>4)MtKI$qw zg+fSE0B9~RJ!7P~5ynIlYkh#E;LXiOV9lDk14vC=5uv*Q>H97&6GiXQ-q&VV*r=F@ z;=8QBPNy((&el?v1fDO~g80}hpG6UOW0X7uO|iSJi!J<>f4SzJ#LuxtrNa!*smtlM z_;{)dFBljjn6NJhvjzy1u6)0GS{6DL*zX1OcVqr8*nQ|)Ij4yR&cdMLMf5lto`wz* zGf!+l-|8OB&ijOSl7Lq|M(fC`lu?<>-a~>k3S#>~Q|hA+pW0D_=;P0m(Md35soB2H zPK476uN-e}fM78XP+Zc`pQuB$GTqR{QhVdJ)jrfI&)B)VeNJstsOLdozw(h9OCfA1 z{s3Jb8A_3Q}!4M=2zFTQsbWA+biqq;^r*cN{_$ zvrET1P%Zoe(O9v>`8at~)%-d@jE&GYaO^7AK6uINmmQ(>8C19M*~@m03fU*Fub4Bs%Ls($-qq`$RAX`<9ZbDEpCSejog$435!cXinHA92 z40jmD>*890!EV z+ff2UzFGr)Y)lv~m*L)**UmdCW$N~6z+a`YN&~c0ZAs!KbQTZx)mL~GbOxK( z<$>;R7`2+KY}<)r4P5y84=A=OZ4qB?e+Y0HP#{D0QIld=`7>6d}r}_q-e+` zBGkc7NOP3!0{#(JyGd7xxhY*!-OLX;<*<`H~HK&Tf*@xJf+4=%rdF z^Q!svw~!-A$+Gda26wL09YWB-_d{lE8FbirbMO-@(aobarM*ansqsGhy2==Qi?F6j z9i2S3)tfE%9>Sy9?;StF;%6nvlqxxlM8jHzqM;$@Z9Y=FABqmB(12@z5?0qSGf%fCD89T=E z6qwHjdtO0cewkXL=-cFrd=7Ef(IWMeVs2Nsk&of_Tf4hY&ku5ONuSgtH+7jObhWPt zCXoe2TI4uGCi`pFmFR^~OAALCE3VltZ{u@@SR_8wg1wufHLKy^pSRPHN|JkEjrs4N zi}jLF{nt{3^tst72fdI6K5fyi4gPWB+)qgM#fQ=1hiVNlEkM|CuZSL%nkg*V7;f92 zQWNZYgUW4Y6A*2akNQ16HVrGRfJ~ey-QOibDh~Zl>D?0t+YvMc)ivF@iWq-${nQ*1 zRDa?fwXkXL2HtGy-iPTqvRcHp>$n zF;vY7H7^Nk^Dp@Vk`8Fwms7x{hO95}SxDO+4*2nVui9BMOkD49=o<#w?+*_j=iXMgbM*&KIb z5GtaiIY0os!s~Z8ZrlclEqMp5LM%3dUEHe2+==SuC~91R&K(11MsWf6xQD*N68;~? zb!Ts5F5$YQ1ytdq)Oy3?^PiL^LTZqa(WLQ z^u?tK=JEDkPUTC?VD7Tn-b3=KGsuP~}Y6!LyVfMUx4C z5J*#!JBJ6rz-vy{B2_(1sjft(%f5{tk;baLak~iq7`kZ@Biaj+)D}R8iTW|aNrlj$ z8#1r5*FE*6mDj|Ql)=KIfX500^3rn9Wk(19(FKcAUKpOla0c{evFf`o15I{!Ng zQ>AXjFin?dsE;s1cuD7GEWxDc+b6e1voZbuM`l9`53$z8zuKEEX>r{!cMhPE7t&BZ z!l!8}3#iH0Xk@+=EjHJ0J*pjR|5E)06$O$%8Y~%L|9}0?yUX?GqkpIFyoSO92$E$z z=R+uRHPw3mm*j`NUfz_5q|ksy5#*Hbf;=nzVz zZ68kYd}${k&sPolBF8Zhjj?6tnJHGXlfM^_Y&^j@Cn|G_7M_lPD_rUC=hb<4r1uI&6Pw5=OG?uTo{Tu5;xx^w!=OL9X(E`Q?-)u^T=HBg zEV7F!RNWkhiqEjs-N}DP37hkMGS1p#k8X``Ag726Dc@qHxQT5(>IHmCQO=|K(%{Fv z3A8e)&OKb0!9c7?yc+~rF7{jpQLCTBMKscN4?QMu6qaLf#dikcl#bnGRxLd4P9Uyc z0PQd$AtH2ivmQ?^5vvUAx)Me6XCN`>NELRx@5sH_NaM;5Jy@_^p2E>SNv!vDe^X># zL+ajyZT8lu2uLwpxqE9^$uy}#29Nd^?XZ=U~#0!}?V zQoX;#v7q9bPo+(S=2fN5Y?LBTzY~N?8R2ZE$Je1XeFg$izOEs@R*TLY)mbL)*5Cs{ zt%LLlO0GUPky*Dv-WC!H9sK(d)A(s6Z?XFD<;Po~Ng(YYl7H^@iqACE8(^dO*SXgU z{8;mB`ZbyuIU}B59d5SmBzrk%Q#D^(No<|La9sH}dY_<6oiA~LE4CtGuutSpG=nqU zdQB(xIY4j`Xc)!I*A$>Yjn;Fpo!>+!Qk7N zV@&8FQobow_baUfRK^w~InDtNx|EqYz~Rayj{)jpGZRB<9iHnXM`PcG zUH|E9U&f(Awn#a(Q&H!q_RGFD-p?4hSK`d?&)7SZyH)SwVp~g@WrxMXLzu;|d=u8P z;=%ezz27H~+K{(X_%o=>_M5&A>#|iFWt_5VU6=?SFy?dVouvb}TCJS)4?>=$8`G;6 z(3b*qi8aPxgQ%bEeLv3!flh;9nmQ6cBXX`EgqX)XPVxb~$91+8Gvg!%U&84RT84ti z8bD?DKFLX}QJ>#;^SW7g83(SfG8f7=QQFRpM83v2&Qc4Q>qOdpDf|NI@WYA|gpOC-Ywua#Dl6{dZeT|0iccIO% zO^Yh`Mktz`M~AkhO$(UZ!S#n9%)f^hF5*l7Ypfh@#0X#f#wOZ8)s>SoX8=1v&XmWs zGk^k&Lb)~X#=J5faz^?=Mh!Ov zh&n1qmUzuHyQ(Tyjp_InW@7cOwK{Vj%Y)SEp8x1-oqIB-(+ZYrt=kK%mp-_h9>MQL zn@z04g55)Jqwcs5dHN;B*}y(%NDSvABjKwF4JjA)!~$#C+B;Q({&5O&=%Is z-|Afl!^c!#tmEAYOlMD4a4qa!QL8+08B zZdRxFrk{*+$RScjc}|V~PLlV*qsrqPwTyaA4Wsd71Lk#0ad}ehv)FKT( zS3*CXRiKIOCt-pbsa^M+JDg~2{HvexUjdVjKA4Jqh#5H(6hY`=VvRvH0=(cIE0AFK z1>7;Voi< z6?`PQU$^A5-yw3CE;-iFFNSBrBBcPgdjnfzW<^kce<|;^u6h247CN40#KO`cj&ByG-me*Hu znm9nvAZtgBKPgiljj>e{kbgW4p+d?vO_0}gY24tx^viC0lltYhf^Tg(d*AXpH$r3& z8;LTFa-h4DJW9Lt2)_B~&^xOMX^QaT3VZe>IB%LaaU zh{MHF{z~ck6zce%B+G=w`+nQiXYzz`G>Zy3VG~qy@GBE{3E(PVjOppj^6gpTKD%Lu zsvOE;w2mjwFCOcdBnUWk9gt$DAb~08#4s7Se=!h|PbQ*tVxvI@4UHz_87!*dt3`UB z)5p4j;oXul21WaO%?tEHK?SyfjY6E@cOT8&_4sGnhY`NsmCC+v1M^(e6mWfK^6qe| z1QF2E`}bq3HV%PJOx13js>{^A97`3(CzM}Be!H&TV%Ml*7f*4>RnTP4p({|*reM$X z&r;^edow%T_Xj|`p6hf(-)~Me1)yIy&lx81aSWKj7!?}_nlvZ!)# z)%^9NUo|G1I+oKlU%oL$TtUmY*1t_6@Uo*FmImpy@nb3M8I~X#)CM6(fH+G%`czy) zzbzHgiYqSEw5HjJXI&JGvJ~o4>#1WB7=v^{huXe4gGG z;K{XYv7(R%oilw z+eHW}#qK&Vni`vXq^1B-(yg)DS`S$J0S!#WYgV|`w*<1*m^SY&_5xo`n{r_kK<1R@ z{jh-zT+lNC*K*@~B(7k5mIr&G0)cf=<`TuF>Ti>tvY?M3xzy-C5xI%-JaL!!uv1h2 zL4aWG%V7^A*kvIuAJC!3YfJJ@@f?egTfBbK!w0j*Jhdp(mGvL(Mk+uE4!Q4S!P*Vz ze@=0MfkQs=J+D{yg;aDxIl((!_B5fXU^C>IhJ2!8TwGt3q<(e=s7hO>c-6{OjkYGo zg+2a89d}JyM@6mqB^+&wybK$sV;(%R&mtweW!8=BZd@yUJgUXzA%8iIDGVFH#nQ1O zxB7=jI0sBnlXu%d#4(T2CFnZCu(46vl*KdDZT@88jma?M|9xlJdGW6mCtO(0WG6Ky9@<> zp+3!U0*`F^mv6eR!%kahxUkAmvc>I1E?$g8ax!)Hm~$-}PD3#;10Vg?Lb}zUyXz#s zxTxWJgV)Zd7P+ad!Y&2B7%!~Av`-LFU-8Hk z|46CDl};w7c&zDuV7LA#X`VHl@MgPuHC`&Hl7ZM^qb{1 zo^pwd$?5Xq4@qb3a;z#Jb|}$m6ra$hxW3w0Vl3t{rnn(F?PW6T9FfxrP$kjlq@y8}?S+0g@Ad7mE0gFM?<(E{uFv1B9&@EpoV>8nwxgBPl0q zaG4NAn|9ZKGwD&^s$59B21C;stpY-BzOOj3uE)oTSbmQ;<-_zfr*K?3ig+uUZq7?! z%yghL>Ule~Sxos4-dfnt_3?_z=YGh} zl2VX!ltd*oHRl?MD3O17o<@zn)#sdvAs17$SmMeLY$DnTVkdtY2}B7LxYiJ+`5cy) ztyCC_VlWy0wOy-4z>%}Y;0*{NMMXiMP*D*O@U5JdLv#d4lCdnvbFw%P{()-_s?eLd z@EjXrHE{Ba-o|)kt>U8*t!xGG3-U)3_2v_b+d8Jo@^iB(8pH}VtV<0LQ6SowMmA^E z!~Gh-Q~PqEx9C-rvL$zMtdw@p_vc^uu$|7WpAP)))9Ys0=99lLi$qoMPn2O-Wu8B< zaqEBiWd{%9?pyuuhF)?vHIQw>a=dA)t zJuT2-mT2WI{*xH!Wb9x9dWA7Sfy=xKGVztB}x0qf?RnZtC(v0Dx z+QC_M*9)`~nxxS02u}nABGK^CMDlp8^J!Q2V)wPcVw0TYGZ-*}fTrfY15_bLwSs5{ zMyhiE2S{tJFIuj)h{kRCpQV(Sw(6RAq>wouC7h+p)DC=;#YQyFI85k%5J<7)db!ci zF>#;Gu*hlvAa#Lg2sR`HQQ7hWn@v3ten_>01ODn0ijuSY!okt)a(pgvsKYUFeS4dU zhklS~W~!(Qi#0I)EQfeR(+}YVgt}%FH35BFss)-r^|~soy$_9wAryvvc+HW-@2Gpy z31Qtk?v^u6M3xx#d47%<>#q6X3(SS<4*Q6aX@o+^_={+e5Gb;vC4p9VpHx}OLdi>P(tm`z84Ol#p1#&n1`#5zl|-CvID zd(P0=_5}_<3X>taj3d+gE@2Mg(`Y8%x_#@^!WYhkVdYJ0nTs$@DI$kBNRGIi`^Dh$ zx*g5fi3HPcNw~h_dDMW`un*G@@UcIIFeSMe_A!|4z#*~S?2wLoHM1EZ9(*|s0OTVm z;z%XVxp={%t-G$uO0sMWyzk>$@$bavZ|4JCwuOG4R!)S{SG11m=3@MIjE@B{Qa~^x z+Nxh-pt|87QWCE3Bq>KHF(pD3d{np07SRc#sI9^Zf5g1{i6eNPFNZ|dOo+*nReY5v z6~ifGqWr6#`i?J%+f($C zpj%6;|6wF>Hvl<0^}rXu);mkwt%7s`;@9Us(^sKiUm;gPvIR16wI*#q;v6pjq&UNj zb?8JwnFjg2re>Wp>9VVlX>~D&qtjJh+s;duzBY=G{-!LX#h;_>$?7lPaoXQq4>%QS ztF3$YDYT(otbtd|dTy`9)wnfLWyT9f)3Ul9UTTSGm!2b4Mq{UF)9$k@A8aAK6_oxs=CGep5Zp@$JjCkT{1B=Ue4-F}n(&_gWlt zUPGWbKudlmHm8()afRKl{)QH@w6SA&ro58g9vK7r>9wUPP;4XqxFcM&e2U(X(u<~e z3F1WfC6I;RPMerT*)=dENVtWGnyCmj!j-v2&fCA@~`L5m_}d$25V|m_UPX+PQkq@ZgvI9 z)x{hJ6OCOEHbU2vB9iL@R9q?^Hrm;h5&MAzuYwNTuKT9IZ}_+Dw5+Bhu0d5K9&A!y z*uLXSaRt@!lR)8}>T0fRlli#F9V5{}HY$(7+2+8dqyL(uSFVUAlMXDlH-RvJAmjH1BMn?g_3;IxOu;!qYH*z_pz>AQcA2Z z273Xcf>wQUA@V#ok)eF`fRFFkh7ZJ4zCP7Y+k^M@#!i` zg7)v)@&RdlB!dpR6FF&7hDruDDyl^Qh?N3$No{DMuq0pAvQZg15s^L3+PB7m+^a8~ zsa91?aE3j?eRfYWO=wB|(S}b}pX)g+6r`;$N(G?wyY(l&D?Np%g<5xb_8&)Xxnm#C z0hDM-=9rbbMlRAWv;HaJ8ge{}2vE%=Ee#(W>=3AZ7J+dGOlSzpN{QuN9;LnS3}lEQ z!OW%c%>n^dP=A-4OMY5uw=FU+DC)1PzrdF{nqn8^1iQmY|Fz}bxg|>PC%MiLF?ptG z!o0sY!E&jdR}%_pQSEyDWT{x69P~)A{*9_s%&=bQznFo`pZQGZ(kMGCF|CsKFfhn& zAwU`C=ya=F9f87Wxpe^x4v?;!-hG15xqs={#j5K;>2g;hlOSOkWMvTzQkvcD*<+-l zIZet>ne~P7d3jZU1=YD&SE~g#y0K1z!SJktsI^OuiH7su(c^g*R;x(uRr_;Wo0g7` z$1l#nj}qArkdA?N812Wr2%g2mWe#cf<$A!1I5rPwGZY1*61ppLCCJ&L?eGXdDPQqS z$V5QYteK2RdT5l-4O5bEZ?UJ?a?2M{aA@0GVn4HFr zMztQ+Vll1ziw`y~EnCNBSGz~(FP!0*qsCS5_JKJ-)4b(gxce(|XDEKiM*;zJtl!$F z$;QBOLuS>F_GvW^_k4xjGz$EezIO_n{B;sI0}fYOnu`KZB}QDY>&~*)ASOg}B5Y(UI;^4JRfb61qQWZ!aA_(lxjBBfpJ;(-DLc`GXrMi_ zn^`8J=JA@7cFg1dnmayAL2oMRcf}|WJq9l{o)wK1rhBbND?YWjrGhk{ZSw>Kp=om6 za)nG~9YaqxsARC0Zq6!7uNjyRh5LlW#4EBs*br*Fx^xF9zr);uqYU&m-gBf_OG~?N z%bim0wK_)_QPjSw2mSYS)I3PgrDst|%ak)Aue}w$V_G?D}ru`2}cf#-v4@_ON zMm~xYNE|ip*Y^-w3!Hm(r8ak9bqO@ z<<9&(;r1=RWPO^}=v1}4;&i%b;rE0IW`|cB|C@@$1=Pq8plMwMlZZtBKlK^UZd-{p zl(?|UAHDj&!dw6tbI+~-`t&0fLNM}Q4#-b6%2?=K-E$M)kmsELFZHi0o7sO(Yh_3T z9oZ5~e}+&{&>1&OJ+v8&K6X*eG4TyEId3PQMs*(Bt*WGt>0KYkI(=!17~q`^w0M!s zb90`IPWhX%ZtQ}%!$ywl+HOaKnf9zwI{6QvN34?nIE&}82(&hiKtox|pL1e{lfe(S1-aPPlI0Gv)tY&67I1Du}4NZb+NZs?k@ ztasRhJRrU+uv3)Ne{Q>GhT;VfS(x_}KMO)C37r~ue{u8SG`6t=+aE+_J*UONy zAcY3jghl0)ebfnDNB9yq7MHxvZZ2Aw^}}nzA(_m*NlW}4?eP3<$&3(8H)*>I#4Fxr z(C8_u(aM-xjv@Ki93jD&*m1yQ2cfay=7j3L!7maSm*FQukjR*eEAwMUeXWn?HYj)1 zwumI8z{>wUadW`7puOO-1t=&za_Mi_0J77=2;(anS-=bByz7@+xW(;LBbV;4SBS=% zhow)#dw;4f#~UZW^9c=$K@!3Y#5j`GM_%*P1l>X+JGkLDeW!=zqEj-I=Z@>gpP>EI zj2}vXR_;Fl*TmjYio=Nu8T2A6OiUCQcfWs zniIdf)`V!akD3?y9&e!X)yI|%g}EOu@~nf7wpGs6wl>dG;@ zE>6ZK-Ae@z_@F6QkAb{PAmnRBGY5+>!>UHzH64QCfge}kAPJs&Z`%P(hIUW%qW6tI zF)AxtPu8{hI4aL)1{zi6n&Qu8dhD5*=Ac;`i$6XuMV`CPIpxG0Ao*h!V;?cNXX>@I zfQwOmU& z#@QNfs#=p-kJl}81GvNKlAM`K{3=zsQ%V}$f^S{JE)ZpBLK6ng(F+K2jc=^0`cP$+ z6Ka>Fg5`IcDtW+3!PQv>Mn_i#3BAIq&nBs|LKm{Z9x$n1KsY z!z5Nb9Mp#IKBmKzunaKtS)sEQXw_m)^CnAvUTM?iceuUQ57;9@SS!k^zX5A66icnI zG$cRPohn zZYC38E$;DM$7aW_w7pOVV^CO;3M4YeBg#KkC^Z}CZ9Lga;eb>siTCaV+VP2WAW_N_hC|s3o>0}WxkhZQw319@WvP%x%Jf1^8{ECoT zaD(O`rK5)}8dF=KTB6sN>;sLsXu`IA`Yo|H%*I}CI%xnX&o`0Ds+iA2J6g$Ns+un^ zXZ@VUDF8Nl^a{b@kD`Lbg!?0?R>JU`P8ky>k&5#isWPo|@_rh|b*^(LcnMNTckfIz zMPT|CiY*lcXY*x1CkfYdMjCLt31JmUU_*F^W==2J;lnLhyPbPv1=w4sQ&FTLt+U7i zB}22Bc+%XA%m*j+oG9K&4ec7II*OKUu{nVKly%}~4GlY5h`h##OD|_E8CaJKN;-Na zf5~2pZPPY<;oq2CHP&;FJIC}wmH>6m8y;QzG@+A8Z)5Yf6+4XRZ}5w3X?3GRzGUIC zZj++4MT<+~0rg6t0wn?#cypibibz@+h=HXlW{awa+A|V#Q9`BZDzSsRst zb6fL=p?Q-zD-+oUD8 ztn~SRb)T+ft(9a3DLNoShzaeAfA-NV3KrnkQ@JX}6I}1gM1nNVan6Jk>N9_Q(m^kn zmy20%HSa>#j}UUcdx-gay27u>7oN+9KeAd#L!8AF=C5V+D@VdOadEK0r3XT#gc%s~ ziE{PeJj9)TP>JisXF9&L+(4; zed<<-I+CMSAX+j`P-W1zA2M$S*^cBap(@kYcKMSCw0n5q`AQ19_UOK0<0G=~k2z1Y zXG{dMcwG;Xx@;l8P*F@PlVvG~89pL28XT`3RC-O@S^U#|5fR>z)BG2>5JQWwoQW|l z;M$*cqt6Fowvmp_PVlJE(?X|TXv{(FN#61G7@6+@%mGlHYjfY*zFbGul!d!RZZS(_ z^{IVP6$S~b!J*3qPea=$W6mmRN@Opq z!m1?hq(S;Y{+AXZem#KSo%J2D)ZpTpPDx6h)LH8ozKOI+{Gz9o@C=z(V#dv#a_l8c z;D5t;KHQU~96}|WX*pvItF*&oBR(H|j^yE02e9he%}_$20K|-wA_}&FvVKT~1f!rs z-C?FC^dftU5@pf(9CP=VW3NZ~jVS*SE0-c8rnM4N(IXC3ti&?r9J9J{*B9DKjHuL< zk)4b^8R#r&Y?N#i9fD%=MbM!zj%3G#(wQ+SNVvAq>vQc9CLy+d*#6|95Pf~_hcqzU zF0@WkU2(CDFm}BbccCcFBVSh%lAuA3eQ2A9PLHQkr0IVdjS$U-Sk-m^5R9f%4cew1 z4_e8a#}wxbRb}w`0o;-EgR4qUg+eBuPJ8@UDPCv2I8nLR9aG%&c!@W4yT1vGx0=$s z?dNcZ)B@bE4?iY|iQ~3rE2D;+zniX98`=_M2Cq^#ksX(kt+YR2e~=D7LqZT|UAZiK z-c_&I(0dZxej`aVN7fGp)+DqsULH24xJ|{%a|;y7yL#)DTf>tE9v%o3yHe>$RwgK* zUA3Vn;(8b72!y?gyM+M4hlK?!tbP~*MzAvP1dsjzV@$f^#xa5r6NpX zgXq<-^olI0v}?mxb{y%6){Fy`Mdr~sZE=!D{mEc5!}?$V6Qa_$ECV7#@@xH5W$99W zI4$%Y|510PaJ$D})vgnVc1LV;1b>=-@)c1-cA+xZX(6SMusA+#8dBj0rryG$%y5*I zK3_8tF#&>-=ozl%YhM+@8_uuY6eEKy#8T`EXqCC$Chr(%BTcAY0x;(_KPkb_>g+V# z)AhH6+aBE4%dhN4Y*C_C_+NT5A+_vhRHYmu!HLCnunlM{A8l*}+VxI2axV@m#Xy{;>;-_XPbGJ$@?z5pk(M8Ea83; zWcX{(^By}-Tn{-Yz?z0M`lb}lpM~SykLS4xnsP^o3W_UQJ2N)A?zkE`71(P6N4eY2 zmxraLBGe2q_z~X0-~c#T^V(bOKJiD-f8`T-%6OOvY#^Xg^}4O%FY|>cs_iGj-zMv@ z4jKP|QBWTPZU6PoYY&Z2YIX93Fy{I?>9uywqlmXf_=RllJNNaRlkVrclW!oll~aJW zH)vvPNWGQR+CofY?{|iz_mT#zM2Q3{Eg5_V(3!eayc~qaHPvwk<(rhmx>!BtSRvin z9HS^Th!TA5hQ3dOh%1rn+=iP`V{bQ!+*D8e{%PG2E=+ST_nrP3`0XD_Iquj*R~?#U z(wn9_a+X1j#pC>09`n(H=@Cy&d|Ky;t*Z~(tc4(J(eLKP;R87FmgO|Bs8u1F zOQ^`cosMFr&`_mOJ~UZ41yW5dN`m4TA}iecw*1s$i7WPHX-F z+%2!i3v?}x1pMV*Heq_z9oDu`{S5d9|>+4>4Dy)3;Zp}Rz<1=BSnbriY8g@ zr-LN+9PV-qAtd-Mb#t40ZzWVoMy2mm3VSGZo@aVV*+Cdc?V;|7w2+Ss z*@5f-Po*dgyy3NlPXtY7dDnE~rku7~;d|$Y?dW6*pUYdUC4tX%-!nyrQdcfgZ{fZ~ zO&n%M+3$PApRuCcq|J9}ygkFuu!?+Y6QO)}gpeJ>J@x3b&z<{N`af&w+`DN}OslWf zi;+jOk9m{+g|;4l+e-%M_Htenf|T55VooT)gDMQoFUKX|Xt0k@XxT{drVheETalAg<%QzhrWG9)`SBh9xpNceSZDnW>-mVnQ zkV`WI%MUzBkq@?K9QTAj=T|h!ciVM$P-lSpI^EL^%B{{f}!1< z@V3!;9HBM%UKsv|>TL*nYv&nttuP^h8ei1Gl6W_jo)b1~esFEBp}jZH5{a|J*+}th>=U~Z;U}+J*PFi0{orfa&ld4%>Xk^3RYlj4ra;)*w?>Z0G=2Q&QbXALA+Mz>_%Y-)e%H^m3Xh2{&lw{ti!# zTrDER$KU`cDJ^aQm2QB)338qh*|AhR@=-&)#}V!)Gz|W4y!V-ceBf#f14w+GRvtd3 z&s}Lk0uOz{7tfF|%sHRF`SgiiE$cC-;N4M;l0~qdE^kFlNb`l4QqS|O^3h|(hc*IU zCUxf)iiWxWRn8=$k-Lbxbz~HQOoS14P=U!S>>=Fpm0Z(L>dxYkkB8}@2W*YDu!_mZ zWUfcQ~|22`6v_13($RF~-OH zg-e@FoKWVfgP-DvF*%j((dXbPInwF{jR|TiF{Im!DYRi&&F+iq`+#Hs(!U6_9!Uq< z@%ZzstQjM{ryg(vsB`@1uvp@w^K^I!e%hb!+CE)jo^UN}k#}_pf}TNZm1(~UIYk9M z#S)_lf>gu20eVhnLR%#YZ`rQLtpChqEHr`+mSWLag^nYMg@1D5@wh?{i8xR25I|>t zHSa24)GsKdwjXsrWgLly-nZLRt}k~3vZs?NWny>B&^$(K>n|Zf(I>_%{ED$G^deD) zDtK%vFj?$=pGmGv7EJKpE5+8mg1Q4hA(`u}N`ieZw)IwMd`zgsC!ZCF+!tY)R_S}T zTNAVEu6w#^%={aI^j|mylzuEV-)?GwP{)vvhbY4U$&JP3<`vI`U!wKz)TL7;Sb!vQ!8B6izVM1ufekut*sy0WvPm`?6N;R2> zvPSMQ?verLvjUEZc=R%b19^Z2Kx1z@4Yf;3LOl?}Gl``wW2aD9A=`g?_ZY8VqEa8I zyr6g%k*F03jo@|b{idmJG4E@D!GQKrJ@3zkWDwPwq69EY&Eq0uzEOg(E*Uj$Te}aI zkvK9R=>?2lWsiif(WXb};se)7-%atFIZDp0CXMg_`TW-tl;bop-M9V3OQh^qd|}#z zlV`PkP&dg`F6I&$W@;GCfa6wJi#N%Xi2?pnk3M#lB9?d)`m;B8eQpqd{&JLZ4eLcw zotAqHS*7NX-OR?8q|WUMm#QXP(z1QzoWT%>As23RoXZ~Z;yR8f>Psx%bnhrX0A@YG zC(uCvH1Y_HTk0rk94lM1mB|Ea08pz;TUB4*=9;-dWZkl2C(b`dWhA9EI8lWg`eZ?G z4atT5Z7Ac5@eS5hFs|JSup)s*z+nU?YHT<7yYg6$2NUC>G_DeQ18stYF-N`lH-PqQ zLDksOeh>`JXxID9Q@*QR^`)<1B6DsX=lQd*C{2+MTlWliF-kn!PYX|80#sC^qyp10 z{jYP%hHiYgh&|7(C0%IiPo>}EP~>(pY^=uNpW@m5Aemh~yOL=R{kw^pLTd9^12g$X z&@=GsR%>&> zFwF34>h!xs)8`u9y?6MU;r~o}d8gizveI>{)OHlc;J4T$2w*y+6dFypKaXudKG1Lq z+mOQzCNU5wnDEQ?yB^%e0rnflbC4oWAwUsrESPJvBWJsS0mOYOkIyh0Y#8SUY|&``{2YrLO_ z_GJ9!oIlM7vs+3R)ftaUYomC6zxb*hv1(vw8naW@7YdT`eztz0CMO{8ls{q>x@4T+ zdPG+1?Z^kWc1i5X*i8g-&bSKT7L(jm_F2c$MynLeuJ-Nfn~TJ5!I7^d;^Lc0dLdjr zTAn`S-gax+kVkaxOV~D}hl3-b`x#UW+1?*-uW+QV+|79!ONhF{R_jeN3MVr#{keVm zf;9a>(_MJ8KMA0IM6V9L>pGaHMCq?JFFm!q>UI0#7lj}S5Qw?l3X?*6{hiji3pdA3 zTS!xPEn3qx_Hko6EEuT^UHW_;q0-95!g9m4;NJDO&Q{ea;~)hO&O)Kj!VqpglH*uF zVsia$5zN0#b9lwhJNft}mb&OKmWkS8q{{hfSFTwqcryG|Bag||j=XtSHhV7A@lC_J zkki|Dbh5L(-%`8tK;@(!3?H2D>CHY7om<})hTvDvl@2^fh#%NDyfJVHw)R5|M2iQi zz7;E3NhJzQLf|nQMSGmKO-s{4B+ePnr$8;zZ9Xcf)Zu~ow#79lXSOf3H$y&E!Q|Jd zBy?HfzsFY4%XR(h6joMIrUngBS%jnn%@{un?Gte24L&JUOsL7vcOH8KfT)+oET9Mt zsOiMc(W>{rx-G)I`5WIqUJl0p6G{=c*rk>A1sP^SKJSG()8rG?BfiMrH9wq8nlfsE zpW_dZNL~xl7f|X~gE3RV8+cu^{eTgma&ub%C=XHBO3;RYNFdE}%Pl^vYUh}Ito~K^ zJ1O;MciIe)nJuLQVbj!lS)txSOT=IjU0Ky9<;c7v7DtR}h-nO!RsCEIrEDZeHx8v) zdd|t>cJfC$U~{`zcdyo>A;xt!Fx)s9YUY>I)ER!satAa9%!JfVuj#Vf8~hbEfaMta zy=5ZbxyZPiQnVyf`@;qm+mdjw``uo6l+BOArxJ$8fFbe@&Msxfrd|s%bEahG_-t*I zY(Ea zu1}vFrQ~x8?T5=w0+1t>3>)NJVbXoU)-yieba60^Stji`3dW@I_)=!Aeq0Hk+)8I3 zxcH_e?NYw4P=g?gs!#W^CZD>;Z+VO#E9#e;24kA@Xe*6g!%x_Y%kdmuqXOh_5f`@+2rc3X?gDy;0Do zbV)vFN_)TdhHFR;2-ZZa*+$+nd0;fLLJ75p8ao7vxWn3&_Sl~WeMD*9yuIw24301@ zeZNYUSntk(1WpHDM3B3l4+hLsBLNFM_>EEyuLR_%oItttGBOxl}^$54Kd zVxY`*`NXfDr4)k-2Fr~3ZKi#n+;ln<&^<%p`{w@=JOumPwDIW9xp&T|IZ7m$q?+rWsj0iq1(onm)hm*K^20c=4<|uVOrx*bcm490% zf|X%;gF%H;lZ&pw`c**~E36&tMPer1PI`dH_fYE`8R%tuXuaJ6@=+k2muHHrFJ24| zl&#^6BA90*o#C=%!+H94uhLd<_Hu&WZJ4!CLN!wH7yLH0k^VUpva^HUUSH%-`ZQX2 z4k_Qxto}LNx>}feq=%l&=d^`$LZd9Jb&@nFzNjl}W~UaUSV6%y81>VVH^2f;({AD( zW!!_dnZi!OLG%R#&81EXxzT%h!8D@8F$azc{yMmlx_De57o|Dd)k0@Cxa6TLiOgFk z6jo^!1~r<5?9v5&sUH~Vl5 zCI@b48EIzx&|^4|3k_n_xAsBn)NmniZ6_j7dV~bh`}fy0=E22|^m((A>i0>sxFh>Y0G(U~0wOT@I~x zeAW{_52>kF__~KcrF~DRVvuzFkB{>Y(iKIuVl_M4S5I4ehMP-+B4!**Ib6)sJX+VV zWP5hy>{)E6GBfn~x?3%L(}q+~lNVJBHy*hRh4>{Pd8p9h?f*{_M1iDUZp7F8|Dn?D z)<&+sgDTR&cYpW&aD>qqHc-P02Y9awz;+kdse|!|h{6{MhtEbC6hTfDEek$ZQS`cG zc^S6tXqziJ66<%Ts|H`A)TF7DfSvDd2HJ!+WST^}BVF5^m4th_(jAVMMaHFXCv-m_ zYo25>UEQ)tW1t?6`m@cq=kdytVip^ZLB-a{A8)uU>(R6W<1=$TG^j*de&h0C{(*H= z@6}<|5@QRuoul<#w7o4)YSa+BdYhTFi!z1Fm4GWMK$jL>5riil!WrVr|EJv;pzs@( zr70WusQO}qTP@Al%N*pQB8s+8gcdo@vkB~g+GUOonRI@986>H7yu6eXA9tCJ;ZM?@ zeO(7@L&^3H$wKYmFOtZJd9PdoDBiIk3Wz$JNTLTzM4a((K<*ErL&G&QQ!)jfS;c9? z;#wa`!k*e0=w>Ytrrl$jAdmluh`z@T9^yx6+}#0cFh?_R&`9(Q!U>w=MF>!CB*+4i zuUn3fF&sEiGaYtFcs>Q+*ILtK4DmLV2?G*HO*tj$vxxkSW*V~dTZ{}IBoaq5HdO}_ z&nrm1l-#x`XA4$A=M(UmfI(||9jobS3>UwG^|elkj$}K7#}0{7is}Jce@@|I-?3(+ z=z|2h0kj@%guWHNT5Sl0cyXsF?$w5S#z?F*K&wCMjBfMBsm zDHw6@PK*pp0`u%mHY=$2E6OFYRLHZqi{j|0;i;{xyOG839COh&P ztw^9Bm0SSggDTTr-U~DYpIe>|_mA{zR>nYym$>(~s5tK3nuEh%7ll8xWTj}K}(R&QQ8mtprn%NG$Y_OQd z2ahD{C_E+FdA#@eXI02+*}oNW+@rTH7k0l)gPY@hw3ai+pKfVqn|Dg1*AXcNyb`IR z9+<`bhP@+*k#DWvr=G!*d7o28x6V8JM}EwR4}?Yh`7{vWVKu2a!HiK&eVr`%mmzvW zP~ib9AOtMX%G=A6tfcQrY*r%h*#A&sk~Kg791!zi_U%H5sTyz>?=ygFj zh6D(->uDILOL0%x+AYY>PD3yn}*bnT~^FXzuho6SC=;^ zJO;#gz2;fv2mryPQJ&TKfX~<_h;=_%l>-{io4d z(A9Pq<*cx0?8kg5YdK7*_e9+)@#iz2#fMR#Z% zf%vTp(H~!22SDgS-zwqnNn7I=6Cu|V2RyXc`F6D0%(hep*6@RnT)hlx;8b-uLm8wT zG20c*Jjpd_h9~nvR7kW=;Lz2T)q;fc2=(SfBk?fd&A(R)@g|X}KtA{3tub4h{uL0q zx!M~!dVnf)an2eLTSzaRr-}VE9E|ngW}O$34wi29X*1uPVD@}yw@`518R2WFaPBv1kT5aBY(sZ3IJQRKv#Z~k z5dS#No3NjAur$9W$Rd;Dl_JH@f1E8QOvkt-%dz=j`u2l4FaR8B+05abIOe=4=UV(bU4|w4E`d>kqntV6P%)L^8e%TCey#wNbfZsc7XZJl4ImXoVw@+}W z{46*1w5cjDzH_KtOY_G(J^Gi?eHn2mS8lCwy6#Q}5GWyx@Trq1xwf+Mx}NyHuZjDO z%-7#+dfL>n;ri8R>DaGC$9%hn#X*Xw9GF5;d;9m}4Mdy#qWgB9{6RadKcG&;BeDHk z*Ts?n1{ej-%UiGg(fY#mVn=%EcsTknuTDd3406?XqzWC1E{OpDKLEfQcC7S2du-v0 zftTn3kqb&Vh4hfv?11<5Cg02%u#YTfhu5wASrqo-DEP{vl3(sNqJtfnJpN@ujjqJ9 zd{AI$9dNxQA>WBE@&lmcwJ%$n1BVUI*=t!@50B0=gUPY&65j@To?yi75Xa&CiQ3kW;Z-^P zq6C^NOTffXGCk|{8qlE=a*wV+y!AfCOFop%knf zmtP)DF545DLnGq2ADe{(RUO|eBP@~ky}6Z*j&9>|+PF6f$t{B+A~5xCO_tJZ+X*Ww z?PAT2O+c|c5Y-CNpT~m^yC$Fy4sn|V6A&m!&FT)Ml+=Z?{MSm8N^-)olj(V3NA!Hg zEp+V`Q`)e{6q~_#4YL)Xf;?UDo?g*aJ}$@iE=6zCpKKZ1*%Kw~BAoVboAH>)fOU*; zc{+b&(3*>*Sh}#+#nE}+U79=4JmnWD2im1es}FB>orXhVeXjQ)*ixhx6vkR$#8C#; zz~VIPO(>Mz(pzDq56hapXnI$S4;2Gj44(p3(-sO=|MV3Y8fR*$c>VS7Nm4BqwRgtQ zed*ReWJvKGQ7D!SWDdR+IEozlIa$pjnz`;ycjID_T#DdQB{lfnUGmYCKAlo+I2w{3G3@KdMGuv%YX&fTUd++b)8t-OauoSBPHY=KGd3 zU&nuFvEJ7tdx<0Q2M~jNnpMX)^&D+f-d|Qes!DMQ5|cP~&~={`ajF=@NT&<|;FEV$ z=1hc-{(reqLO;LQc>U{Q!n`CtVlCRb`6LlKQUHhU6t2gP2-6p;?D)wfy$5MtC-Kd{Eu<%W|71dHR(E70QYa(rj z_}Xnb!+zI@7`O+k=XAEmZ|2bPZ1>^}Mw*ezV263N9id_bJ+~nC!ePNu(F8tv zKSJ(O!Ew=GaQ5YFV8myiL&Q}Z;2z6LN3pCm-zUiKH7p1M$)`>5su(UoR?6?rp;IR8 zk%w}#21G=u#oIwO!X%)QJOW3+9gF)e{5@>GD)sKnYjjhk{Ur>!_)+*5G-3M!(_=2- z!{3ZgRgPF6oD+SIXk!g^YKhjHdUG6gIgH+=Ej6Egttl*>sbmf8)EWYzL25W3Ir=Zz zPu4b%yi8gW#h1Sd%_rHLtRBip+e50X(0C73LegZ2y;#O6cuZ@%rFV(+x<5Hg-F8yt zSi#3oG!M)mnWP2SVfO=vi$VEGwBO1nPtNJ!+{a)XIOPX;QYI7xk9QKlVd|YR&_wRr zzS>3s>I-jwkpSc{w!jwbdX0HoLx8e+kbHfW?ro0B}{gs1onYQKWWI1w@@P2(2m2aQi>Q;MSeeOr#t zv2q+wCVp`e3(W>Nab|RwD0@UPp#DwMuf|$DMC@U*jY34=mg}%Y_b;Qt?IxB3SQZtp z0K>Y>=e})2QhpdiR_X$WRpQP9q7ochAb2^Us)J9CW)!#K4ukzM`<+ut$v(e7Y%m%* z*h)$-aP-|+wIC}@>Qo@y6Zpz(Bf_Lgp3iI!9m{uC2yC zW(a6(QaWHc>$DjVrUTOgYS9DlMvCRV>q!P9Y=bCMkZ3$L!QreDv6>{a?8Y(PWOzzUtyR$28;${p=SFSH_2X=rsU#w6m^>rwU2#`{2>7AtsANJA`Y zeZxbL{@5r@))l3b4MAtl9%kyPxL0RH8^szDfxg49h#QhzNq|xXBJ2c7>uEW9;d9Vu z-GGUC1DfPFQZ=?^417heN`mrP4sFJHB;ArraM`#Xr1@23y(7$Os5PyCbuv4f6i)>yospj2Kc z_tSLUQhK_`QIDpR^VGStoL*PgxNXXtwX8`${#T#oOhk~6S#jf7O;R>zSDK~hjoJ58 zxVLHzq}_H4dc6{N!2V9rCt7L;YyWx6T-RhMFWiuO{WW}T&Gtw+LWG6Z#mNE@bRzo| zJ+GxGP2U*0BA9(^A~wlHqA6hZus?*NkXI18_dUY4`fVyRus1ZR`Q)3p@}Q%aFalGn z6Y1h{I}OkvV0Hzt+Z3C+#WUK>ajWW?^3A7NkN@s%RsyzrVOUIcp z3%CHij~tn>?CVzt#k+BDGCyI%;k1z#7^9Ay#;hT{U~4|e<_dy~Xt38KB*|A38m$*d{!z zL#M$DHYmse)bW|^t)#2yYELdz%*Lccbh%{jd^-ojVA=QF&%+IgIR�!3hq!a}W%> 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\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.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=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511174002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511174002-Diff-Config.rsc new file mode 100644 index 0000000..c0a49b9 --- /dev/null +++ b/MikroMaster/history/20260511/20260511174002-Diff-Config.rsc @@ -0,0 +1,18 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4306,4307c4306,4307 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +--- +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0