From 4df5faaf50c36d096ac92a8efd5e6bb893efc72f Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 05:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 05:40:18. --- .../20260511/20260511054002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511054002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511054002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511054002-Binary.backup create mode 100644 MikroMaster/20260511/20260511054002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511054002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511054002-Binary.backup b/MikroMaster/20260511/20260511054002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..d077130a9db1c808449846d36cfbb75add533590 GIT binary patch literal 302647 zcmV+aKLEh*sF8Cwo&*4QbM=F2_a+5mVAU=szWKud000O80004Z`SAPzLud%fl*_xx zWW9zjtf;l#K|K#7s``m&9u*_kc$DVBo=q*4wBT4E;jfZ*b!tOt0IKi<2Q(t&e=wH& zK#Z|VgFYFunO#3;v&LPbWNOBd_5k|m!XD$Gwf4b zQ&Pu*1blm%$o=)Y+%395$F*Go*+ks271CuLmRrbW9>9QVkd?c@l$KC8@4u^5d92z&p6Fbmr+F~iS+Xr)WGjn~! z-d!f`eQrjJe#cQ@_@CRGY`Opby^fv_J?B+c)l|N|V=*m{drK2$NL zF3?}_Z)V<^c07=f9P{iglGU-}xk-E@u(u5$`gW3+xIv(@FT1cKNPk5{ODkOE1&Z7! zMQuRQfSg*$*_t&JKTwt#B{0rfQTvJ0)=O_;k8Vqvg&_P42MEe_jC_?m@_K#w~g zu1@oxQHZdXI$KLu|4(86jq+mixWgtL?;CjRLNP59yrB1>O3GF4M)D=Rvp_MI!k#sb z2-e=eA^1+g=i$KxDL$9y@(iQYN~=TnoeHZ@$xO`NYW>Eet2!7tEMpXA29=C6raq>O zBwc2ptp1FsC~&^Y)(z*<{jU{&uwOw2d)5%N?c9s0PuolHU7YRo2~qU8%9m~O`C1`- zWdQuM*71U#;eh%GKm&gqbtG!GySs=skpTU=cN~}dbW=~yVy<5xms0=J`P8@F0owRG z%__0#keA&rjT?{So9%^!0BZWzfw{t-G5x)@hi|HmfZS*NLz0-7BY8umO`cBfn8f=n znJ99DE7Z+;Y+kEFZ%pY9-1;lR|lm6|ix2VRh4xQrzpFdKKc> z`uOl;DYikHi2SJ{3~z)g&tX&4HKV~`>Wr79KY|hK+U`a6kE-_ePa+ByZ16(H%{B{X z**2Sja9e+?8jY{E5OppG=~QxCc>J6>Y@2d;O(PM=UeK8J!KwPU|i8awe}&=E?~ z1;e_&XZ>BIqhu2Jr_4_X&!;|K@F_k)PSt)7=*vzt-%ol6!;=l?VpVZGXh+ok;GrW) zjG|4OCvkKyfx&6SXVVKcsyZP!Q;qr=E5uH}{|-}hwP<>Vow90r=kJ=tm8$+KfxBZk zXrF#hy4rr8B1(__N15l`m>Ly=E?VKc4dME&h1O;ff`JV}Ag3+awuiI~YJ!cDAAvMw z;hTH`FFFScDuM-JcmVa_31xl^FcD|Sa@0pwlVF99g5_aSN|L0*2;DZ7*r;CbRm00R zTN5;ZTq_KQP(8(;u|r1(KZj7)m{S@`bQqf&X)ZyJPqQX88W|91Hdj%i>?J9|TzoDr zp+_59nsgkFLmpULN;df<+=E#w&||q35LmDmZUD@H7VBVR1H&ek4hlRP`5_Sz%;Dm)R=*me0MqZ4>Vwo{pUSk>3CzVUg|7F=N268r%OoI6)7lHqunkX-H6bs*Ui$QnT8OA9dHGb(#u zrda6g{p_{Z48VYBnKB#a14?j+SUopX2Zi3OJjhTLCT+d`lR~?b(&T@2fJg{k`mbt; z4WZ{(mU{rdkbd6dZ`Z2FnTXjAkji+8v5R%-u~hu>!3L^YC4N|o>+=T29e^7-07)g8 zgR#h8CLxFGC(;134bJcFLaHY|`^4beJCGP>$)+uJ-qH>-zSGEY;p76g-}l7WvZoXB zC~_#)h2dI;E}ja|1Ro>^2@(l`uGG%GLWEM>IiunE9MLyUDlO}}cXnaYP$bJIeVYuf zK*)0%4=p;X=D}R*8o4J)&!kO6THNC;^6o*Lp<=3KMCEEfN#BVG!-M@LVX;UM&8qT? zgoEJcY+A0VA?=EZxzXG;F^AzHe1~+C%(H&P%=NfpD*RP}V(c(CKdm z4CNYDcp4t8RPn?9Q`X^AonpV1iW zmsxeLsgC~0Vsn+lM#|!IWOYauGhr=M_Sr)7q5FI~?diW-SB}Dis-)&}giN6Uc0+Uy z%$~<_m5LXR=vRL1cWKUkouA@Dc#F#H_yCFIL>VXspn^X=C(5Bx(xaQsI!1F25xJ4b zOPV=C`Ah9(PSDHrYCk<*#}zIiy`O4K+B6DH{5u8RYH;Jk67g}evGj3}5WdQS9B$6j zR!T+!F-I$Zv`D0uE5h;*M_4mW1%=+@HuxGlRg3+bjLOm)oERJ!!LMU@2NbrYZz-Xy zNrXHGS_yS`o3BT{bQqB@&kJ`dau%tH<_TUP9-y-cic4+;r@MvayM8aIg44bjaOHPQ7S-tUr|Z-Y@QM_Fp(DADIG#a#t+Fo77L7vju>BhW7d zc0FBj>^1SscL7fnbg?tjRo+ylpaHI!Rgzf)8-rOR@b8GC)B$5r=mnX#2C2+q9;wzib&yJvQF{V5EC_uf|pT>k5E5g{rIF z-uu4q+BjWj(3D^zooPVoC!$l0e?nhH*BW`CEOeTjNcuve~94E-T}F zn{jNXNtYy#)}mBJIe==C^W!whUD_DB=pnD5Dm93E=Vl=6|IrAWK7L#&e2!+GX*JJ3 zF#} zmHN%-XOKYj+1gz?iaVS=IKBtAJAx__#y@$-&$)(UYCwafZ!4B{aFa~_RDsAaj@sg9 zr5W_B3eR2ESW<~(n+Wfzv=!h>hZc!-_!;khcC~Z$#RVTR5&G; z+$bWD(PfUE6tl&C09tmbd$*g0BZ!B@Y!y%@_&y8a$nQ%Pmeh6U*vXi#c$@5_J{%c= z=cO-D5xrjFPap6Pp;eZ{;@U3!IpZWYcFK_;*!XYJV1=qdWe9cTPMAtJDW0-#J9StO ztQY}+-=%rS7GsojG}~iZEvX{S5$8#_c}?NX z8v!XE{#|I+pZ>V}c*lUu&DtGy{Lr zGR;tNDicXqrgD$^sOQ8|Aa&-5Kdj1+syOkOZBXS7WR#h3(oB+4Ie%Z{$;0TYE|-!> z8X{-DeBWf0ke-a^F;%^F)vn=Nz4;Yl4-cwVTb!6|5SDAa$f}tc^9%igNp=;^s3#-H zyqCwN9*^MftpZQC!yv?{pLo+(5HIy0$`?beD;$HeYnCkEx+S)%&=-8XvozN2QmwHi? z6tlane!L1Tj7N>-?7P29WpGJk0lSo;hZz!T5NE{Jw9+0{%7VbETulyrYoD>YkenQ& zTBFHR)6>W;xk0bPmeGYt%FS^ndUkGM+kWp7J8WH%iryKthSP5gga7FqHBvq-FZuRL zRlO~0#z^*8J??BMP@;HoH#j2cVA~^O4wfw#G|lizc+fxzYmE`$mC0&Ou} z5Xle-a+h-IU8I_`Y&MV;DV<`vEYt47XTQa5z1ct6p>_i@F+^ ziikuyLM;(GOFgPvXfqugZ!+0XyUz^0)>`ecqOCfk`I`|Ua|i&7cvl^Hq-eU6;~NZ> z(ynvHj6opD`5b{HOwaaH^nWScgiwy0R^Zy9C2evg&r^3F^x=NUkK!Mf^2=LAfzfoU z{4jH^Vf-FBX&l%I3xGkmVpN!M5a7>21o-h$jWo=9 z^Y)vdy>6kxHh;^xRrKm6$uug1xBO}59!UQ?U_-E|BZ zK`_Iq&UJs=3VALYvykoN)R}A}Op!_Sw9%q*T?S>z0+{eYY&=$qjfU-OHa*#ANRoP# zB~EpdB9;dXM9=*T%~SagL##QI)en*er7_7EbugeTN$lsd-r-A|c8Ev07jiJa9UHoj zr1-i%oSR8!J785f3392O;g~A8LVDzm?CBOKbEi620@M-A_UlpRO4yxIR6#@Q^B$u5 zIXSt)ht)vWI6DdJC_`0OAAen=zK(G|Wqp1CE-%NW-W}0QzqtA;2Er{M zM)(2;7RA7NO)VVsvJOsX!vl4JA2~uC-s`AYGmJw3ICd)7rmd z6ivo9$%YH4R_66JK0}`9y<%r*<%ci4Ck(QRth+D&4(Wd0 zg!0Zg3VvQJWo={%sn9j{S13dvs-HJH?OSei0f8z%_hE>dF7V5>{{->T&O*#}!48zL zXtpYvKCSsFg^e(G4MLFwV^_@VJD!yC;7x+%zp`6DVyo`CU_OOm)r#Z=5)7a9r##vv#lMKHjdH@DS+$eBq}akBhtLT$*#6;s6I zn?(LpgafHq5S&6HuPOdDv4x=iu(i3KfS!bMilS;Hue_{_jvfTszSH_|u%iiX6*I>V zJ(r@#p#ol^#l+yYZ_5tf}NO@;)B=XuDlL@h%4Nk zZZZAreah|n7d2*PZy*^H1+Vjn}i7X6uL{5 zGv?3f<6FclI|Ey0`vYLZt8p$qINb_OXuE6aPp;FASP!D~WErLt)9+76N2e9f&BE^( z7bdg8(r!|^xj*tZ2#;a(oA~ryJ<&f%)m@0z^dNJ@LkUCE<7|fb6le5v?CEHAh+$D! z&%gfsl5%cGfX%B}2t!F_7WDAEQgUSV9t0A>&nl^?#@n(QL;E#L z`fAWTopTN?yVO+Gx-go$?6qMa(jh*VOA*l?x4$l!9KsoFaPnRi$XY>bTd$j*t90gp zEaF`n4YUoixHcSgB#W0P=MN=$?7toj&q3vQh8&UiiGk;!VCPWDL~d6SD4+^QJjdc8 zC!O)jvZDz$dAKEoIf%BBoGUg*YiQye$AhAEdy*ti7oeBBP8n6%2Wxe;DNvLZWkaCe z5934HUi9lveYOW8*Q^Kj{ugYiLiZ1 zL~`^}cyKh4Fu-TZ@~c1`V;ZEMO%f#WPmLX5iaO-|_}ed6_5>=K#i|OMU3VvbeI+W{ zB;FQ5%~g)v>P;fJ0~gvPLjYctWL2=l|d`Rgq0nebM*_= zv?k50@x^STnL&#PmZIAL6T3&Hx-pE^ND=Wm(2le{CsC+MICaTxl`i$%-FZ2L+c4Nz zSZ2M7A#_CUxkylsmXXl#(|SCrmep<0l7!T{>guXas+dcDzlb5#B`B&REPlfaW0wAC zf8wq|?%O;NDziZ8TqfPu5|CQg8n6&$o!nREQNP{EzHn8<6n=D^Bf7~56t4WSXAPio z-tInLAtWu(V7t<1xVs}B7>RD+7a#F|0p^UZhgm_!cb=pmRt#EKAz-jo+ysM*q`onX?r2Ca-xzF^4WiB#-e*w#@NEZoul@5n09J&RCV6tsszl%kB0${jCz z0%7`QO8q=K=|nm32{Ov}3v`KlP+Rk>eubaq4gaVbtAIV$b+3H7OZM`KpcR#XhC!8R zRMdDkJoir0O~r#YVUf%ZSZcWpW=nw%^8|o-|J^A1eg+YUP;(rfnIgKnGAR4fx7+4d zcp)t)h_S#gj<@?Pe%%-eb0$Ip+2ik7ZprvG_ZJc;NLqfZ?v1hSf$TfWkL7aYz`ymZ zX7F&9c}#*}p2fc~CJC!|-h&&`nAyWY71pSWy0(6K-2J&zfR`)kxr3_@|4$E$7VAS7 z|LPBCiaU3*`?zdQh57I@E#)l9`8Q!Jmzp_Q%j>%taKM*V9UvZ-R4EN5%EQ$ZFWYk^{azMKN@jfm`#WGN||X1b;1yIi)Ij_T%x% z>>n6~yKV|LVi7GsiJ(ijg@Mo6<28#KcYT@<7z8#-5>!V@-#)j;f$EPB&P^!(`dt+#)En5>U zo13?VjcWJpT8LJ_LW$#QuWHwRZ;1b(j@<|WfnaciP5H#Fcef(CLgZ}VA9p@ZAjjMp zv~(aVT>j!R!OUU_joXKY$7a4eMI#%88oeTjYnOHBd7TWeN(R_ndasM=5}EP`4JU7N z`CmGx=ud9Hc=uH%>p)-5tp1v+c38N*w{*@LZC}H(dqI)CDLyv=)di!+>ydNF%v$=8 zBqK^8!f{J6XSOp1ElbsU!}syvWI8l-#`$9!V{ zPlXQjcg*445-IR9Hm}VGT6d#gs5Kbu+FMx?KsMD%uJ+!~dy`G(Dw}CDOU;RmIot?| z((}5CTTjs@ST21YzgJYOlgsaoBg<1WchQJ4TzyU)Gy?z3>8u-7aPa_=(va4(tv@is z*JQ1_KT7wg7tmm}pVwva0I)_sVN92JjF)ePpM!{tMgCz-bL78&4hi0Ky*6F3tNnrH zI(MrEl(b(=%NlyknZLI0&>4d$2WbQbOM7@ViIDiv_pt3zVJhUt>p!f{`Qv8JVm?2* ztb22Ne*jAi_k>I5gNXE63xO*yw#!tSrCdoAQ?p0qccAXLcor53>(lHh(>-n7`YbDA zdVB`MDD29zcLOzJ#H|c(FWsKjk8$8&(Ve*7Ww_i}-Fchm)k1V{)qEMK0&1Y!>F2+9 zkx+rvk zPjvcAml|18v&bcfoXjO~p>bd`XI{1F3ATk5RBuq8n&lu^7c$|iaf@(s*jR3H2QpD# zcy|iC_UF?pAvbu-)(G7BT5KoT}JulT~jrM*atru6u(5jE|~Z+Jz2q#CC?P=%#_ME?2{w zY=6M~y+t=AQJeS|;%a~@?h zW?8jLvDS^^@$kEti%E}0fIKslKqjT7_|OBEgT#b)0oGs5DYY>6-{p@Tad=@3)w3fn zq?_Aev?dYw6kjU#n2cvLP}l+UU1IM@$16?;WY%XF02a8yCkPRxpx;m&mHl)zMzGdmQdhl`S4 zLFJF1N9lZbI-M)21kXRYlyb`?7XqB?W6%v!zhP6}`7oSV85oBazMFQ8SEOEN{_aj` zCSM)S>vk|sS%G`VpGNw7!hAIV!k9Poqj(%uU-p7U&`%mFFRk5tZ25+2T?>k#KaLv_Q0UQCJphk}a(VSjNUqYMR;MfDfDaJ`WvY3{ z#6VyZVMznH?Q&zNq?c+__ZA_55X(tx#AtP8IS(Oi5yDwW5jT-@6kaJ@|Owma< zL^)$>doCiW$Co8;>n8w?eu8OAy`M>cka;*tn?}e{gqL7Zlyf9o1bA)R!=S;MUW^4i z6s1F-2k+YeXUK%t`{j+$d1bt3jKblQ)N%6aU-ARA9X|V!3Nxgy4rj5K!|4_`Su|mv zFXR z<}NA3n1L}UnwY0@n+>*oi}qhD%klq}nuC_(HK$w&_}vykdZI9i%h^jNA&jm63tok0 zVrS%VaKkwLM?9{h&5>2GskZ0zsr7K$c9wYwl;}TaQXMr9*C9|XYnDG$N?GB?X;BT( z8iLj8Xe^R9^3K1h%pgX^H_+yOzR8}<$BW){${)nF@*7Oz!W@#u8-7=HT~=tuKutG(sO%a&32iFS;4i_!X}TT|Ovfs4 zV4$|6)V?6}j07&n(>SvDT@{rd86le^Z$%^A)EdhnlqpV(j8+hl0y+1zA^{sCncdmN z&-l(&M=rLzC#Lz4V(lHL8fqMmf>;bRcucn@jnT!e~>ZB1=xNM^F|;hFE#gt3lAE=`%nXL_CP5J6#6<0 z>)1pQ)5HD4nS);iy2iZs2k+rVcCW77Y7xa!@EQ&5@m&_(vda0Y15P!jzVJ;wvQ;1C z+)|Ifth{-I9BL`dIRu^gT9W~ph^iaFYQhaxX}k}f3YkivD^-p^(v2q8$Oe6HRqO^O zaUk{ZXyCGW+qRl(#W51SQ3vH+HRIz8BfE%s)z@~$E?Xg?JGNPCLx6|sGNM^Hb!fXW zH(P!P?OJ)gMHoLbnKaQt=tH!`)5HSBHzsANKg={OS4}!{7)a4_VGX8(im+Cdv4rNt zqOkt_n@MQML80)(iEERy=#=b_{i$smaC-#%oh^)?aeIqbzmoKKr0$!ZJ*R|e^Lv>m z0oruov76WN%B0QviK@DY8Qj)u4avt)!A(PUBfnbNyYDjFiQ82y@Z4#-)t*Obbl)n* zx227o&5=QOiPf@d8n4o%AN_tI z-nI}AJbh+D1({d{U@^RSttc;bYzGl80m2`|N7BuoB+=8^>Z^7xJBIcyZ*tvUi>Lwn zwssB?{^h5IT0b_HXhueN#q6K3l8`l;0*; zJ?I~Lfso<0geJnuN%~G0G*Skv(6gCtxx4?fBCZYCb&Akx*lzt-ck*yjb%j3w1(vXh z>*BUt42@UR22sK+W+$-k9B_mWRKTS2-$qz0m(?2r%rplwVS|hJ_1D2AaM|*dgaeZV zMO@elkYp=jH+@nr^``CTgegvvWmF$W@}#JsUU58BEKa@6R9>KWbThh#d>}B_pfJMv zN}m{Vz5W9stX%WV`@mz&=xOY}y`s-3P-Oue+$;|Nh$#Fu{=SYAX6Fjp6ErTfNWHB@ zW?UZF!`}8*rDXU5F(QK?`lkLHRk9a^P}kxN=5g`&nzkbfP3PxFNpwM{{FJ2oJkrbT zs2&Y|O?}de{Pg<;80q@9Fx!iVLf6YZRF~Z&6h_GL>3^=LC&*Sv@Bq`|=16okgc72~ zk8Nyim>0}JVKtVz=Se{c9%Q^a!rCIma*;{+2QfS@Jog!Kl0Q{!p?z-H>XAJEMkp*b z^gsw=hr8v&>0so2D1ss#)=ls)R;|@xlUDQ1XGeblE?GWL)#R;~SMS0rUU-dPF~!qN z1d~S$CT;jA0O)Jb118XEp>V(gNCZ>nkd!<}>94Ay<7>>XICLPYi&Eg%MXYg4mv|-DlWEq7o z(OW2g{FlGXzGfP7?bV2;QsmU53QaDeH#W@e?=pRmwUNWACI5&E)}*U4A0cb{R8_Ln zH102P5Yl^HcHlT~=;S;RdLg(+xPU0( zLY(*G;Gc$W?_or_OImu>py|r>HnM(x-6_L|H7f5u^ zIKoitCJXtB?~;EKg5W;s7%9)w15asmsE)VJE(mC67eimMShln$WjGLe+OE)#RP_DF zx18LN4#pYA-jKa0%r}n4T_I9^VflinezHk_5SgV8cdC4p z0hQE;MEXrW&EySKKofwb=kDd$k<1ki0F0;y@#7UNj^gD!+~wZJHt*`fm*&C;g~cjT zRz%f!O!H^^!9rph91U`-8TZN43&Pv3WupDLGy9&IHGN= z@k7aEU(^k?=yy9`gO&J2jAaz(EQHAJ8oyB9*cgsl6ij$1MTglve{WqR&Cifj7AglU zlg%-H$fqb-Z)}UZ?P7)c194cOqN|1zQ6A_^C#G2IH*2*}evxevw*}e=Yt)_Yi zQE`0nsfDhfjoZAB>mFw+Hpps%fq(zP(=a{_@R^^6A)rx&YM>aTGvs6W8ueRnP)Bnn z@2WlUy3}W-8exr?wyYbIigJW9ZM5v!G#2}O!W3-$yPJSS;K#rr?5Gf(omwa`?y~p1 zR->CQJsi{TcV+W5z!T74UQT<*H)CwHO9co|bV3ocSWwTtrp=#w{h#TtDH~(Nur|Cw-pt9m0n`)rmG5$WFcSZ0(ji4?dFCJl9R(`8!Af~ zzQGhXf|$jxiscbGnC>LPo&=~G816B?odrDuwNx!<3p*`K5^d!aa)HrC$!ApsC0AhmGewk zK>fuBZ1)jcknYU9!Ikk*Vit+qI>`#=2&$!iYpK^HBSF3tQ-O3=aiCi437JTuNobMH zoOb3IU-+KQN*A6~?0Wk5FI^n|p`*d7lsyYMwC}z}EY|u(hw6`uBj9#&%2fi?Zj*8h z|2P0Lsd^W$( zFC;RD26Rs`7rEfpISJ=7fyF^N&>4O@+GN8JCJJ!M0)!lY14HWpg8!{ujbY+Y>vv#PK98(f`F(g^YG zT6gKid?(z{B==&J0n-kBjy!25#pzvI6$M92Z+EKst05Nz9&bGm`sD8@zmO0$nwk0O zhL*zKOir(<1i%ZVptQr@z?yWFNtvGhe{#Qa25i}k=sF|jQw5{Rx z{vE5;OrXq#ao3f*%{u8hIKGRow>TJ% znT`sT%xynweH4_tKJ~NYa!;v@t9DTf!5+49s|ydba}<%$-|aG3Ju!eaqtWVr%?qe!uOSOCowf4&7%qeFLQZFKDjA))FWuV03pTtFbwBcIar0d6px$c zRj4&uH=BO#tA=zW6(+kdOJ=3Omdxqil#Z#paDF5g>fHNZf z-p^Ob~iDhC;Yo;Rw}w2_dBfP2>IYQd6*U>e{-0NtfY zVirA79C!z;i5EpsEi`BKy=b6n-5SJ8nVw1xI-frKEk0^z>CO=2SzKX}CK}3FQOWjH?S1+NJ{6X3R>AU6~So ziw?YyTczmdb_S;2O}?l^>GV4PeQ_I8U>w@5PzVc7G-ZZ;m}3b?#=&hMg+)l>x&g8H zL6lox(_I?Et&wGy%L52=w*BY5df%;Z zmDBbNV9)XQnK>0KfDbm(ThY(<{OVmtzWb1zJLld_v-eK65V4( zBe>-sV>f@O^wz!ky7F_%szY8U0;};srPAT8tRo@37+?B1F9J83d{25)DXuq%ERUtU zv*dwrv`TEgv9Z7(&iAownZw|YCthEs=J^p44j%*tTM1K14kCs2rS2!q-3{%+KAGaU z>B?j+87Jk)Cop0e_>zFMoxDPX2>DGbR6v=t*R;&adWHXb@B6EHdX}53lw&u?pQj7iY zi`R_DRuI)OP6-_v45Q51XoD$Qr~+=0A|1TW^Pqj>hPg!pQ1p2zc8xWMD$EITG+wH$ zsSbugwMsQOjK_*^jJ8W@vSB4&VEIz@QwqBYf4W`lqXrsO_~Qbi7r3mKQM;`}a*L(E zh@UH!kvx8LCb04DGgqyx)&cAsHCaKY4)AOCR|1#4wYMq6T6)?Y%QMWYQ8XlJ7j&dX zqh#l*wZ`90Sfvo3qPZs!Qw}xP$$ckGD_f5TI6^F^A_@*#UJ1%~9y)9aBOrI0h)VQX z$AaY50xsFB2S?}J8rHza*Nw7a=Vn-0%!CM z8yE8ZV}-$xM^N0(>5J@-9@}8M&-?*TMSO$SiuL04Yqo`_{cn?FbhN;SQLi4Mp?Z~!ns|=Tc_C6Esa8*?x4MJ7hd$9!h|i#m$0BmB z@3zFjt_3s)aYXwqo$@h`5?jmur(qJMQ-X_cP!EmnO`)f8>J?gzJCp^tX{C{6C@-WwVk%`)T?X-20=2d8`3;#>^16-c zrqaUa(J!UrHc*Otk?&khhu-3VFSI@wVReJ{h3{|9F;n9c{8)A zYLFisgZGKL~nmCA+u#R3(vQ9o(qSTOW;y!=j4}e3TW4%Q?u}e}aJz5E#xU zxGgTkN`EgqDq?MJh?9~eUp@LYe$5ISPbkcbI>aCy|{mq6j!vUjkcSGLs(TAbc zzjZ`u7Y>Ck_72CivB4Z0;cP__y1CV$;?B(<_orJZjBY?Rw{ zBaFPe14weJBE!?Is!xwR*7JRbWux|$iF~wdf+xz zwbtM^EdDYj2|5$6J*SjeLcT1Ioy|uUyOf(Bf{3hTR+Dl=+%YWDS=Wi{35Gl>Z7$6c zJr$R-u%I{rb1Wh_R$Oo~aA*2=0LE_erXd#nB{UEJAK{yu)etGN448ZL85=R79R>-f zHTmu)H_mrnuN(bd5)f=DHaoBGu!!{zAD?9bTQM3Sx5KWyRd00FF)3ucp$#W!zf0(P zd?TTDb#nmXdl~2y{kUo&YGuyI^jMk9bzv0z=qj(R1v{Y2{E=NOkJY_IaQv3dyDcwu z)4?z`lbcUm5!R{5lAi$&k5suf^xY-7)wE1_;$?88F?Bt>KllHv~%<-|lNx;0ocszy@ zmkDkeGNOIsiK$Vrn||=m7pVFizcVyS=sQwi)LHE+#+kn6O8Qn3AIS4o@UE?4>9}CE zn?F}z-YCO2i3U++F=a?0(n3CJ)p`OJ2{q>-lYD`*v{>*RQ6T~I;uEG{vGTu-Fx6x7 zArCs3CB|jZ+@X2C#L4g&C(i5{<6zB+yT`XND|`5PWqHNc2y{ z9$Rx6EZ%da`_!Lc$!GXPEdp5L#0vrM8dyC;$lB2?Q2jmiYuM= zH+R`yoLrP;YkDEN$TTv@|-2VnQ@vwzNNY3AU z5Ha5dP`-fFhZgwppEjt*s@H( z@se}?{~$HHuayE}iF_3&x@oT9$GXhnaj|bTlAGUi(o&F{vo@3VdcmeY`OpB8>AJlY zHCO1x{Z=-nCONocpEccP>C$to`J&-F+O?R+6$A5khggh`>c3o~XA9;+a>q#&O+cyt$P)ydO?_tkANF#(UrTbUTHE$ss;)|{XFAoz z0;;_KFMJ%Kh{YNgdu}wsPKsC)5d9+&XVu|7Q{`uh%-03PAIt`A&7$sd61ANgMlf$I z#E5e7aMVj=r_)N9sj`nwr)J* z@-`*@!y^R|RCigdEntr|9&k>T_(mbTEzmkAUWq!^qbb^p1O$v}n@~&TFa8_l;=_bR z5$Wv8EbU_oM|1N?W-__EM?4@^is&bR4h*VA8%d>>{%V&l*QodY-777-HsjV9rqHr6 zyns_c2}F=7$Z$aLC8BU#z~0|#eeE?jH%t$cn%8S-!TA(hgdycBQ~4&bEq5W>;6m&zG(kS zOC(<``LLF8DhMGt>d+{c5z^B!o>ZWQNqz`5sVT9Acl{kadwLiJxwSc|f_pPOk!qzB zJO=~tm8EJ)ba%TPeta#F7M$s1Fu`=U0b^jYn=1-wpP_~Sl-X5j27XHCT8;0${b5C& zWO{jQX|OKcQABieiP^e|ChkVDm~bN4)K|87>zG2=(`53cP^B2-MGDPm%4t3#9H#cR zjW4P@V;QDDarbXKO5|pR?VlHZP_(blO~FKw=qtSi4{EI0>;J^3mm4^)MT505dXm<=l1NrX6%x)L zZVkWZrSW`)kRlgB3|}yQQv|)#!P>mac9W=GH;)1|X9RPG%g%sOsRBsF^Q##Wfeu!u z-}k{&F1BE0eMda%o0G=5hGvZn|Fm4U0oSNdI7u43TI_Qii7tycqd(jYFYZRyjx2sf zI5OqU8n)&-%@9@5 z;FY{vZ8ruba^9Nu%HZ?=fr~<(0Fc~2Hw(MB=B-Yyy;s=`wU^8 zI6kASGc5G_*L=KFBGM)KcmqZbF7x(ABtuAYi}`B(I4e%FTWUoN<@(t!(>#lfNe-rd z`+(3_e?4x%^&|lQKLEhHs?ywhfVVI>*VpRNoakLAVF?{B%*&OEtOiRex&1pWg7rw? zWDQ+;?{x*OBH8*A)Q%p%5y%hf0R@&uZ%#Zt4{zy3xHgECXz2!bW#tzu)08UKs&gLs z0%$_6mYO(N+TO-fh{}CmMD_qU=r29GVQ!L$#Yg>pIzgo~N^SMboqq{X&@eg!)x;wyrQ8)3Z+|d(1_}!Kzhy>aaCegL>uBCT`(a zuZ$2?YIr71y8{tP%k1=(o5Fi!%ZRPfJ0_-xSAo{=VU_fNpLyoV=y-fr=d?S&QB4c*EXAU zxlmuo%nx>uiWg3*Hw(bK&4euEe4;HL$#bIIP9>e$3ASN&o(Zifj2;MSf0R{#E-_sC zQ*k8aJz71P{U&XY7$91I z>&YfO9Opij`}GPlm%|+ZW2)E`2zE*^bluD-z-{>*ZqL1BjIzYxqPA1U-Jj_$XWMxe zO$*9M>gn2;^h2+LOzYhEzEHz?Hq{nH3)8UY|EgLGN3k>v!JuSD(@1zF4H_>UBVf>g z|I}Z?7VtdO`pok2HuQomd^TUG#f-Ft|2Ve44X?_XnBGQaMt4lPl?be(bP1$7Po)IH zKV-WYqlSK5m81bq@+(G7B6_OxR=I{QeZKAnn3nv6KNkMXuQ)Q;(;~B`9Z*7q6$zEi zMn5%1!tkIS2>44#;S^FtUrWu6|%5tqZNqlP>;6lNKT?jf4)Rcyc$2$jo~&WBFV-dcF6OUU&5=f`Y{N zFAh$5g>IiF3~Awpwzm~EeB2v*S?LMOiUv{L*ZI6>XO|-08b(L`aDCSjw#w^Z(DTs;OHTW!NvLP&YB9c^lqsR2A&79 zt)K50GCy0wnCJ9T1(?;!n5P|mY9|#9cMCFtxB9yvB>`$djdG&-r;_9#&_b`zo7%m0`5MP6s~K)=v^i8V<7KOMgKx+R zQktGzBW#IT@td`5uJkhfxkqfU08%&T93-eod8CuaC^&F@Psx}>+vHGt&?Ngdpe2e zCS$9>7@C3zov{nER-N(lgl(v{u(@;a(pGAvWY_0|Ciz1xy;LnR@Lq6YS9X+A5q({y z!M3ZWa0OY4koo$rxOJFUisJx}%K)Vm!*$>q5xAoe_WV!DV~vqmE_P!_i&9&+q%Rpj zgZYrNatL&QCcD^E5<+jMaBAkEh?ZrAi9luTkX7mx-SyFEQkAmS;p<{U#WZkW2eg8`HI# zJZ4(y>OIIlNjkR*;bpZx!GbrNFGy$Qqqdo-gb-NVu9%hXcHi&|$A1b=8$6O9t!f$u z2GM4Q;j4hlA^+vYt(|t5u7RsZjf@NsBmR#dihs>~Mc8+5P(joK5Lf1N)!w(BOu9YPpT2eiImL~8W@J5}t+0g#ih^9baIt60l4R(v zrH`oH*r;1xiHmw~N;}#N%Ol02@ho1nY4EmiK}H>RehWn$ko^SB5a6hMsARSdvITX& z0UUanwO}gJW`#GX_6DwwLFP;z)oUV`VfArT_^Vu7gIcI2O_gu>jK zU|7%wE#}P zB_=ee$r`qMcMSF;is>pOKmw-(6XGQ4WR!%KUFXyF6D= zjYJ!8y=emQyQa-NlveUO#_!Qmssh*>6`~*gHZwboJIT_?4;2$`+SOCWRQ#d4sXLw8 zIP&Pc|6TH1;zT{_1ccR22vp0Oa8-`{5p z&f(n+^k@Q3)kImaT)uxI`UVwVM#3>h78a7G1^IU1+*3P-0sZH4oQH@}MAjA9xa+Du zRd(pogut=fIoUx3Yb_A}A;Bp)Ybo@?cEk{-BjH(Rt&T*l<6^}AmoP7NlITjPNGtr} zX1EDLvo=SRf2$GVy(gU7Q>k2 z!)*yfyE$vf?Xh_a_1%UCONm*M6Sh*UZozmv*)uew*!gsy%Fti{FaUz?JughO9V-UP zh}>rdCLF7ax~dTnkZ?ihPt%UOEF)RPQJ}Q${vT4IFFl?O{Pf}Ruxr~WxIkytgvCSb z%w5|q4SZLroJ&;{m9ufGgen0L5-c$-Ye_}OYb&499$0%{(DOhGQXy?VU0KAcI$$rK ztW`Ks1(CdlHGR&!)#X6794Mc0qs2W;6Jk&&VH9wR!Sw=b5}+m}7a)4GfgdT6mAJ;dx8gN97`*|ZBghau0MZ#;D2oyjWL zP0uATjgXYsqns928mqSFu3C$I^3Vby{ErBjjf4G>HE-@WRza```;>TXIf8Tbq@M^H z*XBhvroo(OqzSXg#L7azoKzzm0Xr z=eBgS|FB?Z&ev+Z48qnz=xWPN>(SMXVf2@tkb=EUTl)m6$_qo9;xsz7v;~epxjZMs z<3ci z&`-_EILsm7e$UzJb%F=%gc!jnUdh)9X)tb(r+E3OyD?lz=^IsjQWgsk0sqEiF;3-P zL8v7hcLGI@9HGWwYXfikhfahH1?~f)CqHU6Sx#|fXS}!L0zgA)Tb)N|*Ci$jjs(VZ z(g0B?WN=-buS@Fs)MD%fMip!j<;^?+J+rW6Tt0eDT8JLtxnPoU3==M#D@VWi*9)A6 z2h@Xd)B%Pe<{OmDWh1kH+!B2L$r`(&XAA*4J=O(O9PGS7FV85Q1yVrq3o!>3oM=nF z5F7C+SFoxr<49yxpK$`aA`^8W_?bFTh2NgS>ET5<^gNgg&M4Ng7uBM{+r#G{Q`xDk%%$CjK`ke$9 zSkKZXG2uZZRYy1}IWLs;kQj!+rqlP$iD5edq(adkPEIZ%==*m&|7;F1`v-6Z%1hRd zg{9%&y0)1C^1wv9F75qkEfw#Uo5~Q~tFfN9jbqs9()&R-n(W(mB*QGU37c1>a$5z+ z_%qC8yY$Np_&hr|kZKRT;ASKghVaiVqBuv^wLj1)c(JBeD}{$oG_asRGw!Fq-=c8Fw_7U=UpG>~*edEpwsB3F2ghiE$)nZ76bS zsY2%0pmIT0ZM3}!cQ0(p%{A6gNa6-M_S?@eT0qCE<&RWLrrtk%Ayndn92Hqzzo&{& zFf47TF&Zt_?d(@rMg4i$QvkAXJTC#by|Tz|7z0q93#Lj=vvIMlc1m2SYzM2(k1mC@88nU^xh54Gf?RhN7MhaWLUKTgJ9oy2y z+RX;{Sru*owb8yergvhrMu{MrX|N;ZhD&*81rW}(UW|n1KGl6l=CAE9p8F#!xa=q6 zNYeR1Lp^47GHi)KkT?-~^_jf%ZJnIwtIpA*I=|btwzu6x@mQDOE(ftaAZw8!GVYNC z`j;<-!ar1kC1Y)!T6=D;Rf88?I)$KZ%igkf~bl zpmgPq65elq{;TR{4a5$Us4sV-nQb>S45B$VQtOxmGn4Cc0VtV+JGYsuY5#Ufv@Ws* zI1eibXwnvJof7&7)26o-Lzpd_zxSFy zx@*zlH*D5%cx=UeN;xexy+^{UJ}Oh%FmNAu|7m=QdTOnHk>Q%7TqZRA+m`)woN^w( z0S1qP$;NCY&jO#0R}@($BNb9ri4Y;HR3Qc0EV;I_+wWNN|9%gFDb+9_4Gl);B4!H(-oo7<=MPu$L|2zyN6EJ8?3^# z_7t?e(2lvfWSB~db3jvjE+g%Yv*qw~W2%B%!2#ha8!!t#a#Qb+0!{~f5Q?03B7eDE>`kH!oFgu#{<=eS(V+q*5L#k%S!t*vAdYUIvy1Z6scE9`g9 z%y&%UqMv|%hK00=s0ZD3mNTZ=ULnxE?I25Hyv1cbNBuZj8Q)e#W`DF+ zZ0%wNUnQ}W*qR)4x)}lE_+jaHEqq~ zR^vO!&+G+$CEo+v@1gM1iEVXbLy&bbstb2UE4>Syn5o_HUf-ca{M}s+I@tgUiVni< zYvhu|1EWnlBy|xyTP~s?{$$NkyEn>+WIZnAmD5qc9$ss0*)FDMBH;DO%|_yxelp-f zzO^iS!zJ*;br#=clxn(6-k2E=UjuG5>yi9;`Q81iv3RPG@%LR+VccLs56Nhu&-hbreGlj>hSJo;9Y*-;g;HXCw!}kf=9@YHeeaTJmyunJpQC+d< zsxA}$T^ysosydh(!NQ{rqZU=E>KBr$X-6sGyX5%BaA=K<7l$tOz$N&JphRaaot1t_ zf!Qu)b86B21c!k6ibN>6%wH#b)OYpackGCCLx?mi;V79{KKc)Ph1_~vgSqBZJG;{^ zp4f|@-$)D$yF;Z4$pG4Zs`T#&iD-IA5Q#uqd1j8Xh4s7kVB zxUyEw9urTZrw|EBktb&WWBmjq10bzj(}G~j9)!A^jJ46RZRi0v$KA%LoN$Qbkdib9 zJJAHtD1#$8Fu@5hmCU?$*JlC>fPFFmz|SV}1J&!kUF z>6*4A$6(NMuJ@;{6JV4uNXWgMPSgr8jI_u#!kNgr)+0-FGJ9Y^cW|{~f$nl=p>SHE zB7cHm()t<(e}x1-K8*&=c7`$+Aij|+=wgafkJHui*w{A4vd$2I?2VLuG{i3cL;A>H&b^ox?#Ekwe&q z$4>~^9BsAcYe_r3d)H?3SlYqMXy?dKjlRa~dj58r&G`klpZaF%MWl6 zs?P7xH>fj=h6AMXQlA?@Y{^jBEWy*=e&=?ai3lE8fBBBq(t+FvDDp7~pWphnyull( zGyLzszq1`YA(oG@jpPM$TZbVOe|6@F>ot;U0gp8lD**bINt*TyE5@W8z}5Z>jG>S- z5iu}xNU&8YAMwKWJzA>-Ryds?iqR06v-92udv zaqB6hFW}V^TD$gG9kYU$9L?+N1b6Hv2gjJ4FtEZ-$V`Qy)Td>cPPAv@xso_I5ttxT zQM}itdr6Y!=rTTw0YTImW{9U<@~t_(d0$=aU<7Xat=7HtOGG>pgL-G+nZ#MIe-BsH z5X&Lu&TE9nZkd`Dfk+NOCsqUJNp;#6_e6U!7+MM-;+5r^3MCnF(2osCroiz6gfzA$ z>y^8Z>a(U8+!VSXlvqI#msAlbo{3J%Zf0kb=9A5ucD*=l)XxecPZnJ>Wg#^kHk?au z5_Um!Zt|$e{zIRl(uW;Ry@ibcR$Gt`nDo9kdC(D!jPc!+UTekC_g}C;&?r%5P};j~ zrEo=SS3iCfBZL3UYRjOb!|oPii-KunfW`{I?MMPla1JAlV_tTC6v`Q!i=K;G1Y*P+ zXw{sB<;TSJsR$MjuqMai^xtEbK4;5TfQexTZthE4K0V#j=aU(0#vlfk2inAOn`l$b z1|~#_OQwiGPy#98*T32$U1*-~$#csNNQ3_FBryGMRl45+Zc+phaJ_skl#43wNSkNi z5L&FNpS3Y5Wve6^_R5wm!(5?%@=ZPbS$=?*U;yEJbJvyCt0_z3O9~yM`2H;B6&(^F z?bd&S;j znIQke)pHpX#IGGd4?110n@%6uhNo-2!aj$P38>+97+7rk?x--N_xL$H*55Hz^R=$9 zOq&G=dQ;?gr9$8V3Wpj6{>OQ!ysSRDXvNlsfA@FTep=FA^pQzlFiRNox zFJ(r*NM#tP?5Q6|AXm-z^B-+zYF($yvp>h98;Op2M6MVxj-~2Hwg9GEdv$G7L1oF% zO=-jvz&xH$*Tx11MRXX|@e*=M?Qui}1hQcJ6KkY@z~l;N%Nla$I2P`0DhdRA zo?*e)b(Uua>n$P#a#wQ?c@o_E>N&h*ame7asAf205Ub)C)_?xiWicTET4dCp_H3+I z&%ik7UYt$UuvURWQ$f_g4$1L=7ffl|#iN_9KWD|WodCx3DmLaxuZH;76u)zj$HVF{u<13^b=uWY~Tlr2wF0 zR0pP7@X5|=T3|57UYGpCV0j&5=<2qBGiIajxL!{Gg7A`Qx(Qo?Mm4;$$Os_OUXz%Z zT(wL}1;|%UN&r{}iH{_CQpqA6d<*~`h&gP#M751DR-c}|gDD==K*4T?U&?{B!+%Sv zSnj`>OB0n(laH^8hWa#iz}FNTZ#UszT4n!%OxBhMZ3nE@a!1)e9H)*l(Km-9}@sL)Rnvyiw%)C@KUNxcE^~~;wdwBVG zD6LLpHb(RGItr#-|6ChV6;ws!&2>k4_fx16vCa%j86&u=r5g1X(0n`>B`&z`G69Z- zi@=KAmy$tV_jdIet|IoNNc777LcXXE5hfLn1Q$plbNWPzW1f%Ryt-s=x=bFaqKSYb zQu=3SPcMWbc!N^b=Lfj`SxcxznBYBG-LM)1)p=sS54aT3IIl|xyP51Y8In|P^~q`` zqC%*E>c8TRlsSj`=s9|Z-llhh^>-T9LlA2||7f?0VDK$8fz6fP<4LhTM*!>fc^Kf) zqDmhdV4H%IS16PBE{!EYT+~{mG98i1Lk$FC94e~f%_55{O z#eGoBA=Rcqq=K%(`xYU0uTun3Y%f0oXe!} zL@-_!^+^l$J3<;g=RY)uR;<#p;>p&fl_Ds3ux?gjcc6h5>`>xvwB``A1vtoTwbac4 z9;;Cgb4crztzu#LsDy1I9!GtD#X9R=hS6Mv{*stYLq+DcADr(UqtkK_)gG zl0&2;&4vp{SO%iCOT{*>@%m`+&gJYXRgGNfX35mw+nl7XMEEyq2Z2vppT@Fyst!Zl z2y^m5S_I3Of31TOhKm~ObLPuL08B-xPAH>a`8EBmqvt-$#z%=r)+|IvqkInA*Lq+^ zz&9f_#=SB~SQ4HSIBPR(Yo-=<%!I1jC;=kjv^6+2&DCtK4e+WIY-GSgJBV%Ek{Z*} z{}t$+^iuCM(M(|{@$CFMAF2=@tP?}TKbTsc@jYsN%B9OvO7RHFk#Z%_F?q2?Gr1F~9f@Y7VZn|7KyQVnj5Jya7t@IPZKFon z&qXodCCp`^KSAKg-7RDn!nF1Y5SuqMA!m)R0Do)M*2Ce*-;%Rg%#_6+bAPX5@(FkXSuu` zs98`D$(Utq7~x{4y>x1aBOH5_MH0Y~WUJ~m(~M(7hzGy}ic^bcOnX(~uu6Bv2CJh|&Wm`dt6_jxDzdt@Plu!{kX`<7OR zA+LO4Ox(YGqG!M%2Zxe2*0Q?kAntk1U5^XLa3zFr6<>$?$}_<3@fQ$XZMV#QrZMxh-6_R!oy51 ztmZ3#zgE|!vtRV z;XzVO`0M}v34PQoq#H4IF#?Ko%;Us?V%nnlEtWQ3#jXJr_TqvUP+M87G)iFRD4A`> zHoP&BI}VCzdIbve;Oa;#hz`H|5eFRgaaf&qrHcCMrwT0Avvq>Uc8HQ>>J+a{{lb)Y zfK%9hr2|Z1LjqL)DI8rLJ`L@5ev_Y=E{syBc@g20du1uFSzA!kz%wJy<1T|u6H%Pr ztz9*9M=f=RWh93)Zzs{S!R`UmMM}beWB4FWfBy^Z+*Lk=gTIGZt6jSfc7&iAXmKA% z`^=KU^XL4I!#oM!>WV!KD@_`J<9?5Yj0n|_w?1Iv>yd!F5L?wP96Yv@fW`l5gLTyO z^itc&KpD!zl@*nCl@hRK72VB(cAQFLFo5cT)}P))cClKwLDl`yLmpVLy6`F7XmlY@ z+!lB(vc6Ql(h|+O5LnVX?y-T2OQ{U=kzZz})~HMJfmk>0!{NBXBSREmDu=qP_HGtr zZZ=`E?wMiO{Vps{UEmu3%w*@EtskQ4>^HVcP3jloVYF4Th0c5sl;lLgzhNd;ZqFBd z8Kw|AJ0?@hK;H_u!WEsAoyY(v9uUKF2DRAEhlt~rKbQQo2a0oL1D2EsQ-0?qhZj7H z;fLDz^x?^B40oVs2~8b}VVFbs?mu_vvpGSQ4YSY3+S~9YL)2I0o)}87Qc~cl;j8b4 zHu1??4P$`q%MdINkn^N^(V=#cf|oe4ILVKY*)JwK-A~teZLUWdbl^cqSe+$xo@jYQ zELJ)#Ui(Y;BH!ub>#ry`_11PI?L5abBlU}1xSgWVBwYXCx`uEy*?ZR`;AWtmduFG5tw{381|7eDMH6S|W~3h! z@8~+;+u=|J*UpB-W6kk$KD zS7j5gM;MbC#jfNn<*)O;11=vO3cY!fo(yBy;A;h_#EP6k8a5mfH_9igToGz>}(bKy0?n9|%i+*pkA)WMX5xYO%!7_?R zN*RcqO3dt#;}0P7EJCFiI;%xR^BjeTFa_FC=SMKdpe9O5w21mxYGdwK*)6)T4YD{i z$Q}QSOb?|l>$B$vEM+F{do@EAM0Hh;2EB#)dhP0DUm==KUZaDU?mgczBO1_dYa#tywm`PmWOFB=0ogLA;~dsb!#daX~fDF zW5~?!ZFoA~wnpU@a>Z_GvU0L zGyiC0LQK*WC*f~-Cy#eF1Hpr<@)Ak}$(_FC_)OPHbmS1Lq-vQzH@fM=BcOP{eotYv zJIwWLC#fXNSiIwXPBxw@*?}XyhC)GKXa`vAbX;O$TMAC67~-h|mt=HXT6Nl7*+q7a zm?uKUx(Jl4*Gasfa*akk)WY2}AtxxR@8abOO|(nlY|&Rn;YcG0x?vb&cJWc92o4j; zjeT(%*yH@aiplod5i8=SzKPR_GmkQpU0GQ0bK`x!1Fi(3!8lR!^nbTR*V{>%K>9Ih z*fiCg--g`1i=1}N2`G3noF)N(>um}2Tp`U;Du@&$O4aQ)xuL46C3sNedQz7Vfan>+ z$p|h_XLmMVq~SAJyBhAUq1`txX{*LX$%?u&)U;;<#zf;UrD~e|_fzS`9u((aa(B6~ zuQ`$k@@rTO%(IbVb3mWziS46^&t6v?y;rma$?1Zi?|pxq?$U0otbB@q7B) z(qlUM=j6b~%rXERNM3s-!=hbJdVt1^C;eFtmu-5&ZYDfM4zl^abS-M%O-clT+e1Ra zQm5ffrbGgm)OR(+X_HU@m`j(9v>3l%>%gQ1;2?LBBH=WoV+l4PwndLJCkg_$CUy4< zqA7lt+@<}0|DegI={lF!B-^~DrPK)RrCcW{vf7L+Ps$XnL0{cHO=(ElYJ8X*red4} zUor_`V8N57jUiz-vw?V((I*@NY6>n`&F$wMXns?n+>o$XlkTQy?YeALd`usFr14%$ zBGP0e*4@KJ8P$Xz!+9C7r~@gzd`6OQ8rxT$goGXs3T*Oy0v$gKs1^vS?K94J_-e{5 zcX?XQaL`0cVt4zG@!u`1Ki2dosxh1(CS!}zzkPB6qys1Y3jFrBMs{_2H0jrvAAG@o zfqyV~4z_{#I2t94UHJPbzT1DjZesvZ=EMjl=nRkp(bZBj)lq4ro;y>^k5a-?a4RMU zDXKgiCZabTO^{9z#{G|ou;nt<$Jo^`pSx7K3OvFBqv$)Z(?_SK7~f2*9DaH+NH{T{ zh?V6q#3P-IF@qwRlpCx9ES08oA{}<@sw;=;Ot}D+=Csq$-s1q`&~m=60F6quYM(sf zf)(@4OOVzt+U7+KYF-{AkVuW6H#3D9pePr;Uk2sfbz4aftzhhSdqC}r3!Z+NMpgO2 z;%`KFjBSr&z{sO@lk+MCw+xh*pFmFd6$TnkCCbMQm@hTuYIF&bxg65Z@<61tI+Xm*pOW5J%&uT!r zMd?B(7y;h;I;C|Xyf}5Re)h5+9*{K1cJZ=)fWw#a@L@$bHGj$uWTp~*&10!PKgYeZ8zK) z#(>#G=*0j;m3YXEL#f_oOYxcPz#)Oi5n|SK5}6vA^WJxr+37kl++YLUpAvShK-RJ} zp}uN=4o6R|towU+cvd`u;hs)9+-R@!Wk7kuummDHqC8%tU+fbH))P}e{{=swMg>N< z(%c#cqli6&nLu0Yuj#aUR2@f+qqniO8p(fQPR|}eX7yFe;%u}u6#Y2Do03sh<3$dEetw zMAX=_{T3<>%95$8d0bvf%?;Kvpe90R(mumi#gRuasDPUo0uU$uvD7Rl*Ojnw@+qBq z0xMtbc23h@4B&qNB(~hsZXK}aS;aKQEflXk~*_T`VJDL(|4nl_x4}&-7XXc~ZE(9fV z#?We(icS5@uP&0DHYD_MI&@Wh(KG<*VHl6LyowoGo_2`pnli9H0kVCoE#MZBn4k17 zAT~BF=@Gol1o%Y7af2vVq?uK%?5Y^=!41Na)}#;lhy3fTnVKSSB(@})7fqD*=mRjZ zIWOtsf`~`9uk42Av(M$%HkvQfy}K;%C!lQbv{6=8K_9otzxj%G8{w3*$ZWAJo%Hrq ztAb8fY@m>0u&HRCf4J9saIurTEG!>2yTKKpfOatnERoH+J6 z;|#`5u+;76${v&xsaN#%Z*?ny4Ny0WNF#d#EDt7PRjrm`-ey8!=!R82u0f1e53y4m z?5wPyDj>Rime@C_Z3m{xXuSo*C_d3uQ*$kbPp}YDA18W26|xtV*jKR(PdQ1O_RrVZvo z6CgC3aifB_3Cb*u&=u(>qRK(BZN#)}q|LK^?S_-WV7*mkC7G8m^5U~JlbeL9q9n|| zwgfqTKx(hr&EbS(Th%pa3y9pNbw=bvVOodE^^93D@Oq+@?aQBO$JnL+y(6Yoon(;-K)hJlWe|$h0K<7%v+h-^g-=MCju~Al=VS(d7u(?yxHx0@d z-W#p-2LS0aoNObor~3taH#QOR0%T#B7^}?SC!4Y5aw}i_8h4Uc5ERl?OKL0{d_SI0 zU48Wx5OoZYIex`9qYL6LG>9a}oEN$#UYH;-`*LUB9+V2F!TI*xN>yv| z-nD^mu>EMj?_GjtGi%a}4x6RH=x5L4=2Dk&0m(<;Y_U)xO<>zuC6Xsyh(Gs&5!Bl* z)SkMgr<;ungt1+@T=cHVIHs2ZM1MXgScNGS1s>UJ&xbxe&;$V4lP{miQ3+{_OtanY zVs&nkepY+%dEg@Xb1~uafMmHk5jr9PS`;lOxAEms;;1vZwD()c>Yev`d1wTcCl#=0 zI&gYtSP9f}&p8iKz`O{j6gTviW3xXpB*+mR%?Y(%&*_9Zk2su0>i%AtBQ&&4mWam? zBLZax!iW*P#`u|k9%Otg})ECih$eWCLa`Gx4%y+KJs<>Oak29uKl`LUaU{4Zg47%bpIWQ|J zZ`fzX1R;>&SG~B?6BueV?DUW+ACL1Q=X~OJQE)m7A?)H0sR9Dc(?lC<23#`Der8ZJ z5yX|EII`F zQcaTi9+(L`4tNef564``93z56(YHeFEJD{HK zp~B541z*ne>P~08om(dw>e{2+6F*$AVx16SA%enV_M?Eok&GWZ+5M!abe+sI<704r zz8!s!*G7;;;zhPQ^KOirlf4iXhq@>YMXeu^=0DX$gM4DG4~n7vaz>OckV*Zxh<;fz z4>NGD43>J2cGlzdbOZ$wS9Gj=7(UKDMu_=&>gOx#Hk|{*|E?;!Y z;(p;Qe~U+9MU`w_ObHGZGQV(004J$_qkK7~r8Y#9PFS7J)U`D{<@W*}#3IY}pMHjc zG-By%a%dW9-ZMp=Zor8|G~n$fO5sgAR2LPWFE}YXNFwUA6=#GT*xc(R8>>S)veX*E zNJHmBiIv|zev@w5L!Hyout-D@G|U+DJY1ppGZrnsY*{A~1B3OhH&{G%nry|kh0P$P z7j6dsB7kJRu|=88HQGGw57FvK1Y!2JI)9MSv)Dik%xFSZy9q1_UJCIlz7h;Muh2g>^F=^bdPVl>i{ZvI*Wpf(T zx;l*A)*FEo!Atf!X6o>r9yteie=NvteO&QlFw0wL>u;r$F;=0uv126@SV}u-w>@Sz zdSR}H+vaXOA$e$Shw1e5n8OtR-rrkL!ZL1yg7&4v6Ng$h7>;^m{_6<`^>7pwE>r7UZ zjIu*M8ay)806BT5RWXZ5DlR=T1uoMY!K;SUuQa|%R6!jb?=dXYtZD)`w3F8nLtw-7KHoZJ1< zgym|=ur(xQC^@C9LNeiVf=F7 zNuDomyt@oii>gZqF0sTEIQJl??u=+(Ug0M71NAy_zZINo@jupHr+YPVW&}&yLpQRJ zvJ~kmJ;IWp!3zc4B+%9F%R|QjR&q1NMm0}9U zrl9?0Bkj<2uBWqXRmLj+nM<6=UZJPb|I_)3pHU1pm${RSoMt>;E5=v+SakI%Ks~Np zH4KPO63>YYd?}cG(LDNe50%LQNW)J<7TTp8L#!Uy-4t~qrZxnv@Y6Qhb!wSDiQ4gl zJFF^l1DBdzPQREYS8v5PIj#WzKLEg7wUQps7p|9w&Hi3?y_Uscy%!Xds_q1yL4F(* z1)A1>y|0{6yI+cM72|LVf{(5op6p}Td=BCN%WRBUtPwOzA8b~QnFTP5k6MMe6bRQP zK5c}AD(_bYB7c)-9=~|C_*efVT=l89c;D1fJOy4Q{6{J+=&A%UX;s7Z6tCbOE*?#FdB`{%O80zVbr`{vJWg3sm`&;R>p5bhX$I zGCxaetZ?>-7EJvTuYyUGfuhZoeX?V0y*?dBp2WhiI6ASI$sL**|Bvb(`YD~?h<8IL zuk$#vFku7ioq#woXZchhnCG4;mMT%4pbttedV#$m<>{VKn>@AC!yBS^G*O>zL{dPv zTcO5B(9kB#m9XIg==$Q!^9l3L!NE4>$#+5q$|AD4X`B2A=;-B}!;^|>M>~f73Z%W0 zpem(1(Z!0F@oSbR!($iA8PT*BmYuf zR0$4sppdbg&M3Ky*^;iR>MKIbZGP(7B;i!>cFZ9^_w zD0k>K;%f9(`bB?pVbt+VbkEWJ2E(tmtxJf1^k0lS)g;0HBPKcukYmhY-=cOgHM&s< zI-@3Lu0wt*ULq$jBowch*G;m#(}@`&yjttH%)6xqG$QgkQNSrShq2wA1zU`&(TrbiPO>wft;fk26k6p$8h z?5t6W;JpeY7YsQlT?rgpCxwM=ELvmCxS8N{Ms*bEtk8@(B3>nFt~uISU%fxkTa^s} z_N~<9=Ip_8xz_1kD^5jkF!>U>-C&?1%dl~5n1|x2F&st9TC^_`%G`7|96#GA)7%hJ@o_-#n#;#zEJjQGj|Arprszw#SAgp7rVhuL&G-|~+ zNC(GSw#CzrWa-y;4>Z2k8KL^_fLk!pUg>5$nq(gf5-8AJT0m~VvY${G*VrF05%-y% zE8C8A?A?nzE85Mp5j@r>JOG2vz@Bc^F>@aZI0&INF^d)Xu&yKjZxXr;y(+2Xi&B8c zcG;MJ$5o{9UlUxk&%XsDisV2OvbN)C zGh5pQ0g=&3cq!Fc`&?dlo$qmJ5%SXW$ys$g(AN4>;pA#;1NT16?qs}`Op$bmf2Dc_ zwB=VG;@fWyH+UagR#LC3hdx_UmB~}5X2VIi#2>U zbX{Eq;O)isG$@q<<@kr6@_o4Pm8Z{=n+z)zp4De~9YhRVJI{nk_Q=FBIZ-VPFyp^| zp`FhdHt{%0UhvBah&orqY#sc!_wz!CqWEF!g?;jHSEdY7F3_2$=(MXTdsQ)m@>h5YcpF z*&^b5Ci`8=53f=u%Mu~QZuJT2Cn{4SGVz~jVhrT602`S?7p z?J*fNQpzcx z5%zxzjuy-!*`by&bdm-)gE+C=`*20D01;JgjnM>f)3u=gq&g0E2kRQL`Nu7AGP|*k z`HEInf~JL`O0aL5)j8^k7*;Iy{jMOkiWpCV-7*V z?#{gn3N~HzH=8tqJ?@5Yn6{zW$d}!G^A=Zp&2jH?(hMVsN`i`2i@gd~sq@}g(-yO6 z^@b%^HZ<+P;S=YV>o!)8COnHHDf|byA-ud2n&P{`6o*H#_5*c6XK5tF>d_YwePmI` zbH5*8StUfWiD5XatpBit>Wh655}8K@6*q(k-!U*+{;!4f@1wd|8{T;oq@W6~qIL7> zxRyGAm%I?T$kO!uNYd$i9h<0YFc!bC-5I_5(uHbNcSoK!*qbiQOLXy6Wt*E4NPqS~ z@qm7gNKgs5+hFyz?`g;#J+}Ev+I!*Y+@+culAz{_-uDkWuClx~PfNlHtkL#1zZMEJ-V&P(z90hshY9&tq$QE;Ystkc{ z`HA;rTC?zdo2hi_x~~1ud(SbN9kZx2c)g7pOD}A~H5F;4n66L165?DXR-6phHmP4b z!NGT?4~{zUu6)L!;wpN$-YJLM%bgMr-xqB3k{L~GB#fO!d8w1$2sRXs0b@Qc5n^c| zo)BUbPa0-ELN46EL=9K;8A6_c`?3>aY1OSB2bP;CTND7zM_rx#lYPbWnbwbe_qd}% z;2lB-YGLlFkc~K#0NBS)dnb9bITB4^)LiK#K7XT1>BC+RiMtt zD*{;Ep1X}W6z{qxM(8g#=7-dx-Np0c=R{abcxj^NPj){9D1;!GD&8ND?XO72iVN9$ zIHY-f10PPL;SX(rzqk4x(Y)pJgtAVmC#zUK0WGIl;2+N`uxi1qKpFI)~= z_{fkSe_y9Ftmi-73e93ru>k@EPsYDWP^Ay8AzBYS8X3y`C8{(9n>-%syYh*&$b8v3 zy(k0}={*_#<-@;HC-Vxf_P0muO*Zu6kYAdhs+!FUcF|e*E8?E$zFLsJx#-y#z7r_8cVaLpdgvnGF;J{c08gEgA=i z7Skufw%mZv4VlsJgfD1lpPuW!>1f^!^TqhH5b%Ei<)C_HI_RmJzVAp!6p%DnH2eZ- zon*3*G7_^$%>w$0@vF8?`6*9shN4#4@Qung6;3dVMH$h9bgh;W68`k;A)D;-)4SMZ zGu9Y~^uP_(N5qZlqazqL>UwW`s~I&bie`3u3L!o6DUsb)AEBsK7QMy3_T|i>@zYnC zgUoUV;!m#QO-&bl7>4ACI?kxfC5Sf>wE&Ln^t4nnol2Pi@`Gl>@aFdx2<|Bfh~!zy zC9V>C%fM8?(QCgFv`6*Z#l?8R9D<&18uKY|A$p)>r&;NtHckC8wi26|9`=tak09j8B? z*~6DtyI)))9)LZmy?Do_*^JOLgd}Z-K3DAg9sUoSdjYXDinSzhacvmSxgT#8(NpOj zRERQ1D1E7WSt$qd1DKnx!*RYAn)Ir_FPC{FVnlZoRZfgOAujzIHW4pj5AC!;wGydt zz^FdAX@4XyaywT;8b%hN4V?e#tSvCIr*G&^$(m0oH5bHT(Z@IDPLSV+nLVDQ$>!%((uL>X# zMXvu+l9lim(27ZTFhWX%hHT#*V1=1p_)wuZFsMnyHUufCfJ&8uJ-teFncdJ(wS2s8(>vOpC_uX6ygnU8ECLsOdTa!Ub-9 z|6Oda#WqZG(*XzuK;KsQX2)5P<4)q_M5e0co<>c(+VCYS1iM*`@<>OJ0CXyoM54!% zOYOaN+jORn|Lnj$Ox#kyA}eVXG%7xB%AoKC=m1T4N#a^yfkw5akcX}6K!P+3G3X-# zr6Lhig-<$hE}i~VcXwtlMFq+dJyVVc5VH=oINSPAj*c9?PkJ{vR)l`yKpob|Y^SpO zNntL%!6LQTRXVir07XQ7ULZ6K>4#c1xz#+9VRxP4- zH5mTfq8rRz++4XmmqH5<#OgE-F&h~gf;D~J$!3OmbI7DJm+0SBikUso1rZhg+3&01<{ zD+<)HkWnGmRXYYM={Wn>k0+6}n0BJMn0c%UJcdD)^`jZ~_D!T8zw^5+TM8yR!faC# zhZL@hpo-c8rsg@xZih&>qyi+8yBT;^tDcdxeN~zTZvRiEO(%C|d$)Cy1m~4^>)vyp zN7#xp@!77n49~%MSs2NnlhQ`Mp5m1weJ2%0K3$qoyuY2*sI^?VS~ocwJ6#X`Zktvu z@~cB9sU`wJp}9ve;T5?mzoy$0!@ta?2PPm?j^!d$r`e_XxAYG*s9BxodK9ESHwMDE zN3_U^KVb4@Ub$&-E`NTY(N+Oj~(se9n~_;n>?C2 z3d2ffpJfLTKy#|BmB;_+DH!iVx5>9`kIZz?RO7ERcuMTMF+MMw>dOdeGMk#~hw22A zU&MyZ4Q~p@Ph^m4SF{)I*L@{LnH~!UX}0#ig~6hoJSV^-Cdx9eaMrBNj_Y;f)MeU1Y1`@qTSzHa&j-9NO2QK9s$!T`r<8jUkivDr{GS)iSEEWJ^gufnP z?Grlpj?zr=G~&iyBGb4F7+Hwb%hXlHbV2} z)$|Lq9sjY%8x(tdWsaFf>*IR;FL#@^x13Y@?_tk}-38M`tncJ^s)I2SmJTaAEZHP@ z$s>{Eodm@4SxZA@FLv}Z(UrVtgN_)-O}dv4CGQZIFz|=a3gQA#72tRd{qj>v_orEY zV=^Shx+9!JO}SkV?!GI&RXY}AC3_xU3690gn8wsoc-1ZD`_M=y@W{!uzEX;RQpf;U z+V^1>tTcFaI?jLH&WRjl%O7M9CJ@)eH;c-7fx&v#0>mgx7||eBVRr6<*}p%F9xWwH zy0%PM?|VR zgsfgK?(0N-r!B9^!8iY<1MH@eX=Nj=B)*)-V-#e%ro&`ybUrA(2gnBA97IXdei4!q z3z6yQuAZ<4dIk?&|bH~qeKg*V!N%4(0=9u+=HwF*nOs>w{6$cdP|E4_v8U)%6b}wpR*QNHqemYjpp^_SCuCal1CQ8X$oi zEfo}hD0lfelf<#AM`jwe-K>Ml z8$bnSo;jpk&JaCiI7>ZkaZ=vtbMh{STqWpAl5-K|z_(V%-ljow>9ETFS7YM!hqWmK zWtX}!9gdhNx-3Kme>_Kr7Z~FeWY!x}{Dc4!>1D2mL#j84-p?-MipsDl(Bdae?yz-$ z2&AVT*H`9e37!F9*9kFIxyZz-b{Zzlg^_>**RQkif${q+tIrJz1|MaLCf+vpgLYX% z1BRr+s~f6f}q%Z91jZ52ovC&?kHz|fcCr-{V(tdF52FZ14>d&A=?}5KlL0oM7T&CFj zfb`^JdMC>0uZ9=%PgUq9{sER+&KSjP3NP<{H&Cd$jQH^x2B1)9uo}T~0S3k-6ANRV znFXGgr=z77$=V~4I zxs!|XCXR}e)>(Fe^9YX@L14)$FThg=#5XG0LXj zYz@CJbfAta_d4dNcc?O8d zScEkN==W9RPex=$vp~5V$m&+8R4T8E!v9Orp-RaFbx*!-lWD}avVhqp>yKnwwcs*( zXhLoS#{Rqn6Xg_&eoY*O#){d>-|s=RVWsnjTS%k(Xk_8MWO5Ft+?IzF#Q=B2Ivva5 zb3K9bd#R!!0z-U#By;l=%|rBUFJ$@$Ub6%~l=Hb2^Nf+EkUOm}-ur%B?L%w{#HFdl zQ17gHm4T_A6Lx)<8}!yS9Ws?+p|?=t6Xz{kRR(9tvip4a{&JwDHJ6lobStI;m%;!A zlrA$KjspQ9D-34SlHiuHSF`D{Zvumbr zGa>R}<;}EyJyqNEHir*Qv%LG9#yJLP|3V6U`kuDNERlu*A#xrQO|~LrjSb8LfN@M8 zSxAJe(Uq??*xwv4BQYY3>cU=D{`6mw5pfkk<^!!c=Y@tl2Xm5JoCXyKI^lEvpes9@ zCLPu|HnTGfpZjXHGW>)DYCgrj1*liCuoc24A9Rbe9BDL^W*AHhP20Kew)5oCv^83Q zJGQNjIDH%{rBG{UbA-z-74QU6WD%8nfTOZ~H$F?;$@gPn+buxpyL-2D`j@YOXNbi! zO0jq%eLs}sfe*5ChD*dGlALbEFc(aLneJgpZaHJl^|w4GAIk>;BQQ88w}LHB@k)4F|1DJdGeExiJv~)|0_{rd5#M<7Ig7w|ItpUV&f# z7h+>?d}ly49WHku(49%LZW@Pa6TJxhIUClR+lInRXlAQ2fW-d=9G-jHpUGwT$EWp(9q66xWhe>w zhJ#hx@4v~cSt0i3yBInHT4CKjWG=#ZW5g0$kus*^K6TI03s3J+RE-V>S&dbKfCP_e z)nMevtKdw+Ni&{pqI<4d>MPn*ibFY zy9LwNQSm7tlj-{9&3k2LV(h1r3U>-y^1J8yS1_hV4_@}s6TPbPd;G>a~v1sJ14IVsib+>I)LETA1wZRt+(|h{{XA>s7U5d4WVn< z?u!CNU#w18N-4eBFJ;#-V{$s}YCen;t_gM-Qz!}lpl%eM*rFDvi(PRI_Ty!h;j%l& zQj%%tM)6^5l1;haxcGT0g>WqR52fA3F*VEAL11XBi%@ZuxdpGv{m1vBKteW^01!*nN6Gad4o=Kf*!BAqZsQpTRZVlZisB z1Z{)eU#PYT$8W8+RcA(GZPnV~xQ~XvK%fPAJ`WRiHc)yi$iBr^Y=zR1Kg^)MJ~N0g z2r4^!)f(C^-v!lAz&!dozQx(J*@xRIpq{}kWe1OHl8j43^6QGj5a4y|HaeE#6_^hu zLEn-C>+I(-sN5=Tvp~m>`w&e&*ZqW&ObI=E1dZMq4?$OGm;LD6>$j1WgZ4)VX>Drg zYL#E-kJ!gcvkGP7i*)L)5be4tkhdre6bUVMu!3qHnfvMHLX!X?c&1^_FjOX?p~rAW z8Oj(MP;hC?akEQD?EV$acIl|7p@9Q9z`Vo}0$id^RGYh@WMgPQ2 zezW?NWu!pZ~MTBor-`-MBb8sDs%JLV>Wk z%GT{?zn`!k(C?uHdAx9MRT3EJMKZht^80)3tp+po*X&8}<1;0!YujjSpU^oMXdW6B z$m*-8JoP`{o2#IVimjd4Ne0&fu3cbXo+O*u56eP$r>t{e4}0Fykq8Xvg7oE z!-G>zkC(PCj=t^6laeh1sb-iE*BGoE8f|FJrns(=9-x^#P|*`F;P&Ji6~K(`kMsgd zTA1N7$*B(Jy_)8(oS)m5^=rH^&n&faS{$y$dW>(jD|DCN&QofYM`86{WkVwUG`nx= z&-rQw$Wy$=2nm#_wXT+mdp`G*oV?typH5ZJ7ux-llAsAJ!qG;6M$qkRuv;<&5cmL{ zVri!t)-X8Ldq=q{Qa${dvF*?Z1pL1N{WI7WrJD4Z*oGc6Z_w<->}4HwOdJ+JmLodg zA?kV!>w`&^ZpWdoPmf0*5ud5oRh(NZH{G1otEY`-XwNohkL0g#$>7eIrmAJ9^@k-J zeEuWyO=PeNlyyW}LjGER$6GV`IBE1xLTSk_EF&7rTu%<_g=QWcSjEFJPs5E(p;YZ_ zT=kmpC=YmClXG4PTM>Y6X~dWuEK(y87VNxGuSkj?O@;`ge_KJEx6hfB>?VRE--tHC zNvF1R{lsBZLtKJtgCFjbw1ota_+ggeKfId8-e|AW-0kpEl4+2WJ;&Ms94?-AX2KnF2^M1LsPvI@o}w8KcdrFV&lHN%f}#I zuiX99f=82Y6|QaaUS0rrP7y_W96zl~zG_h1%xsthX$II}^jhmnL-~HOPqGV#!WX*M zpZZ;z$N&mHB9d-AYQrbW-_R zkm_-C$Dup$4>Cl`#Zt|B1@V=^N_A znf5~UUv`8;^RVgQfGM73@Bv2KNGCvzs+TL68ZrqM^cMy~DHs2(|IahYWp)t6i2oE! z1X8+wSVhrSFB8E6jPi5P98G@&5al-G-SWw1`Wp7eyoL#liT<|GP$7Ius zFtg7Zg~%wTbjF4WJadofFcU+tnE(Z~Lhb^$8tc=4b}XdB+72ScSKm}(DF+KgAK}lw z`60;|el<*irGA4nDNW3b#j>C3Y{sJxsQ8z=!`0Z7yj(`P8OCb662*sL*>0xtVbMN` z$uchITT3)YfYV-{Rym^*5$S;w_a2EO^>mGozvz_%vClCN&!cf#QzW6Uv|nz+;=ty0 z58j$$Ho0-=833FKtkyM7^Qd}LDn{yD^}DsEMQ z0q?WJw1$;4%}W;4~u)kY+kdA1Cxxp#wL z%||XkIZE*Pz_u#6JLIIb)>dneCI&0xIE$-B+{FD>=7{>ZG-h%cSP#y?2)QGmVHs{c zg;tQ&nFE`_YIg4r6vh6Bu-c7`(yesyy~*sX&?Rnm|A+Y^Qo(Ne+Sbuc%BC(o%p`|n zv0If4Q$?}hhxVdNBV)+~&M@dGw=?WY3O5BwR)&#DYV4$scE`Q+q2#)*AiXpN`zTO;TR_=0YR~O$E4#_AH=TG^`ga>NLNe0?HW%T^oJe(U+{+ z?!M^|upyma65(HOY|I^2A3v)L{r1%{1Cv>{Juo%=Oj0iJl7-7WTBf+e*y;vGv8f6z zUG}(@kF@>zu8(i9IQ-wyLZn$n0FAmO&QaK^cxnV4k{J?C zvwP1RKZa#7?*ov8-L{N!29`M|ouwOpO-U>DH1U->shhx(R^-ZsM+Z_>CzS%!t#FOh zc1Frd5TMnqZs5*W`v`wwN2bsFb(w8Ca>Ki#4@wP;pIQ*ZRnO4+eI}<4i)UlTWG}lB z<`~{GbQ^bUHJblSUfy#ylhyyll_1Z`o;IlKC6dD0@E5OP8oKLO2~=kauqgkP;_9B3 zHT=EI{XXQ*fEc!yQY&+^l-uS;D30%DnR}t|8w2a+!ju^hNzVY#D{w4mW1Q}igWnQW z{g-YV7U$*7^M%kQlr%?6m(%7=TpgX6!!W0(9CO}s()aB<5_+cF)sOk1Jue;zRfD`O zXQC%<;-*MxiZTcWVaL_zMa_Le_qo%~G^q20!_IT&G>~q}UZ+_v+D&!p^?6k8x|k;?Akyi(>qZ$bctO zTCa`@EcVPle^ydomr(htHI{||_>cQ`Ha5?Ro$R(A7GYsG8tS^*p139F01m+~{bLMw z^VuzH&tYdJy74g9NBm(Tfi-xopV6+8h0q`iD&yae@c1-U`9-|8=fewgs)^z!ivsI4a`KhI=j(IQLIzjOV{>W@OS z%-Lq>5Ycz?ya$lJ4g7a&TAY9!KN+sn1{|&a7C6KL#EFpmzO_unRC4`sd{pfNrVmni zSjb0HoTGe(u))YzK&errc{$+sGD5*#Pwm!D)m<YDt;Q*D3S0ZRC7%gVjtc(&;i;W-0Bz9MQido3ZA(>omE%Xaz*(nqQ=uF8z^M() z{rQL5x;k->k8s6d;*NsquA+9SiASOF)DYW(2ir+zmqM}GymN(2 zi2FDDlFiAd^cBlCR>5$0rEF*!B9=n!(k?c11r1nzf^N1KR~(A7rU;#L_^H-t9d#}p z;jfZ>%@hZBAaq>3{L6a64@hKdoto-fa?D$z$~4qg;0@iYaS}>^Ldc%1;>c&%Y3$G> zXk)FQ7NSrksH)_atT%W}C)ucE&S!mZ+!Ue;EM%=e;^7=huAiBe zy%~E2X)~+A=0B_+l;O0As0O=)r!o%UVYOS0P}(+^F!8gQRsxQMEYQq?NdT|UFbaN_ zf5|1&wNtY84e`S16*e6cruL(<#Yjdh-fsaQS!4$eA68=14sou&MKwIY3cPBn5x>@B zkZWWZI=uY9;0%@qDGG;HBt&BKqpQI@!?5tlJ{?)26Dv&wxp(S3K=$L_&8zaQ=tk(l z^OlXoT>)<}I(sXAg9+@Pe0ieCivxN@FhCvxY)U-rZ_G{u;5P{HkJ?^(ylQMr++rle z4*hX4xQ3*yx?lCv_zHmQO^lIJ`VQYeLJ0lKiJt)V`}kH(v20;EI1 zZz_MzWBt~ad8Kg}=2L~VC#_>R;hmbloZ`}_7W|w3y}?4-IVDxvocWy06KF^G^{g91 zEAlOu8Sl~Ac`c!kg`Z`-e#4_KOl`0FpO=J(5U{j$!zNMbBZfZ4JR;zcBve8)EZ2Z zI5TtTOI7$-FvbsuQvGEC?|dGve@4mQV6(9yXItaA{x2ZgvjC>8*<&uwt#xnhuB(5B z`yYx)<5rGf=sx{?Qs!S*Xz0kwiS?xPF4ujxz*G8Z?=p%8zE$8S(c_F`AB`B%?g+%S zRFmj$eNM9Ax^_6CIlW2OSqIa&!e}*z`U* zxymF28w5X&%wnQ2d9jjtVGPE=@wi%45%yEHwBg&(Mgi{;i4e;d=^SCR9YK(FsH^@F z-i3)zzI^+rxv(SW_F!HCsQ#VsBO2!I>;_JQq_?|N{9RPQNYkAWjvdy-2!XCT%$ecP z3@{?iW6L#%Aw53vFJLe^EEdD-HC|run5suDwer}zZZ-vjp#ow8t-V3b&P55u{p2$F zFrV5?^9vbq@2kr?xzNQIv-GOVhN+>v)C~E!Ma^y|>XD2geyC zwxZbspi6l_!@u@POKOj>zg_#I)>-A*#Eg;WBbH9ZsEJk@_MgF-I58XlD6`on)~=7r z$>=mB?D&?OVX!+h)R?(A(P{Ld3>>drs6i}3-hvlx0J=63gej= z0+Dq=bt=`#&-x@4{e7?N;ZrE<+sKBy;$J_99~pph_S@H9i`OV=O8gx_Op6TwrKMUL zYBgX0X4CUBzQvX7#RSl~0kU{}%$b)Y@l_zYiO7b@bZnFLe>=KViEttotAO zUT1)V9`4lCJN`6DtwZxJ9Z@zOdxupPa62kUS$f&$uxgpr9*^rGEJd_;7!7tmxw-Uj z!o@bK?Ifjw50&??(q+x~yqHc4CeZ&tW^6wxS= z;x?ZF4Ye7(($%2mkiZO=SaS77HFrgg>1Y_KTzn(zJ*2bo-QLIedb$(W%ff}R9ZIjW@hIGLhS!32VQRgmuVP$?J z{U`*`OWCn?4GhTg?&k=!Fz+PMv&=(ue9mteoud6zxpuElYpA=Dl;PY^X!L3a#w-m8 z4TN=x+UGFlEiYF!9tc|b^Ea<)IbTk7$QJa*I}W|+H~jq(gm1|i>$^8lvN}S!k^}-` zW_i|;lDyO^SE#&GV-WYIwEv$!fsyk` z^8ZOXwY3d6(eR`*TZFoVfyn(_ye3B!;%%hZH2Dtneo$;LMcgkY4iJ~;@ej^hffI&t zZ@#ek%(GE+GcuS;vnV-hDeXy-MvAV$L|yFUzp&|BG&_MI>8#G{XmPkubaAMU;SFY+ zhte?t@T8~e8x>W$XjCaVpzM-)BF~saPw&E)<6+z!>MzNx#`$bl!!A zpa?>$jDh}y1jv~bSAD_n6wH9^Gj%yT&o;s1#z1m?eEbq+3UIEqPIj4sCsN5sZeT|Q zd-H$SW6P(&MdBPdL1mk?)|YgaLN5pMoG9h~uCKNl7BXde@|3pL6dF;#?F*daQsy1> zRg{ni%7IsEYSI7juCDlo($=e3ODRi84+U`Q{A9Krio9?q(dW0fe89-Xfy7vFUfEBkGPF|_=~Ve5XX zl`pXdaHSW~{B&dZXclsMa}=4mb5k2$%BECNl2(Oq0Bz*+8$#zdq=uGtuEuyg*dT>{6-URJho{*u??4 z#*;PDi++gpJEXr#ivH)EYF8OWPg_h*vL{@@M;Z2UJQlQTHnJhaH>2ZipI&Q@n4xV< z-QoD&o)C(bxaY7n5a(8sD}|e0jCy8wDS%;_QB*PRoRTTfGRq*zQe2f_x=)9yRGV-% z0lLT`&D^+UOyXWF^FWj*oCrV`EqgAJOPq!EQBfR zAzS9(N`QlVcAdnbsl|p;GFe8&L&PagA^T^14+d;}pz>vVGubLy=T0%RB!IabIDy`; zZSf;dtD#-!vT7XZ(?!Q(AZT-)=;2#GAX`@P;Mja{0O;S!+0kb0 z>&{u8AC+OuD;0>!-cHd;v9uj z7-a9GwX>$ca+f))v~!ur+)oYd-Ha&EnrV)uV6`-S}0;Aw4UkGJOy|A%Q zNbNj#i&(0J1MD>g?{M7uLjBG%wNhx$whMb)dQA0ejnxd_Vl47_@i$SLr4oCf5H0*dx}WO>us^lyWeD}s4&g@KK9u}d)C4J!1PW5WVdAXc`~YscrY)*uYI@ATldvz-TH7&i=*| zd&Ws4#v&L!&qV?z=B{_0l1L0pSpVj= zD*3k3eI6GtQxHw8v=mCJv|^Ci(aOp#ShLmTddM+ex67IuSB(UBehln|ySL;|$H7A) zK~b`)`4X-nItw~4EyMg;%{Lw->Q7f_(&HiKBXo{73Ft^o^O|E~(*4Blq7k$X@RiUBvPtDWiTf*B8 zzUM-hmQS)9zDh>97l@pKxmSjL?)h`@FFur8zSIQR=}U&ksJxM1z~$}gp&6yXS0@wJ zT_=njMcE?Jotl|S4jSUqtscTVYuIxNMPVsVTODve9GArBW_;ANOXydOHbMYrO>ujx zT?nvEr%l2s+Q<|D~Q70;Ib*@$6J`^+R*e<(>wkf;Zx89JyI0%RPBC>!OL zoS0|F7h*8RB)m%~Y5O&GSA3kPtJc8F_O_P=vXpymY$=~$czq;aMinB(+~tajZSGo^ z-Qilp*a>Wws@cU;>n?W0U~agHQ(+xGE*&Ha%tc{tapE5to5xG> z+a%wOi)-24+#zknq(2hKt-sNA)XIuKfg)$1BhVRTv%Y(cd_YB_*tQF7kiOC_h*r*f z0r7OCsuIXG$4#YhUu-h&|1ThmCZ^xFRL+DH0T;nr<>cPpJDSu9N$#^$<3diF`U>Cg zAoy`hFA)%LvJj4sxWd~IW}!A*(SK8hGhJ)fCKj`26w(PD=O_P9Di$ju_Kb87td3e- zGGCuV0oNd8bNB+qxY{lejIh}Hafq;o>UqxIBk#vDZ8lusyg*-ycK@cgTK)7~N5aJ^ zWDst>NgrW2=7I!L@cc;Dw~$vK6IqK2A~6=Z#C@44HhuHspZwDt_s#bb{CYYXc7OT? zP}Dk}5b1~Pp-g)e8kf!bHBgTKUHO;$^1(zTF44{Y`{@;T-2%4nJ}_(H)64Ys5=Q(% z_3-&&fLDk;<^1n<#=E77Q*|G2u0tf_O>}2hFfT2s<`sw5qc;{^t)3m)G9?-9mv7Vn z9$x)qVB{hmonexAxh|V=cI6-MJwt=`2?g6!6c1La85Js^JDF&j9=h&~hcfiB&-& z>g7v;|K?y;KG)=e%x_%@4v{aE4hI}9*RNML@?2FzEtLcgU2q59;zfXRt!h^Lw0L1Z>n!_|b>YtICcKHTD&GB!(x95wGog7-jn zwLIa>oW)NXezg0BpZ&4Q8ga+!@MRH2IkYl*qeq%)$E0G@91R zsO2X@w16fT@()mK0}_b^vcxQl3Gq=Yvd-(M13|)^9LZ93Ws@LO%(xGzyh}>~FTuo1 zjKwME%R=1jPMHWH%1iWYxZ=G0q`s9|;gazSaQ85S0JLT$Iz3WOu{(9E;;x;^+s>v# zK&Gu7>GU9a|10+JtJ$893?ppAQFtOpy>_qV*pE}UXwx)XWrI`%>1qw3qJ$eTteM=p z=3egHx4i_0w6@#sj~&j4%Wau6IW9`mJyZ z5gcHss=~MD+qqh_1-4juO$D^PZpT`E5dwGle=QqNSDsTeXc$8=eqvpFflZHErD*@n z%zPg>&2*ZN`7zzZI?8%RpAL%7;AEYH7lYLLH2mS#|`xB~=Rs{s#pAEh%5 zPE*BJu~ksGrSQHaH6Low)ACD87lwt&Ym|{E<3 z^3ABcCEXqT;r2($o&V`g(gx9He;hpbrPc@;>+$w-PjW365 zZ*$HLWUsizns@J^w%BPLhlB2_;H}$;B9RqvRCv*(;eGI& z6B@(OB`hn>Tc?nUChV?-q1`tU*QvRCs5GdKU4!6NiTTMCGD`!n8RnxO{%L<;ze(4Y z0fZI`WY$phTlDNAj6TmfSll!xYR^vik-7l?KLEhWG%>Z+CID%vt=ttAV|s{gP>&Fc zkswdT1$4vMa@sQvKtyABA#;F^5m+Q;Lw$}K5De_#bqzw3MIb60_K67DzX>BtEhaGF z*=#%S4)6{URq5T0QAiX$=+h9590>jXf}^JaF~0L@yEp^V$i=*UIO*2qJ&16zlBibj zBalwD;`Kl&ubs9#z7F~^1R_^m^&2hMR~2we6P4+-5ZF>k9u~pdCAqtwHJJJA@IZK9 zdXgBnYQVo9nKF8B)biXUSi^^TR;Gh(v&TZ61?+|)Sc^O|O+s6Lhh5x%fB|0|;>a!}0XxTz78gquw5FOScxlMn0 z1+s52fPywV;gn&qd~2QLFVxRsaWHG~9atzY7Mn~GK-@ou;Dah0eHw2qAOU$(Fmthk z&bRxkO!t_Ut_f;9r54+W3FXO~zAoJ8oK3G6nZ%?xVeyW5b@ z6FM~3qQukf0?~;TJk~`Sz7VAJC)CId3sr^JgV?6v7{~<-1xXMbXX(Csx?=0Qs5Q-;NZ$FOUijrwRL zyfhImsj>G{0RsQx;(m_-=+|Z;9S}kk6V+mp4%{z zu>!;#n6x;}rL>G~h@izy@7 z!iuF?Eg}~3!MK9)XHrdg6L;Eex|fTl7%y;NXI}y9N`;5uY?%q>CS-W|6_=r-G zpH+0xh@1Aoc7iT)4N9_bQO2yMB!F6OFhwvWK<)rYqFY6xk4SXk138yjuMLMe_^3db~$h$a;-VjJpPm7O$#6}j2yw4=#QrA{ zF50AVwAMS#Lny41YNw>TsL!8XYvaZxZn7nIkZe z`C)pz2J^kSqi?@tOZW&fKo>ScJ!;_92gy&la_>P3^wzBitNo)qteA-N8?s$+%=Enf zUf((j*LwX#JgFaG&3m{u(hWA2@q=+)V_<&DmiZLHM>slZ1B~EkO2`(dTvsj#-n#%} z980?|O-&?GWiggG^2w&IgHPA;vzsgWV^kO49I{_yTpf2VE<^4hW@-Ex<&oH@;vhsA z$hV9b;#92J{7`t_7;^Amp9knn2E0J5{ir&37-slX`19se6K}E1D(moMugf{7*fGrs zK`Exej>55&@|M07i8S{NF$#Q@-F#>>vt;!dxDl)Y4@BIyZiCP-oq4e8{zwD!57PlA zk5^^a60tyaz?&(v`r&e#g*?J*MZ6nU=Q14-!iEM8(&-!S_B7_%j0J06n+#g-J(C8Gc7Ny7dyzbKw7< zr2`6V2E);5WUBk@%B<%}v_!pff8j1IZ*+eo5W!GZwsMgI0-392l1x&*V2j4WdvPb# z{UagG9XL=vSB3A0n^$oL(hLP`3R$9D&kAF;#w*zwm$q#8;{XOW7;TvoAbt4DGC{+q z{O$^eT2h4SGJ|kjHj;y2UDf8H)oO6O(oVn%tHcv6CDgjCA!26W`iq>QZqKYEeSl;j z!zga0;<_-5#7oue8R8JsP&j1-Y-JDhw^Rjfr|?99m%_~7j{B?KD>{1asjX%WHXvsX zCq)j)+DZiLw*XR3EO=6Az09h#9m&Y5CWV|$DJPp#JQ!@!eAvlNpMKlwz;)|sc9d!; z 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

hy)Eap_9u(2a@U4Qh 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θ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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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN 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/20260511054002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511054002-Diff-Config.rsc new file mode 100644 index 0000000..4c67561 --- /dev/null +++ b/MikroMaster/history/20260511/20260511054002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4311d4310 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0