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

_q6cG5A1~D4tvLHb`YsE*He)-+ozZ( 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
t_qa8KC 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
  • *QNhjYFR=AJjU8I*O9IOHVIO0H1|^Gww>Xfl?gsbDo2eRDWqa5Wo3*`+lz_a2 zA4_lk5t_dE4wE>~UX;G6QKVW)3AT(s2v{f?H#0|Dllu3J!qC6GrRtGYsjjKV^x0s? zB=?cL9{m530q%~w5DQ{CcB6QQrffGuKW<78uN{9hm>0JTL6mtVlZ)G;R5*M zVn+S+tfdgseO`h ztTpuX^7GMe#V@l%nT2^T>3U&ktq>})z^N$xMN03;sNMe&s)EELtJAu@F|+kE4Y@SY zW$(_yj%Rpoc3G-mZ5h>mi<(YFT9))e`o#L`N$RSwI9?6+xRn1wI=umPd1GKUKJu>v zG=+P?A`~qn3B#w}Nq8hdv6gOie5LlHtNl=;=}$e;1rWJWk|yU>0R>VW>kDS;=fE2) z>NR%G8!Rn-s%QFdJ{H|D-1`# zbpV*J>Q7R@B4m1mx}HNd!&;2W=4ymk%j8nJwGR_<=wu65^mN!fJFKqCiVEiX>z!^@ zbz`?5)nn3>dEER+zu!V9oU)!1TB}u9!#eW^rEXub@9AcYeX;pbhK`EsFj#kbh5Tr#z91BMm9i>=Ml z!HhC{JghC4C%uR<3ohnlN_w!3@{ zM7>fCSOgGLWcC^sZQpS`|Exf0nYvhGzX$_hyRob2(#I!h|`vm)WTq8#MHo| zipSd0_Qm%MqT}zx>e))yfviwb8SN-+odU}}U+XL_p9ASzwIpT+-W%3r`;jFt{fV}A zHrkTozzKrj_-C)e@gj|k?=kY#VD)V+$BrBXJFSgr%)t6?%bCFxbvTO7CHPyh>Mjp;d-k(a=;|low%J zQyixW69$x$miE>o5}-|~KrJ2$E+-@$39NSeZf#!1==p=l*9)+q=ro8+m6c@bDJbd0 z-WP@f7jBAR9AdTVc(&mJ>}D(eGBcGoRpd=ta(N1Q!v^nKoL%XnRt4ZCNu)zc{(8k+ zG9{-m38T^S7usX7{3;6f-oto0x6la)kzKpzz;`r~fM}NAru2KyFZ^iY1=UWgnFq5F z%(t{atICiAz#ONAX)v1IokG&!9f|LEY4Z-b>{PZpYZxg8Bs|?Z!W%5@@~w+UxS3X^a{ng)@P@iV^}WZ`57T(%)qz*3OsNC zLC-lTUuH-g=viwQC&dQUU3tr>B}5}B8uo%5v%2N!`!~)5t(vwBWPUI ze1s?1eCOAB0f`K6OE-#~uC(wV;$bQ-Nhm$M|CLaHrIz}x?Zx7&4h;$m4P=g}Lf(26 z61nx&EunI2eto>@{w=xIT5&n|I>hi!RZrPCSZZc&1v)Km#&`Qsh;knV#LIUlr!)Yf z>FJep`w+ACC9LzMU&MX>0BK4k%7zoRc*z(gx@riHZFsXmAza>L#9W-X`?>&4ZAuA7 zXV_#s-DYGPJiBjcY498~x>col79~81MXa#S51xZ<60nwst*f4`upriHG|+mnC*w8~ zyOu&)&iiUgTVzK?J?1ioRVkanJi&w0kx3G2k>WOedH>Loww@SHu0@}olecQ=)rGuk z=Ol{YgtmqAVbd%fc6_w-Zhhke$NLJHtg|dMj>UjM%!|;fwC4L4#M$%oP2z;0bVNkc zq~^_&9(2aKz+qttgl`dltU&0bQkhH0g&sC?A*)f^Xodh|ZSUXCHuJw>m%V*q4x?kc z2w^)@sx2XrbzJH*6rP15sD)JwWEz{DBC+i%p%sXDX$i_Y(cX$t#|g%#Il#u1tr>-> zcwXL4>QPLX!ga-li+}X5NOvqz2RDEW3KJ^(-Oy0nQ9m|bCrV9eL{INzYV+V#L!_=G zvTNktYPXEk^FN-+E2y7_B~=SuJ7Wq#jA0j7Kl>6-UAC6sl)9#9UHz2kj$lIfhE^(n?dvk7!)d+ z7^s2a&T4>d+rRw0v zub6E@+zA&?HlRO~Jx2PA0Eq$9?+O~tas^cgA~p^qHExzXcbZjVT`KnXKtepQx#e(E zKo@p}Rx%4K-vpMHraCg9e`X;?Pf}iT8uD`rdzDxVNev%UugxtrNLGse&5MJ!0F4w~ zso|vu$ADkD$U_5w`UUO6;hkFrR{rrvvEymv3ng2#P5yugcWC=^D~mgUWapMsIjV%P zV{20?DI74pBX`kvp$O1eFWx8R34N`wG&H)GPHS`+qkHw4j?^Rr2P8r{ugq-^*_dH; zzf{IthYHL6axy#KS7cCR_W=Jf(&POk0XKy|r=|9UouIth!wXQE2bOI8uwOE~%)?fWIH`bmfva8~CVQ>HaMka&88K#0 zrd?pb1-ECpC_90_k+I;n4wOeBugKj_B0}qPIRlrT#^u1V|15V4Q;$Ne76!$;I#1tJdFG5Q=#C)Ww7f?tx2g6}9_TciffE5P zxj@v&X4pt(9$A}4A8i?uc|xB)79`IvXv&`V$YW?fTx`E4()5T15n6g4e`^T3aj#X< zo1ne6)gry#*{Ni6F0us=`V=!`+w4#(z`zII5rq)H3=`s~2dXR%*p7op9SV^I3ij@L z`tiQY;n~_K@hgcv?qKOY&$q-~QweQbP^eF-&ZHZ-=iQxjY?u+QL#;^*^2HzaSBq!w zKCOUVp+T{{7jG}OtVp-QPyi4X;am-r5-xzNS*azP+LKE+ybuWiAN${91?g4>w>SRYGO8mL)?XfhD7-2cKLY5uag|Oqi9oiLHJkHX>f_ zw`Z)8CAq250@6tFrNgzQXvytrmv$F?7tL0s3VB;0kP@EW14^_Z=J#A8@ayA{rNm_G z(@Yxq$$G3fak{jKN9n772sXD}77WNMyOb8UccQuJhq+oVqQW>P6AuveCMOdhD zXAXaZ#()q!@#AgFjtno-7_=$R*_8j%d5HBuoDq9;_t}YPl4JxdieVd8f)hafbc82O!6rmS%I)C`Nu9}d2$cbzMVtg7= zVy7f_{{DXeh4aP&JVY=oXtx%FmwI+XFz%>Jy!=+4Q=JO9t7&)m%KYx7%y>8n2#IR8 z;}3p&gwvHul7{a7@}lBKi4!dLi>2F{?CG=(8&~1oo>g z1}~6MgX6q^({_fTm~m0nIJ*4s3dF zu{6KlVGIqqAUPyj&H-q_Zv0fdjlAB76x&tFY{kj`|nwFpl+wB*Jr$BTOT22FHvna*9eRJ`NDSUko2(L12P zEH%S6IqdMQ-60~Bp5wFf8aKHB^ec(@cfV|x7gQngYbeAJ`oJu*Nj)H`sCxT<+WpD0fV^3(FmhsFmIsEAVTyJCc$ z1Y+0-6p7=jykow3<%x%Wqmgm;LCNbt+k_o=9xG z4gN;!aq(=XSIVBx&U*rZB&eeiQGKW`+8f>0zAIyedEfkru>S3tt`|;d zigftAolZj`&Gk%v!Zsej_>AA@!!2r3ARcveM-dDUWJNUuPmIr?3yCKKaow-Dg`jma zgz)s9j>J~O%re(3pBiAw_f8V9zyj2YB9yKt%I2Yv4SR+v0u#_i=}F^fPdS{ku2eVF zJ~HNOjapN!jq9z?hH_RrL6_F?Q6>jPL8(0jj3vkq}kkWA?=WVMtu z^kEofy4&WW{guCYNFLAI&17*4#JDe2>X^*xhE^Oa(f2^d<-we|Kxjc~hr9z-Y`6iU zNEyG^-LFt;MCNHBc~x#c(Noc`dCLE#_y0b?amH1>TsC0c#P)j6TalLKzuE&kZp#J^#h8;>!@!4|zQ?(CPPz3|EvDcaT z7xu7FWsC4coR=9}k=4xwUHTVE_LK5v)Z!!;e+<^ibDmwAW+%4A3tJpeNI(9`-fQnm zAr?Ob!jbvfvfZ-cQSEQ|%l)HK=K|*}d{BOMxekCe3m;ptQLmmKk6yR%MOE9I{(lIA zaoD*b&FqewUR0f$UO;r4h?A}Bpuhth3p$sB2W2N)cgz0a`+v!oO*}irT9h4Zj6w4;LPCE6AU3pw^5BCd89XDml>rLI+~SE!04fW2)zks8 zss?)p5rIy3$aa?I(yy8l+f;l6NRsMleBb)_*;-TNCWTBnZ-qtQ!C#rQ-H!t7)?y~u z#25=_#(zorxdO!#LBxDdYIlF`(N3u&{Pmx;NRI6@tZKEK?v$>2)k&BpTBpv?2ej05 zO!qJ7GBcVws3kz+VKX~dpK4LP6JMvR(@TmP2K;x=QpT%FUGE8pk?W9PI@`|I@P2+8 zOXvQh;r6w9H)9j{PgS*Kq6N4t`iRgkewxspO;d^erDOprev=F-bFFjo_iw$lr!%1z{7BM~($Lb{vl*)U7wz)=A? zO@r^Z>g-k0rW;@&cj2h83(3xvLvti5%f*7f0}F;Su^MqboD|i!vAgtLD5xZGBKn-u ze&Ku2ugy}Ngw|hGJduWxVRczn1;ls{m&+xskzdxltFqSYj|sMD-%-9lDBIr%kdD*n zLByF*ORG)Z3bQ8HsO*RL`ZZP^U1fRlNoyM-9|+|)Xxt2#N(^st2D{gD(DZ`9SKlA8 z;GMLKq)lzSz(t4ft%W{II1QOPQH5JvCTc2h)e!;nu1?8Sc>(~MyzZSxu1#OUn3|bF4nc{bwFnx zL*}uHcLuy|Vk^%%gbf3k2@QB2_y)|yLh}j-5$C}N#~;U6@%BIjb=!x{3zdH;dl1Z$ z(&$&6B>G#*L@FJ0M$N?1hIHNE;6&SRnBEVDP=IYQUZ$-j`fz@2m0;n6pt7FGpZuYQ z>*(k0y3E)Jx2zoIf%i~EPl}JGKOL}BxwJAlH!h}Asw<7ZmjU{oMK8YTa)akV-CFSJ z=|gL_7pNAWc086RdO#@hcKKu>AHuTuHag+|lC8mR>2P_h%9)Qxe z<+ITe2B&K7f8UD{7f(hWvZn~T2INzHV|IEw3G(k+e2v)pD`w95jP=U=YM4f~%<7v9 zNg(WXU+TVx^qKrSEMs5ryNIW>8pAIr=v`StKC08wV&mRZK>ip^(YxiKOw+tMZD|-i zKulSzlvQ8Sy!ASILy$i<=J_3%6h1Cy?X_$eJT|J{DmzQyK`AC5mM$f*(ly8I02#yi zS#!DkMicay-?sUMJ%SRHt7lS8LPP(6*OEIEaCKu^1e_(nljAKuc>q3O(zQEaNX}UD zr){Uq8Q{;!J?v?5%DDIS4n43EB!^|dd%swU$Qnaj33ZI*5Ts@WF6CIRzS((Ln1scx zi{&FI$9;}T<1>DmCiXgs=&rzx)|ASoNPr*^XN8w}n^mDZn<7tD+}BfRE7bF8AsF?R z)@gV>Yki%}3Gyg5F+MQtpLS(~O8*^L<0`mQnzO6{8bl~pfTJ>Y2`0#0-6MFPq^2c_ z%X{Nu!GcJj8Y=j2X5~?tf%;WxVfvOPKy*MzIMW8GoUX*GHOWnJwCO#qB<}0$>9G!v zzCHzpr2yB|a_;-sGRvqCXE4>p7YP`)Ax!u9E^xF;cr~zTV{NyGpvf-QPx$B_*u%Yn z>=kn0$G^>zwCnn4_pBp|nyPX$okQrPdFKc{j}R@jTPG0B9%t26fXsEK(biejQ&_Pr zrN?K9w|{XW+0svow6C?DR_KbGZ(D21TC|F(b)$MDS|$Hj8RxOk^gePG?GiH%Z0AvS zmHsdux^xY|ZjwHbRb}+2)aN{9RFgFbir`Qg)gIvNy zCR98P^|utHf@sX{G(Jri7I*gL1PLhCiLh~vZ=-ZNcKMLo9p|1Mt6N?cEWYW$Q)3jY z6eTea%LbP*5A((6k7~=9-NCCtz`*30|^t6YUlnR z9v6JqK5_5wmCpH1Nan~xV;nEnzT}RgsE~+VVI#mEZ~~WN-E=94x4%%}!h|7D<|o%p z^Xe%}h4Wq^6WRME?@p(bkpdW}VK%9U9oplfi45S{wufAmN$QFlgB8k~n6!)_9@)_j z>{-s8(UJ=sj6@zM#lh&K%RDiO+j&9U@Bma7B$)|VZN1yk(-<24h`Q;==e~l89BlgF z$|6a<19;Yaym|=zBE`bb6?b8m+=S;#EbFyCW4NXrbM%NwGOoZ{N&8(GAZh1VYEDeg z+oVasmx7x=&7JaIzO3E$Orf+Ca4z4 z1(AF?T|sejY@X9#9_X@~dprQ$<>dqzkM)mhjdjBvRedG*tc5NCP2fdQP*K`1Xs0fQ zAs-+aI$C^phC|M;FP&lRN?OrAS_>2TIcNPYFpB;OHEhldwU-xk%0}MZ63WRUx0)9E zJ+@Q%X>L+MU%9M8bbrk>M6S5ofjt`l)-|OC9JO<=AcoKGmdn1#4^tyXMZ*O~jNz>E zI8d#CdXHtyM6-9CxWrd;9SP5$7244T+Zm(7vytV6#upWE{Qzk zuuR&K`q*H<#WW@G8@Ol^d0B2V(f-a9q^Is8Spf^(R4e;h`c&cbQDdhRedpnLH0l%p zyp~607XaeU4H@9ds%N5qvFp|NoQ&rsv%lhd*{eUYPAoaBZOIocckI8|=Wq z8x_fGyGrSJoI83wrtB;I+sLG9^~azSH7iL#yfup*e5p4`;q!Om$pduyLL1Yt&qq{K zcVZDISCqL&S^gR}%txmdNUj-!TiQKjlmb$%(0@r)C&kx6Rq(9z7x)iG$80@0yV+P8 zH(gmCPb>XBO-mp|;BL~>XrJFxCAT4F-u_<2NCL#CEl87&pzm07(cl*6^(G|zZH zkCeK1gHJrMHoYpqi@2~_6A^{ro>HMx{dWtOv}gEJMX$p+-z~T5*#VD!>%E8FbMQ66?hyy?Jim5E;x!*lj0d?bKS>Z}8-CrYw-og#>g15v15O}PsAtyqQ|kDY(KN~X3>$`* zz0I_Q7@$c_zxIHPDA-TE=Rfci$(pmuh*+p~Gc81J!%R6FEXthBBg_5DSNG#Q%FBA? zs7OVU9bmiM!SKGFeMJ4seUt!HqaI6dKK5VDN?puY!;d1!$!dB3XNH*H?OdT=Axkh@ zgcCnyOX@@139T~z3{4sMw&B_{Cnts*&eW>%1H7`*2^* zs4+7r+jU#RU_J4^2R7NDIgJ9~L;GpDi7XICJiV?R!~uk2w2oEN`B`hQ}zH2KO z{yD~%@gq|V=4=W8FpK_7o}ZNcCm{ApVM6zJ00|Q%zlru(>}s;-VhCJfkpnZmbh@gynO4zl6 zn|PH^_&JTX3(19+Fg~$4M&kj`b9}CcR1!HXvekC?lL4ARlzH4|a;{Vrr zuf(Gd{sq|oEX07ydA}rOqXLL@jL?KF(~}=arM|zoX^Ui^a{#_p-Te!6ln=vd*OGzj z*{R}h{59RILWY>u*^&Dm(c?^kRvJ=7s4q6@av;f6S5%O{m5{7>HN#RBo?4NF-O~vC z?#YC$&$wdcSrtCJXis$wC?e3MLN+73)O~sOy7Ug(8&E?SK-W*lgy6UD>0(&MHkDIq zumORr@6y(lM!addo08VpyGs|W`92sxpQ@Nz=F`M|`h1ak`UCGfYs&iq;?dPnCVr&6 zzuC#={P@b#pfqDLJiVN!%Zd-EV8PAQpHpO}tdPa~?_Bd2W?>3s+-Fb6C@dzn=@|8J z;7vU$aN@P$IRHft>3`}QY$?OyzKMKDAu1O6QsFqK^Q*MSwuL0AGEJ2!e<*n$%GlC0 zLHAvPy6a0(4Lbu7kPQgc8$Lg`8kvkGaJ&a7FfCS>l_!S#Gy=(eLDgQkg@9evBjOG~ zJnV!|;q)boLS|%goHo(M5t34vyt6HKULBt;gZn~ry!xXzJx;@ncgYA6mptH^MNJw* zeV=vLjOe-)5aX0?gfqlK2;f&870eO&uZhTGGZrlQy?OLT&3K#Qw%8>OTHO1OwYZ>R zMk)mIVH!+5xL-k^vCOMyIYdZVirnuRCK+VkUz_zYmKav8K4(I4QLGn4Cm~fVZ-xWw zvE9NtVfElsA_}}WdowQmGr(B+A;3h*)Z+%H1dVdnSMsdApW^$mhmUST z@}puXGZv})V6f-nbFMm0w@K|cwIMvj95O!`SaKpF0;;qAeJTmA)YpSIOt>@qRI=-N zbYS$!%3@Y^WEa^L@Z9^mjXMnNjt`gl0QyZkKn^Kw?wjp+4MN|2`;{?{Pqs`2y3K%V zTwTyC@h+{Ez4RyG*_0{q+6hjs+8&`)>d<94ODRXbr=X7|T-5n4cX^tB#i$rCvLWvth zhOER+nDdZNZ0~e>t&s4|qTa;YvcYV<@xh-mZBLut25qFR)|M3I28|N2M5{pHeHF5>9*;C8~{(x~)En2zYq<2DFUBl7H`HB25J zXJ-3fUx&R#%Z`&{SsYRW?HF=*vK&YX)UDd^+Mw=41u7!)Yy_S`A1$JRA#43hK4BMy zsW^0ldZX>6^u}eorf`F-GWYe;88sGnq-yWnv#UnoN2sxnYq?WP+13{W(TNNFJnF^o zMw^3Yh%O=Ib3mQ)h!4&`H{7IsE@%hQcswMv8L5&P%1dlQAE+?+I0TwNn~^`{%uqEc z75|++nhwT7%$NUff+JoZMWVgivC5slTBc-4`sYEzS$FJlxZdqKD~yCD6CW*-P?qOveLe@vwA)3oB*B zKU`YR+R;N3m7jJIaK|`}z{cNxatGIH?`J^6cDZ&L$nZSXVITb=N}3w2`mPTruYLLG zAp9^93?gdC$$Z+M7)S~6UzvYpVP*$7=%i*(D%|dy%-1sC^5JkgbR?;QA2S5~^m?pd zqWa^Av}XKkAHGqmaD7xfYb`LZ&}bo$3;$efqS{@rm;0y#HZT@&kU#W}8$kPiqPK-W zG`k&DJM|q$E)jU~8&inog7@o>VGL;T*K8@El3MGN$DZEK7k?~)U(;?;G&xZTD<^h> zM0}Z?pAB5wdDh1@M9Q)0GjVwH!vDvx%9Bb&Fm_0d+z^M}*rbhdEQ$ys(H7h4#hs0q zW#r4%SfN17k^h80aLL!qqm7Xl`6m-P)T*j7xN)hP-Je-XX4< zmaf$vz}ofJ)=*a``BxkgHOoqtQNQuFf)*jC^Vy0W{<$aU7WRoq03s5wTIX9=rNOGd z;kmlvwJ03HV6p)Q09M^jQ~-QNHQV@^lXniv*XhcznyKzn@`LPAP)PDRz+@<0D|dcm zo5e$tI)eMTiqV5V7h5J+eGcvtBcX}AM+r!QA|<{ztpyG7k+Q6YS6nUnPx?q}uPIT* z7iLOETEmA#cx(g>)lEF*;axXltVJr?q|K@H<9I13ch<5`JBLC#NSTxSSt5OL99fR2{-`f725Z=8TmTEwM_onXBLbDd z?jSgSnYLJ2{?wwMXCOp@I}`OR9=dzcHnbh!HW{xQ5WK~A>)9dtl%L0rZO@{Uy{aXi zPCL-|BkO*Bne%(ZHDkK=13$7;>8sn7Wl`E4Wq<&tJhR25G1Cp9 z;XXc;zVO(I5tCxnzLfro-GX3M1?wW?+R5!KP95nVMdG{KQd1sX(m`E(vnFw5|AQq+ z0sqmqBH0vlTWWGbte4;Zb6t+z=)-~zj=L4lDtTvLVo{|X{jomFx@dsEJvJa5qmuoan~6bRUrk&ZN-*^N`tWoGq88eIT}c! zQzw8LGx`D@pj^tC0-GpK33kQT;@fv}<{6RmlpMfzQY6=za!`*Dnju)~$JJ6m2}lX3 zg)FD_lVTeYDr^g}%F^FkUp%WnL>TJY%eD7Cen5n@1f+qaLZLQgjWD}p40vgj>YKNJ zR{9HEarrF*YLTa&C3X+!^+`&h58-Lg<&LDLJ8PDCR@ZMRG6N`bP^7d-hHTkVs)c># ziP}N-ml|j{s}LC6)*Zui6wnJE?q}_f{C37^hT?2|=il4^~pXS|s{eox)uAa?Q%x-F55f$!3bYT%|Z3bY1n2JqV+Q zM@yt%Vyw{dXEh1)i}^sS6cQ!gIRPI@_(Z$v{8x_xZD*1w6;-%7Bq?)9hcC?tbFoSR zHo|NLB&P_(Bp{&X?EcqQSJId|4%)2ZbuXoFu!M{Qv>ZM^1l2&yO{muL$4DZCy}GT$ z0~1dRm>m!AT}9rHMB{$XR&H0C3vzpdV_g0KYrZ7`7uJNw{ZT8bk^L)XEXh%9vyRzu z>Wau1Drol_^IH(}Myr7$i)gLXZ9dmPaOdU3r9JJL96P&owLNJKYlBEG@+ zro0(#GY4+_?JQ<-CkaFXUsl8ZrUo|BR*J=-K#XncI1$S+Wl*8U3h^(Bjc9+*J^0A$+q!NG?es|MN!z%G7iVwopK3n@GVf@o8e!f0%& z=bdUW=ODcz&s3!Dkl|dSLn&1Uejqj^;V!90HxgioR zN2`iw><2c9!hJl7V!>TC9aU%4)!?KPh`pL1BEMP()B zA2vuMhFTDW=H;Sf9TCj6t&ea}{~)oOvY6h#4M^lt{n!s+oXG6UUq?j{`(jOcrs|@d zVPwd^#v17c8|Dc3;AYqj%f2DSX5PzmMzkY4wVcEX3Z^ldgdMT;Rop@&7X<~2Samc9 zdVmHK^)Hjekk)Jfrmtmx+h~@3*WKyE6xqPFIHD;B$UenVKJC1}>s%4~k1UzIdNIcO zU}W|R^{&fW7FAv4EGG90Gutz2v=FI1o++_gJf*Yp%LIl5vtI^ALSwSZy$k1GZE zmDHLtT$8zTdqXrjP$!G~tFh;emZ`N{@DuaOmE})7c?5xk4_GBxhRIOs5~(A_c#V+c z4;qvZJCAJZ%5UhSaN+$J%sTV+zyI5p;33FG0sejtedklEsJlvhdef9imZNnjz_O+h z0h|(~0r(ja7w%@+9@c}KKOpbyPiXP`qjN|XRPj9bebK&MS7s%EnK{Y`{YWpg`KYoXi?E}B&(Rkrsxp$=No zUiXEAtCIHupQE9BUa2EaQWt;rxbW7JvIf(CXPtV-!TN*;IB}$^5FYrhLrbS<&IoN)$e_J+(E@;d+J#`F_nhNt zG3$aOHwl!0P>IAQrfeboJZfqN5~Lo?CK_UKv#A8_!}h!fp_aaY%sQEy7TSUPeJZi5=c77(K@qRkLYN||bf9}0p^ zZ+^(_8D>!_oTz*1Vx3kf%$QDFh2@xzTgVjrco$V4Og8XJUqAa5arC@Ehz^@Jvp3YM z&9zlS##yG?HHT=p!NgplsYr8%F(?z<#AQ;RU2+DF#$ zrS<&kg6p234^)TQ_IZ6ir=MB+4QlnCk0h7pv5C;!09jB08OMZ3@`qxgAl31@*fxBrra69dAh=fI;xAi!KNvCDN^`fx1v5FyZ4;<~>zQR2HZxK|t#Quk!@T)( zuZBe4zF9KY!BPPa_t&z&H>l`SSf0Q%--jnmFm#EXd3orw3EPVZxLJQuYCi0LMWS4@ zDl;)2V)jQ6l{eKr3I-gWzFp(E$AWwO{17>6KDb%lF zafbASw&=sv$dK$z3aTp7g$RFiU~KM&yyan4g8y%P^~qhKE5)x1bTIDeJo{h0{-j=C zm4=BcNwo}prSq>)%gIj%z@Ouw#5Uku5Qk))<9L>5#u=_`wU9}{M-AghN6}|wukDtP z%a`G>(VXRPWs7f(sUmT3Jo3Thea|~mav3A*Ni^4L;MBCSi_^D9kT^~s=D-K^0(pI( zIl=^azpsG&S!Nw3F%_@^Mcz$+)oJ%@gtPS9%xPX_yUq<3k6B|(DDz5CUP)WpfVk{+ zw@KE!J&&47vYFMm3_-_0U;P!>{Lr8)6aLY#)lO7q_Bpq+8t1Ti5-k|?FYx(n6*!t}6pmI0b*B(T@3 zoX4@IsTVrGp|p;UT&O|I3gun{t)h%yqA+a+*4U|CQ!(GNjPLruCyhLMd&S!+j(8JH zH+kyrOTLao0qrR}!PQFY2yXt-It=akHvIiKoGRJ?P;l-pOeD(_mw0BM25gF)XYa`e zX-_s8Y|d!+a`TNHs8n1#MEhCsyg-3c8Bx1x@{fh43W#!ld`Q;x{;fR{hCq5WhC^{- zDPn{#mkQwXI3ykQW|N&2{Te{Oy57o=gvdU|48#;OzabB6MXcc_PKPXy=|oREvY=Hu zgI8dMW^bPd{+$W~z2PRn1vj=LLGc?`j!A>%WS{T_wKtmGh@FY9fn-!F|3ki1#$o?o zw^CDpCr@^cYf7S#2sOixwvl0XVGh2koMCMEqZ0bb6QrBq<2KG=#3p!Ih3X>XNYHsf zp>@Re;QGrn1 z2~RK-?grr@hWCG@(#Pz@adbLj)X?^WBcsih$MOsCJ6G~MQL9s`6<@g=N|N0j zdP#AX3f?`=(_LQ%ebBkeRwoWF@c)J769eC7rrY@cKO!;n$)3BoX!;fY-xJ>Fh0&{%jLV>om~KngFNp^^@2+XZiLVq)*TM%A%M zM{5fi?zak9*ScdRC^G0$jYH(R)Sg%Fy?sTXTn(SupqSAZu6os|lxX{N43j^j-Z`$% z@HF{7CS;xab@zbRn)WQ>fd<^)yhwG`oZSZnrG32oXVU zVGNWKCSDW(E4pQ}$gxnIxWz3Kfq;Yq-1DJIdOomGPC_T4v{ylu5JFQubYfK$Ad*(7 zQ}Z?g@C-eQb8}#7Xn?oc{o#Z-0*5I0wS#+{WJ7dQYf>*V-jC9s)ev&@uU=qu0W~5y zf@qQbRN@rSs~3|~3)MVQ=m@aD(_1gtXZxzTzVR(={t58I%Zgqqtg?{|T1GHnk~ zt0o5Eo-3VXwrM+d#M)wDx;ppgaT&@5Z{c!GL+Fop0Me89s@JC~juMK|4ETG;-kOr{ zlbe`UT0f;~-FihVb8XS7sCNy^(D%8d+yMf%oPq$yZqtk0EhWmr52w~AU--U2NPdFw z>PHwnao2$f-5RbB9MmZ^!(wCo8?=MS3EGcB#=nO)XdX^wr93S6m6$VzcVkjh#98;u z$P*DEGHN$z?8TmZodwor!ijSf$%$gSa;qO8rYt9;%t<%5xr=x?!LD0}km`vE0R!t0 zo(VW(t;J4Td7_D!b%Iba)$BI`Rnzb>;X#b(<)kufY)25FB zFAWr}7Y3_DVZ9R}02BVA$3+Yjj=i$P zO)zHW?)sf@9fxI;((=;`e~kL7PauYx|F)X?x|L*Bxn;fb4C?X0h;j9 zmYz*DVcZn8th0MOWKntgwv&A$o_Njl7n|8yKu8w=`6ag6RSzRl!9T1mepvLi9+EL( zK6qrp!G+*hbExqx6?XVy_yP&rq3%X%z^fWvbTHe4wPh=}Qub;K!w6mqo^I?B;1g;> zr-tLk-xI7`vo;b2!@>yoLz}bjF_jw<-Ccf4v^gENo4aYo^mLUutFO`D++R0ueqA@ef%S7%yha@s}s*PP4tOMv>T5fP8UDlAAc zxyT;TG5w8=3U1h-sWfD_(pYNJpB-b3ww3^kjp?8v)I8j&XW7ymGb);*05uu?D9*`8LgpuGTvd8hpn%)?GD zIkUo+VB9pg-^x8qt;W)bPewYvvW9-_hf!#>zKN{bVfXW^t2d+O0 z$$JOU8jckZWl@YfoW&LvOQ;0tlpHM~CQrBKI$U3Uo|)K;A@(c$H>tZfz-kVsj~SrI z^Y@5VAlUqCLJy$gfR%N7s1xoakc7cKVanUgK-a6xpR9`t+?yc2LxP9DE0MF;o#6N6 z)*op5kGN-)C=GvRE6|F$*4#T{Hy7efJ{O;ydH#fYXco+yZ@)CrgN2eMT63a%sK=J% z_0d><+;x9KmqvS}h9R)w6i0hO2Y;9+d9*m{=DM~kUet6BYP+GpXYZpTPwbq|zULe+ z<+V};>SnrZKZrj_81n(ixm9mD2pa)B0yH?%Ly{jbN=C|s&;p%@P77}4!Zv|pxpD`J z1ruE#6$6nZRWDtoKx^hAabZ-pb}*^+B6>c&+0AavU@dSm8H{+@Nij>v+Lv3JTy)$p z63Hc|WTd{xHSvQJh(}!ZE1gvVqyp`(d<7eB>mo|`*!qE7Y)iYM3If1F!9D4ka z3Gl#2C8@Paz{}M+KhgRu(gvQRTOStK6Dlb9AA?(IxIbPN))>Q%RQzs3tSRF7N7>I` zSAMAA5XTix+70OT#h8DJ!kC8`;cZHO-mHvl(D?Gvxqe`te81bwCb!O-E65QL zzfJ46A;dd~U5A$4IJ67T66OpTU#w{rmVl{{EZMSHQ|sCV&vGDKok9hCYKS4jsc50L zD3p$i9(jLJ91Jc?oGgx{=S~WksE`06iMi@331TD*3$lqmW_^&n2%m_CNI1@A?m)2& zfI*)Wh%bJo%H&Gov&ibc+-x4p@4rNaaAjk-jMs^JThmZr&mMs7$|;!P-Ykeu+3sGB zEqqPWIM4u$Bp|S?}8OIFbyDVu%VOonlYPN~D?ybW8}S z6u!;RUlw&G6z5fr`tBjST6ONR0ItvNsz2)S%!RY2mU9wuztLBg6KeqsI>5#5teFL2 z>b?k0U#e+%r}Gu6OF*2|Urs3mZ9D=8%KsCuiWE7xi?gZ)P+?QXcYkZ~rcW@+%s2Gf zbi{8Od~r_yRW2+x_be~};))t42>!@Y2vLt1hswvrG6(0BHbnY;p0mk7(=+-iR~&u5 z0N&>^27^e+D%{*zIJ+lowBq3=g{#(I`Ih$9CkeS9l9jz#i+SKC-XABXvcxX?21#-D z^C1)J=9)%lK1ZXH#qcwO{{Y6s$Vl2$+kKt%TB-@VVkiOeLzppprYk$dN{uBvk~Trm zNT4Cb^n)0cC9*Vx<_cStSVXOCmCsev#3F(!3GbEX%duyhx6?ZH8!_NhAE6qB6oL!C zjf;YEwdBObz7I14_p++g9+s?bqACBQbkv^z)S7(kzeIiiW}oOI!l)Va078-NQvkxg zT#EE*azs6YamHR$fH*+0JBdS?cs#b_L^1nrG(;0NL7R6P64<_4(-Y?6i7PXvJDn*Y z)tpl-D*D%UO;P&7r5vB?yn)6G{iMjie9ZLtML*Nh@f*EBhe*^tt5_2C>QHNAyiZM& zO&8(uTBAi1LfO1FHRuVcb5|Zrx34b%<&i(b3<_gYGN@*kA@r5yPE+2g_sBfIY?*FNZmRK-{2KagO|CmI zshB6nsi?H3>t0-7=?m2jm^)~hhIh70(qauxG($-p0e4gM{~h+OKr1opR6)yX+AugE zTB>FaMyHypv3?;>TWL1V*VCa0L;5P)mgop|`kH=Y#vdM1LFbpSW;4Y+-e)!*DeO+7 zJ?v`yj9@7^Yx?d)1>xs3DrDkkG%14Bl1K~2aD4>{zt5y!9V)YDS=1tu@e^|5fwGM~ zy3};bT@BMtRm*!q88)H04^MkgLEBo$5H2F!P+GHFbt+*$Iqfg;*4IQaJU-DAH~0Q- zK-q>29ER6f%C_*~tGd@qRVKJt?lM2$iZvBJz)j3ZnNr(Nk4);>s3%JOQVvP29=DsK6U-yQ_Z!zgvH zvb5TmdE@n;ZQ(Lspyj%oU$^qOd>0+%eb`-?;ZA#}*i@49w3(S>BzmL-{dQJzB0?!) zjs~BJ*x*r$pvTW-@*d7Qq%|(WqT!B60#-ckuVc;at1hJ%*IvAY@*x5WUL$SU z_m$yYI_$~D?xM4^e1;p5Jud-%DzQk%1Bc&PBleVk1<5W(?&ZRyKv3KlTXj=Yo3&af zvk#kCyX@0HEyYnVk8BLs?E`+py&5A+BZyYlSB~qJi%}NAP8fj zEB;PP?H4nQT=)nO*CSyh0nR8SM;!I`>1C?q-!nrNId|3j#UInKBY5=nbKuzU%MwOO?Ano zP`ni+-lx@JOyA!djWf+(6}F;=8O5jFaiTZu3jp7p4S(?%pevWBHf*(I z8~$gTy(R+V6;h8GZMf=kNsf4lSZ$5n5M@lK)z-^J3IA2DF}fxKET&tDo)Y7r3-i^f zC?@6L%bE}fZGF!*#%Sl7$|<>usZwZ}FmQM{Zn|oig7+uLIEFqUh%Ki#OWSGwu`5jR zX^MWbRSsdxotE;vc>i|=Eqd>tQP7bz`~wxvx6Q*kEA-rjDtJ4WaSX~#rrdNA(~zhLBrh(hjKi$<;)4-P z4|I(d`R!>b2zaPt$F=6UT3tZr4~uPl?_yslD^5YhP$77Kk;o!k87q&^+qI_^no6xk z#VC_oX}U>4lLI!reaPc2tX&uOy|g#!+;{Q~ib~(pB%&TfQD#BPaFm#mO!IpiWhd%fSKn@7!yrk zRm^wxwq`pN(-VTDrGV1KZ6!hy3yb znyakw4rFd#-GYP2{jFDry>zL_QuDL_tzJOJRerG00t93eYL&Q~O^p6xE{-= z%X*U<2Oljhzn3ULw;4$?Hk$;gK0{Nf0!m7F1@NsJ94O z*Btn=FJUkQ#F>cwJQ}=A%Y`km>|u6hgv$(N+ZS*+ykxA3d=xT&rAwbf^&+Ncv6aEwH}EV&X8XC*x)r(XA}t<<6cWyZH7 zrE!Dx!LP|?Mn|K`HKNtJIRlt?t2jiPJ?pLc&yvNXCM1wZWyHN?t&CJL1Veg`5E_a5 z{n@{c;#$ov5mR8Axz`J1Be>|yQMWI32dt&6TBv1Cn1X%x;~`{bB+7KrspcHMv+uBuUN_qG{PJ8Zd z61ElWt|;MaW*@^KTCP$N)}I_7@w~kE9zA)hpz$k*)VOuFsYhTc(wFr?1NMKQ%Qv{w zbvI&amwH&)qyhKf2V-R8ylltHjqS8+DEpVz%a;!b2P$Vq**?A}4|}z>^-WSmDXg|W zSWq&~`jYY4nn8*$91%wwr-mHL8Q*c*P-Q1*v?eqU|gEBQ7Jsz^Y;^o!!q5WV#8T|zMIw&uSC|>Q;DaseXiAn5zFH99}=@%%>LDM zugA*vb4iEF3_vpzRQWM!Mdl2(q-cas=4g>;G>wyIdzQxnXfeg}2X+?1xKbcEs6%eM zKk~wL(RG+MCJiRZBWv^9kOE~rQv_lRy5%F>3G>RX;eu4G?_NHz0Ia+J=6TPgxjYf_ ztJL8RpsCEXrG^)UL=(qMWmVJV?f}XHpp2&f(IgqWKAA1QNO1dcj9&ZzxLQ-o z)3MkBxlX?}`DUCAbAyr9wSf_+%3~%Y#rrF;;#fGE>HwJ}{hBsad-jS^^~8LrhN|SM z{d}C(RQi4cN}x0=FS-w;+uDC%@CX?`&Bc9-Y}5J*vh18MDU&W(;1HEET5-|pB+dRr zqSY2-C0pwxS|_A2Hyi^Byr;5UT3@D;vVDJQ&n3YCuX3DrTriY7atuX({?(BeX`S-9 z>@WIW2g|EvFt7(O6LlH7LWV;@@>0uKU;Xo(jl9B-^(o(fvzw#V(9_jHY<=CSmcZjr zXatREFiij!>25p*(m{@8x`yQEpuU(ziCNUdfkfI#7KF3G(a8b1$jw#o?rDBXbq zG2YSZR(6V^V#%WiBejk`a&||Pk+s!i-$U1$5p}a!6l+z-uPI#(<}%VFp~~suFJMiE4H)7J z1|o}A(7<4A#Ec?}N9L+jU(O3^h$J9@}w8FoB-9I3j7Aqy=Wp-&QJUei-G%swJXG;-ze zN=CT68?KNEeuIMCFTuqN-^R|JGFc$Z;C{+TvznUrHQV0STakg{AmtNF4dM(!R0-)K zCnH<=nTJ-2?gdZcD++tfefJ{v>ruQNwY)oJZ6KKP#@+Kr}k;T7x)o11ltNq zTR#|Wq?9R0M4h4dm8WxV$ni9p|_of&jr91Ar zg5Si;nh0k?4&Tkcd$SG=WAvjB$yy6ts}i4!N)`ky{mo5e+* z54*98ec~gD5u!t&5~D(c3#p(7@+%emlEIBhx+JlUJL9nTkpbNn12^<+d-ZzQ!R84K z$_z~FrnZ`k)d~WGNh8@gxJcPe6-&;g)6aQE5KUh;p*$PS2_O3IUbF{_Ss=q7&s@gk z-N{l4LpCN#EDz13I+By5@A)*oRi`bnMDYW<=$7?Nv$$}Oq*9|=HzkQBe*$~V?5luXyrq%v* zPJKlT0@W+)jGD;3;sf-eDc7Qr1z>qmuf@b~1WgK{22Buqym&v^6rZimB@mFmWHs*i z2NF}rY>*Yv%2nn^Cd&N;VO_)@m&-E&sMJ7tAsh&1&F|C00+KH)ELUO|F?Y>OXjE&g zKr!kRIX}B&9nVqm--g5>iv_w9D?m2pQl-1g++Qw zk2e6*m4cGlc5-NfSziM#>SbKqh(bZB1VDbxhd(;|>a|02%q#!(O-|aJM^G_ZFe=&C z>oCe%IxD82tC5U`a=0K}0*_HI-?$(mtGSt8uThAF+$)(lN7*Iuis`mjb*VC8TEh$* z>V6XvsM}&4?MGiZv;S(D;_3$bB`;Dj{$tBSp@lT)#RikbFi(FNcA?uSNmI^>|K=IFNyMaNVn-N6fr9Q)^WY3+cL` zxi}w^%OFJdMK7WrK{Q3E@w=F&=JZ*jwVvv>!)!j7F2q68JxUP0bp=U7q1}4+?Q7 ztLzLt*!o8DPB{pTD|Li%vrmC5DDuGc4S!IW z)Rdo}@{A1h*(>=)+c{3Si9!;K;%ifyzzw61rQx;km_~i!06Q^60_>UUIw~O+C`ToJoArU`pG zLp+2rq?Fn`@-Ri+rzA?)jL(!bVc>=vF7>T%KWFfFBGmzmOwGBO4ahN8j5tZY&rEmv z3{Mx(kbkuEn$N*_$6|J9zWGhYa`g|ncjbr(0#YEP9j5=*DTfrL1Xb(-)$jQ?(Y6&d zWw%(Y7cVeZdC8(S{zg35Kr2%BAOwz=KGHf6UGXi|89a(iCvQ}_gqfE3$VI1uK(}q@ z$ld99v+3h9lk&ff5Xk>Gby1+_edzr2QmIsL^>l}B#f1zB*>K6T>;Q62)sKZ@B&ap( zAO*b1Z!}t=ZBK?V!~`FFQfkY|5SNli^G1ek**G=f&?lk+Ebu#j(!JlPS-r|2O|A33 z;GSzVzSB~P;8h#S910E@2L|{!tOhSVhuh1*(>g(7{n%hJF?>ENO0bug8{&u`2t#W! zJS0@4C$9>j5gy6%k!c@`aglTwjuYDPDLb91FDVUx(zWFC`;c8=kpnpEcI&h@HaO0n z7S5mmH#BfAm5Iek6)~AFU?s^x3MHa${Yy$?xx7LCo?Q8<=D%Yq zg>poM0Uh2c<`>kz=(wY`^OT|^)G4)IYB%xJML@2iJ{ua~9WJyrojOD|As&s%KB8wF zRR>Hg(}2F4ZTojX!WBU{qR`pOItf)-I2&6O)DIQfn*DS$3de6=E zl~5Y}AZJo|JM4nzD{Gd4q<><8@*8gns6Sq#Mw|@3@!~}m5+lSo$Kcq-AT5`U^IqNU zah3+Kb3qfFkauG4RQ`m>-QIl$-OLzS@QX*t@Vnl#T`H0VRtz+@YP@q_I5*H zG@c8q0@3Rtq-f|RgRFR_YV;)_-+g5yh=2)hTMZywuz1fUCN_io(G26#JEt# z!?C~uo*TRqavz(=`aE0r6ucaP0?1KXQUw9=jGvue<+7=?_B#-Nl^olJh);}T-Z_3n z#jw@Rfd6XY_{SAco>Xbbc&H-OhrtvrP+_3=tBU^Xf2~oz65OghqZ7~a?jD8fjoqKw z@Ji`B3Kb13lFb+SMae>H8!&oI2P^TQT=`Ie8jU+s?7}SJrZEucHu6u~U^?RtLS4tq z3#tew@!K; z+=@VEEi#v>M67nSgQJO$<9_SP#)}B$ThT9-D2f*R^wRTPoPH=L@o$LoeO0XM<37CP9>TXK^ zXrM9$dFd^#HgVv&-(XvYw1I$Q1D#_GFcTnY#jM`m2K3JrD-fk(NhXL(`LZwW^fcjz z8v#%rh}OBNbgoGMb~=hDyBdh+C*eS5ag(LU6!ke9-w&nHEdT>OcRM0CAH+4&b2BN1~yFqe3_^;Peins|m$i%aQ2WIbIjtPjl7c_-4m>Ya z6b4-I+@y-;FCuzo)634jX^+q|ouF*oXU4`0*H-XSCnu|ewk%7#M0&hsebYwHMCuA- zO0^@&y9ysEG zXQ4`45+L&H2oqao-~{Z8`|CUuHaGS^wurIl5lLW;B4g1_#j9LLX0uW==36O-f;K+y zxWn!4tpuI#9?>8aLxO14L6J99CaFRS&Y{EXdZo=8-<^mZ9YWa!!WzIrdQxjPeg|K%PLMx(bR+l^w56jvSv ztqv4s9ZB&rCN5-+&_9dY#Zdq9!3qeTuF*EneI=dir)}(KFd*BueeMtR#Oim6gax~z zGNF43?c6Upza8x#aIfbWQOs`Q);t!|`6kmHh6jwUJkXbi05HvlaKr&@cv=iuPg ziVJOdAg4Pvsp@)y&j)zbbDqf-j?#u{VXy%raYd>2;vPD(`9w=e(R#8XOwVJ9gIk=T zjn80%irMF6WZ+jR%b4n(+whbd`k%X3q4cV7a{v?-@sap`?jE6xY7IRAji!^Oj>*RL zsF4gLS-R`lDX&`!H9qg2#RA^*&sN3Z`q?N(Wj$!Y<>1%NV4X4zV(Q*D6EShmWPUzt z%1rPC=)3x*^%>Ss@grsNN-kRh(g@Y@z_e!vKr6!u&XK#CYxfx^tNhxIf#dIxWHJ%t zbq-5Y8e@mV*XAl%s#6Ya(svU{u&9)DtsLqt3@)#xlsLZ_AeLJ{hW^B{X)mbg${o6& zS?g?GF|aXgW@<_myvShpMy;V`wF2M8n~eRqsUZKQ6i23!zX#v3F+oHa;#LC$GT!sq zQ!X5KGs-&k9>$+TQF_b!GP!F###o?Ax1XX^NQm))wO%faD#J?f9vGjylXz_QsAe8U z3$|cr9i2cXPqTI@TWAoH#Z_Mo4eOCxxT?%`%hsa0LDf5;eUFe{xgkXGb6+{`LLO^AI(nEjZlD&E}BJbhtkdsz<4+HfF5O72l zzm&$clQ{F%Yln&;u<6-TDd}REK`u0gYh7;i)W~=;wF&*pauEn8|D>`K;oHn@Vhz$C zvZX_wGP=5PJF^zngJic44Rm?a)y|yi@+y{%H;8gffGKvSJiS~C4z zrAO zxa8zgktSW%>3psJ7x_Bd?8Q6eZT;y54Uy4R{VzM}OZyd#J~RZNWj2OzJ+60oB28QL zqP|eiUDgtDd7Qt&Yq$d={r=S{i?EJRM@SiDTYxuM`Zd!mvl0$=t6{-a7`9Ew8{6PA|AxZAQ7bUvST`N0+t_DtTS+e|v8w^#=21G-@|+AM z+1lFw3cPsAdR=KiQwTL5-t7RHZ`FKcHd@iv`L`R{q>24U(c+ECegnqDd`AN*j$xe% zBb)yJkZkM;3Nb-f>E65MYCUZ8oKR0q*09}nH;}&EycZfPz58bj$PLK9_fL@ zX<7ku+sm~QchA{GOk)D3mXjDHxv}pf{8d?@Z(y7K6^z(zD$NYp)Lu+z1t7{t3!_N zf(sYr2Ove+`Zy)~iEk-EZ1 zD7GHuC?@huSZ6Xm%+*R;cp_=X7i-yW?iL}9}AmOS%wojE`5E-(2r1>I0%y-M& zNtT95d}|P=3!}qYb@DNiR12m;4|8^sI&UV=31U%A=Z?!>Nc)YZG6w!l0e>!!RF1aH zV5cZdYX5x1P(2p?OaQNMQ@TRW5LT3CtNQ^@m-YvGxqTLPPg+cu<=a3NtLO3ad@{wAnqD(@9WiM& zW;-+p_+h|qY0Wn~m1OJ8DBWCEZ#MK@mg}?PJ~El=l1W>8+GLVKZkE(wABhZK&c*x{ z!J}GYGPe65xyDAw?rgw`*aas!YYxHmQ@OhFnfJD`Ua1D}JPPQ*FHVDZ!z zSsr(EFrfQ+KQch9g8yd@#7UZ!H9AmrbdxZCQ9`LZjT@M>Mv-hxw}3TX%0SRZwah6* zHu4*s^3Z?v?;_-(QF0T+Bq;)>=GMo`hLBwr$+3-@EfNHcM*8SAgpiivixOhJ&>flD zqWhJUIfbG*7sN3GWZsR3dCfi^8U}y;$qHL}>f9i+O#ECM zl&3YnQf3wQg+PC*DDXtrCNS@9OMGPRUL3~GlOY>-Q->e{d|+vRB%K!^)CnB`aaZdp zozFwUZg7e`XPRwCGJ`+AC)XT}(^hW|g{3@vRg8Q%B!Q2?ddT5qiL;IS>VSEqv3*w8 zpIWM)FNcvGUm0{4X6bne-`)478;QuP&s!MH9%iZCsxN1*;e8hgq*l?mQqdS-zj^?~ zGr%8p29gF6z_EIVZ0gbW>K*H&f-uP`^OSV2aQIXAoI8YATgT)kU$ z6;^f8ERkPAOq(ST8Kw~UV<$#$PEO34V?W80-kju!hz!JI1S|P5U@h9Uy;obOCer5T zfQ5=(0#1qN8nZTeekjvADzXs|rZgmtb?}kwpz-2vwJY+KtJ{BRIi!S4HuYa9eA;MU ziI|ERsn<`0H%2=ll>bbxIgky@w0qk;Mf{(RIg|c!mP3Y(5QH+iZ{aOk$?8;$y^##5 ze>N?_t~gfZdY`xSoJTq@8(MQH#a(s|dj{ff+BUu*NMVg5{J0AKkK^rg*59f8&`ZYd zOg>Eb!4-J&_B|e5^KjVF zcKH)Oic}eX{5G^6w!%U&?f$(EW=oXWiqEn7Jlq&7P#{B}-VL-e@h>TyB z949byX(*|>bU~z}oHQ*-Us9YS#ZGqSu0jcGBjJH#;ejKm*>5`Nc-KeeyFPTKewd5e z>B;1xNP5IyPKc6eXpUA&cWJTx$ zIzDjR{|-by337Da-M*z09NxS8Ly*u~S#62TbTQJDmNnaT)+h{a+Fht^7K$W0KgdC{ zx$i4ymwggtkw@88f$d*T4!uqIpaJ2bshZ@N z%9*UJd?f@weMeTr?$J$)R`z60CVw z*9@P>A>^!3SoraakuLQe!^}1{*H^7AZ5_hm>#@Q~w=`Yk4(*LZ5^LW@e3mr$s9g%< z8_fVht%xN5f=Y{%Kh0`*Z3?zr?^5>VC|5L+?0sUF9X>1bNQ3{b;>%$++^`Go#{|jb z@ibTMoTk)zAck9(GaX3P&m7bLx{o{Gb#I!m%@#@ln9`eMGBa<4GEMp=k~EJ)5lS(q z*h+oYpj9QJTi#mTK2eIozZ;Giv>Ds>C0V0&M`F_0qq{q$sI|dr3!$J2I@f)&B3~5; zWR_<5qTm|1ourV?f6%77F>2j>2J*+VrNFqqt{H+_Sw2%4pH%(!&)F7SzZ4%3jO+1% zJrInKnUQL`UB|}-@})$0)1Uj>{O2H4sWm7`8M=8&Hy5pHo_+kUD|hPrjHhf`(K$J` z`v>75Il2{r4{s99*~HN;A6y2hvHn*8da;1j*E#@9R&|_iB-X&%a$A(v%#*?kfD;}Y zGJoa>Q{4|s)hVlN1K7@;jxs7(Pn|q?ncP`LL)Qb@js+AR`>?RVg(7ObImQ9P@t*zK zj*Si>IfYfh-k7s_31521Pgwjv<98 z;ckPR#Pm`loNTAl>@z_zM=sO@i$n*im%%iV(A*ze+a=3rXn7Od+HqE>7V8FPyI!v#?Ye$qlrVcn-U0Q68xsVZB$bd8_Mx60QgF` zJUYVOFbteWUvx{8+i=b0PVgpm;Bl=%_<}cBp=|%vuy+i>mudoTqX}^#EmhtMB84Qr zis~XlWY#Q}6J^nNASh7SDB6I24cIcAtbRGm)V5Y~(b)R45Fh?uUvlUe`nJ7{BdA!= zLYJs@*xK>47@S=zg}wsiVC^qeC$!1{1ek||P>n5(%$4mZ*J{&MJqcG(6y*J{RuB47 z@KUdGyL@=_!PGXky?kTy?RvAv3v+dcRRbhl{DkiiFT6-N_Kx;0W7l0tBJrQ8=}1PS z9d*kPx0QbqDF6Di)!kUOG}?N+G+Bru(eScJp$<`c5udv{5?uIU@ZalN=jMJI_y0f; zgCmG9Y;nTdarHGJj7sLxW$My_dyk+0uSZMd&{*W$8JpZ$^l)wbI*0#G3}b=V zaXdNdR2QsosyNSZ8r6tViz0#J;_aJES*+8Nfi36y4Pvqj+Ae!))viw^nX%~{FME6z zsMY@l`GHV;Ru)WRh!gF;-;vNUjeWk;Uy3qF4xj&mC(t_Yk5B*|wSg-z61Ma_fkCj8 zqxDwkzaiU>dU#@c*};wbwvw)$qiO8O3S9)Q`qjd!?Ev3Ph~sNQ>NR7vKD}Nqj0(3j zh@Z-Y_0)L}_~LG~l?+*B0Cm)d&o>BVfJWaeb&&nqnq9QYKIUWc&h)~tLY5dVoCXG} zyvl-x8AuKCnU`M%O(wGKJTfeTdNA)#;Db(5WevK@_F}i!klMr6aiq$?Iq568Mbzp! zas`ylozN3UADqSiY?ovHk|L}b#w;^A)I?V~hy69o!motJw_+hd?$8TG=u+K!2%}ry zETdV$X^4QTUtnXuuaty_s-JjmMHSF(Ktvg zW_pDlj8c2gBsxTwp=*|K0Vfb!!dLYE4$4kW9A;Vc610Su0JmWn9!BiVuaypBU!od; zCGf5h*^R@==ODrtLz<^{sL@lrq5ATu#4sn)_MsVFt1E5_G+^&W{@=1t~2gY0T0Gnh1ANi zdO>wZLPvIT1TN-qy_rdTPmx;as5E56jO)pfHWB=$q8}lb5m3l>(hQ*&#wigv;3h%T zO++^7JS+xg8IdbQ9i{Z4vz#*P*8u>g+oYpco(T~Yi)ehi_j(P5a!Z?|;E9ZEH#ZZq zbn|I9G`s*6r;&G*Jt%IP+`iDH9h0=sOVxoAdRKnbp)ugq+&iR!1E7=O*B4w^kPYh^ zwg2(dJ0{$fMzaj z*Gz*1K#;a~2_nln0Y&+>2nHe0@NILth@|0~G-Ta!;Dt`_i=)*!rCI9)I~Yn-vVN?cW=EMprF=>#RHPO)#k}`_n!`cHOCQ` zdF{OZS@RQ<$$NLsfck4*xM)y`XNE!U%yrL%OwNDGCC83poTFC6e=##~XX4(g4SRXy zN`$Btll<}+C=fAaB%;kdz)Y9{_}!9!I)e_a{%_Megrc3&X8>-=dZh3YW?6*yfDvTh zN#FjlH2Efuc-;6rxNfG;jYHyP799*Mn zb3IM)Mowe{1UJd;=Iim{%Rpz+gII2L`Bm`JUY{ga(8?~Pu>u!hkIVd0SDl3V2w}O1 zM?~Kar6FpuUTyON7(e)l&X6_I`HsmIp0@H)ja9WrfmqeZI6!>!bWBJj#2APl!$DJotkcDJL&Qjd%dueHV^n zX7>7~=+eAWV?EPaaVR1e0$}G_UI}cZ=kLnKTU(d$j!rXNw=WxgV^npYyeT^(m#6@P zntX=CpRU_y%hg*0F8$c4g`v4yJ84y9Tdk|lm^$|&dVK)80y-b*2x)aO7$+DW(kZR# zNQ;r8czTQ&OZGW#3kIdA6yY5@M6UZ9sTo=KZ}yOH-c~ZGps!Ho9d5?D%ZC%X@l(G} zg5Hp=$`;HZ8m5k3X+5~}S>3}yL8VXWi=TUO9nR~0q150C>hcCglBbcVyVA42s>tr` zU`{nUK#rCX2%n-dv?S(Di=9{SY#}Oq=6en91v7`G75+bAqXu@?R^FZ{M9Fb=NyH=ri06i(eHVsh00lW zipD%a`eY}79rfkzV{R6VOzX$>4Ad9ow`*Xf`#R&)|4go?{+~i!bP(6j+0C?=YZ7c?=t2XKZ ztWeP-9F{##rhO_v=(*;ggx}a9W4oeIs=g_T{sW|_E!MO72{7J`f0M@0f z=BH#v5w~DBM-07~-cor12VHi`tvmoFd@r{kk*?km%ME2s4r53}h^Dp!(Pq71nsf?) zTHg|k)#{4Qr4<-eG@G+S2TysBVbtQ7E{q>j6ZaXU_Ca6weoA~4KEX_LCWen?7b;fFPdP>8E2^aakn%1@Q>=^eI_N9sM3i%3gl>!^yEoJv@^E6Nb zuz1^7eTt&qxv7d(MbE(tssK{DcCGd!vT6S$G^_xO{>}LemYhu`2A8In;csGXtPK`H zjH-5F{v76xEF4`Pm>F)4M^adkSm&3%2J$nqmMSr`y%RDD&c?#A4 zhOYZ5Y}Ezy(XHcjQi$3Mga`tSyThUv_PLs=;^v&lM1%+Y5{gy}|itB)1Q! z2Zrm^>GU9W_5u1Z30ub8&u8gQcR;4T;p$mN36sMmOOJJcwNM(r1%)(obWus|(T(O6 z<|&p#UW6A>=6lTD2}&B3d%eB*Ea?U#Q4QpvlCj&7a%X-=4)q13WT%Un2YzOsh4x#EWG3PH5b>tLljlmF9>?y;_YJdpt!@Ovw3KQ)puK> zjve+v#$vB6N{>5UnGf(h%B=oD^eWyw(}?9VMd@pYhJJ3Vu(;f&*{4-g&8h5;`S$Pa ztWryLqD?deNYp4vn^8UwG92T<0G#cFQrW z38K4i7a2u|?2RBuvH=&D7M?290~BVfZ>8i)1=^}2#>TI__Ldeg!x+a4nz5Lq%Wx@UjDIluz=uxPE=mFh*Q%F)(=bZM2j_#GYdT-ATvQMynBY~#s79ZG zAt5@<@G)aQOh^PgYBmBXfSw}xgv1O+MS1>M1AOv-p@crK_}%|@92 zlLxlVZLNQvu}SkntMB2+KuXN=MJHpN4Q|bLTZEs+MOS>(Y%tFX?W}YrsE{TN3-fx|vaJOS_75wTd*f}+on&c8>^;eG{vzcvu z7V~=bfkQJYIlRQDI2c6lZGbsg`k86n)Ju^Vw=CpCObD6+zMf}ZKd7AH`-L!1E#F|6 zo&(O@6100WG{>&W%J@U`nGLKAV3Sc2P#(PPz!z0XW8)nd?d0?h$#n;G60EHaZ#NDK zC$0H6IB^%^D5n9BpjB;DejP0%aQhc19q$~7oo&8GcVafA5_ETvY~lD`KtM^g%1;W{ zynMPzFNz42c;?LCP*F;1-U#%M@V)CRdag9j%fp2tO&#S>cx)sNCSU;{SM%2<-ZtwS z-C);afy0H>0;#HI`Ac8Mm|0Z=j<>#XQ7Nw1Dx#h^9iQr5dHtg&w%4AY>xFuzosv1LWVi4;i;LhcqGjiELTk*y99pa>)Vs)~)f-%x<>g zCyFlp_lvMEpb&ZEnb8HVrt^b}?C3Arx)g%U!1e_vnHDpXcB;%$fqS?C_{O5mDML0F zZ->SD7lug5hs}5`1+e@E9GDLnS(bJ=63otiI}_k(FXT|&Y>dgzO zCWekz4_8^d8qLYy3sG{U#J&^6q~i09jU5#^)b1+^!44bZcp?sN-v1%KNjh#jnm98D zbS|kQn910evC1On0#0UtF7)7$eKV&j0!k;Y!H^UrkhjlBtd%~yA82s&HX(2+@5`fJVYtT7aof0A7QYz7n-?S1?kJ(Abt48Ykt^EU!j;#SGjNC~u zr!2FyKu^~CZLfh{FM5S)E1n3Sq04@8M12r25Zvfd{A9ky)^FoVx0y9^7n=W`6A5;C zDq|6Po+P$K?EhU2t{)!x+>;>0Y&Sk(1bLCRsVZsOV@bgYUNw{e_5zS;O?92o6(9L1vy{5V5OrM+EBlcNQ2A|)gG7R4Hmwd z9+%p-M#3(v#&A^smv;NpN3d#Z12j9oqP_<&={rc_|6-R*L!e076>+kR>Zf zw;-3N5a?$6yz5k0ydnu!msHj$AkecV6mYvjI`b4ZLWg?O4Uo_|qIu*&@5QPpZ$!)N z0>d;lra5V}lORjp?V*j1{Sume$jnT_4JtT#fj>`P6jpHYejf(j;3 zA_L}7sGcrJbKgp*bcr>&u=0IB=D`NUNB#mE)o(RQMd6T19&a5b4Yb;0^?qHxEV(w` zIeBqAYx1Cm1fwK$0ajJ%>eTE)ae{f3mjR*FyyBwK`H7SFOQ)rM)Gos)8_3$*;szKm zXfHivr>1i7=$@~SZ=D;IeuaPjdj@Acswh)Ln_456Cy?D<)oh9{z}!!nFY@-*V7@Bi zs@k|tO{bs8j-v_om$8pWg`YpAO&M9pHKc|YrjtM)ilXyYyKMNuhBxJ36i0uy+vCh{ z5gw;_LRn`)Ea~d0jYI-g#{WD3(|u3OEIc+IK6q_Ix*PT<`SzEkccuXBL}U`Dyi$D4 zIv2q=8q9TFpZ>CFNwhlRMxZg{wc;9(NewTb#PqkSs0D4%oC{VghG@A`+n*z2V$cRs zKnLGn0Q|*Gaxw2mk3=PgJ5U1;3vMe|v4QrRG^mnGy z!d1_dMVei~QO-L|;ZY2*Yt+^2+P98pbsF^GH4DG}i@eL{Z*{KD2~yhWHKZ&oS8L(q zt|O)AmL8puB8U;$jXanKvfph#;`) zMK^v(lS-CPFFepRF}Dn!bLDuR7< zs8O|6DH~zxdNVFa4q@1G-k6Yo;-X7W84)aroDbW2XD0K|w%u}*iSzaEm&gPg?aNfU zQUi??tix8P{#a2ZtM&QHb_kL~Ma!SM5^mq8gt_0ZLE($WjwH{XiIvvg%)je0t5+pJB$e5$r2g5DT-L=4m&5GAk+y5?3nsb4hhuk|SEtgXL( z2;~h^&x2ZLxy%NVsr6BafxWv);aH($xUYd?GAC|s9ULDUCTOjptfj0do`jf4a9U;( zD5b${uEyUrf2kpy^X3gZ%CPr#vwNxup*vh3-5ppx1<$vXD-_-X5E+Hr+2H(j2lZMwsoene^0-IoP6;ke}#$ zX*&oVDQ!~0X^w7$7=fru>VyT{u-IVPmXo<$3|V(sM@~uu@TmCPEa+!cDAOT9uib@n z*eO$eK+=j@yUzc~Md~fdxa-3&iBFHxM)OP8)poBV>9uI8T8#F+7_|OMI3aROZQ8!U8dx_ULCtry&WAO`@ z%zQQ(X6AMKf0D7LsrW{O$60qAu{jEo$X52ILhY-P-WL<=@Yc;p$ZFW0evsupgo+Cf zjNA1V>-aJGOb|XBmH$x~O+}4EwZhb#<7a{y*x}@7cU~ETEVJ`v{^-UZJe3X)y{QzB z(?!JCzNXV&RkVocIt`T63>9i-IHEf(eqiM)JB85|h&K26`Ia>iJJfR+V|2W`(32S@ zpp#(q4&$wY%Te{B<1=_H%6r^Dt9ghSJ#$^Y!)slkpQ&!}faG0sbRkQucPhT20+JLx zqTv5`T2W=yroS2kEN8Ef<|MzoX3yIf#QA=-9r7L&FIp^3 zs>fZXJb$HrGD9`kI?S}#Ub3lWtX_bWGL{(5BmZGQD(=`{0_1bS2|Qb?fG)cigW(|h zfl{yi!ZVDcW;l4o$}ix>OmMTCdC^!JioYdi(~h?u5L-lLlX$RJgxAPT8iVsVbG#)4 zpY;WzI-?29^LhjkUS5+{hD1NM?2ukP>M2ss5`^Q)FSi7#=$RH3NOi9>HZfWsVN`>-A`4o zyY^pS>`LM$7x0(ZMI;C02P#$I%wS|hG6}j;Ks}veK%|#pv&iAHrz(QQMzBJ!H~U0% zzt&^o@7LC!_tk)HJrD{wXV4@vCxADHxS_KW{BY(8?ki?57Lr0xp)?n`9zf0Kz*Ub;7O{Gkaff5?jd@3rj}Nldt6s z$%-bg))*W89X)=(o|@Fsu4u{L`;nAeV5nAaG_I-Q!aaoFgRDf*pJBO;11VEk{{5+n z(28CmSbykp?$no(xm`^b84^%Mx_cD$mI&IX> z#3!aXIBxuG{9g`nV~=6vPxEqY0GV2;7O1-6pxrqhud&2;#AP$k>WxIPz+~E?-%j*R znyf?_vIV&9ZIAVxhkwpacc&cbrGG zLH~avbrD|ztVw25WcxBhN#Pu9;-Bg;gc>t`S+}JS_V`pqw?0X=nL)Su%%qBdh=P40 z%|o)K!0K(L-evTj1_yjbF4Xx%u?2crjFwO(nQ$GgMm1Xf9oj{o5Hv~2iYvB|m0bKh>; zyd39S=aln~75~k>+t~q&(BP%2@Ta(P*83 z7|mpVP8Y>tdB)=HGw7XxD2Hz*13f~CKW4DoeN7t=y+BV6uh(_ypPBY!!vE8}vhfwG zV!56!rqIRbtr_j66^(f%ror7mO~WBvBK9w9X7w(!oihtu8W;?5Pl$`YR;8@nB0@Bz zd`G>nXo{eB@Vj=sN$KT-p5=YAxb1DVNo)9BfGLQDc5=vh*bQ6fj8EiZB6gjzh87pi zkSJY+=rlZ5dZ(xg@;g7xQG@Uwfo|ja{i?tw4|c@21EmqmNV}sbCdE#SG|pS=(j6e< zc@8yr#l%R8R3Ks*QU!J#B=5LWabM@TujkOeJ|CCJ{K#?E*0z;*JI79^7 zx-Sw7&yd46kr75wr)>Q$?+$$VknKdDxPf{BL=u;Do{iuwlsy%RR+6yGts4@Kid%>@ zM}hkazJrVJUky=764Gfv*N<(HwGb!0rgw`jm^oLm1b8(~5QTAdqG1$RF^d+GJJEuR zTK3VR(u8CZ;>B z+~z#4t~u&Fx1{xphg_V=_b}ky!)BNQoS1j3WF+&DN3RBDqo6ikt;C*mO~9hFB1sF) z7D=JTDX_kBXP5!$pKJAK;<=Nu!^I?VW? zD<}`;y?C3=+fV6JnKmX-eDX4ypOoRBC9|j8t{=?bV?d)#)KYrTCy5_;{UiV4U)#F` zZ<9@nP3z7zNvCF%y9zPS|a!&E9#|R`*0F8uIOXu38=} zgK~!~=F*{(_nFJ#3THZ?*>ZnHgnU=dM?Ns< zl}FFXj@tonjq~lM@A08Y<^ai|Or^>J*-}Wn-<;c6YL^@VI~Uny4t1SuMp20ZmCT~C zJjwz^8dSHX-WUa?%mk;y_)}2gt=QEd8s53iLUyOleagZBaU`=rZ-fXB3se~L8A_IP zwRfH!229@&UnLFGFaDtw64mw{{O0ahKat<5Pz-sseU-UJtIwQetse>y3In@kiX!&$ z7oZ(9ufjL%@lq|<$V@PNszaBoRmq(hb%1@YO4-c=3d>$Vi+~kEZ{N{EgciM19WtwC z?AK?k!GM9ln0kC%uE37i_?I(wg?!co_*e@~^=f25zah-Aml^PP&MVMsdkly9^on== zE@3i8qMX?Ug9;ocf8^%y5b`#iJ(0MSd#R^s`KtzGgzySZh@DCK%FGEbm6In{eyeLW z9mr&h)a<~9n&jpp(m5&EFn_Ze^j4QMLs?YWOPiLYc~wms=H;2SCmUWKP33lR1tL%@ zjB_=U+1UF*y|K#(fknhIVN1F<9;kv-_^MRoW7p&Ns-agx@&;E+phB|3QT_`9+CbYk!V=ABEVj5 z@0bJK47Bp`w9EL(VtRLnEBO5i;WnOrT?aI;vsRkZ>A&MW7zxD%Zz3_;%$cyp^NAo! zYBUO^cAH()vaNZ517m)=j@W5v*8)_GMa{x-?!{^ZGkw|+G}KBraf1k*_l(_Uw&cBg z<7uC1V`xN=lNhxA0s)tqQM21HUGKKd6WN#|IQ;|uglowp zx2p)XBN#>%aQ2b=vs-IE2>M)aD$BPI)}qgW#^+h=y4=BRz>ueO8fP){xM6|N73Y;@ zo|r7Kn+PPaqRM?~vGSzWrSBaO@g^Hnr|oCuRP;7gj_X_izKt8U{`)Kg&Qlx#KfO^g zVD{7J+hzGFZC(p|*MhV$*@6gL`$P++I@qSn9wZ2wURVSs(>=Pu20l=p54p*<%~c!5 zb{4qm1!@-2q8$W>+Wx<>wi81F?En?WJI2UFtX=e7!LLfdHNj(KjR@7EH4yckM0chD zpm{DIA5RY%l>M@?y4_=CU_A_$Zmvtw#O|?abKy^zJGR<4MUh(>Y1w-59kFS$3#>;IZyuITq)PPEG^SOPo5z-IPL__>L+(fu-9^f zK;=jAaQgJs#mUKh@bl~;NE3(O=e5H{$FyEZt#pn_P5N&mh@g)98qpJ}M!s{bIl&&< z^m$psGk+DUu)su+uC;Nh(=%Z~B`{b9N?FECtHqlPy?10!=$9dXN5$TCc z@@Ywtel{D;f5GPIO;&`B&&#aQA;&#?bg30O7{o+L{n?B#UDBsg>$ppCIIoTatSFU= z*Y-;n_#Wy}bTMWi;g~lAD(Fq*=a;y=%H;(x41{>2IZ?lBPRQD|11adq^*ojn02{IR6mv{~~g zWI;t9Vz0|80?__A`&Yc^eOeS#33R-8y?a7D<~7pI>x90<#7#6bBc{w8`b9Cz$X4$2 zP3S}$N_d05=|PNgy}~Q>E-B1`2^hJfm0gZdCAS?`F&5kbU(l%1H9E565PsNGEfMN! z9^AW-+cTE#pUGKs&4=#+lGe9kP*_UgmO4e(?^N)@2DzrM;GlghrH)dELrEL)JmX41 z;U0MI3R($E71CU7?W5KP+#5qL2E%jazuQpYL)N(JLjOcI`!_m(A4pS@YFs+iSQ8Jl zZ%{xe?DE#6?9VmIx#8t74~Ry!+x+kvVd1CxjudFr>u<7V;j0Rz@;pNu`525kOw?-6 z?w4ux*F2w4XgqG=M8?r@T5GwSqaC2@m1)tYT$G+KdG?*Y5-X4FQW{36AgryB6A)b= zqvc-Z+HkS5Bv79KQBUm0Fljq8vB$?-WM_aOzV;~?oTP}_0M<|jVq2@>aRy14KEq6_ z9rH-1D5h^%v2OWJ;##qmk}w}PF>vf%4(Ea1sKq*cm3-0uV|yX}Ef@V>&y`61gd|09+9oDz$bBt8BZ1dmu12t?JXL5t z`txEh?H-27BLrN(#Xa)PE(@hz(&ko;64S7`N2zChYH9@Yp`vl}M<0ZAVOtEdMUxxg z7jL$R!H7%UeDW+VggPkmnOx(8O$I!Y0gqtELMI|oZzLK7ICH~$6mDW{1&o(ckT*a$ zBRMnl-T1-9b}XIE;gXLgTp5+OebOPPF&X^mO#c^&G3=Nqdo*ABZgngWONR!oZY|4i z7l!RTV$`Zw*5cgQ#^aZ>7WAZ$!0rxbksA?cWoT5rva?`lp(FlSqb;i1^<0F?UsZL- z^@J-=XwstBr545;7Buj5Q$%^WDQm@o;&k4~cK=PEN8@Sqq3*Ay5^WJsD*AAlFe33= zR<>3oMNa;kir=j2kFQ3ZZ5@}Ks#$?chpg9#9;CEGsA?L$ON$tN&y1>H=o{EmSiN_f z#44Z-h&ZjPx#-`fPS_w8$Y2Y;cy5%`ej$ zX<)$SD6Y*c1}m^`$av3m$*%y`DiQoT%7QEi*SndCPnva zJ`fxtsUx-c>nj{{i@V9PmY4+aaG^h=l){U|B{yf%HbAIHN-}N##=kY)mhnr(t`sDj zg$Gay=+_ZCQS2wd0Pluk2C~od;%Hn6F7Ns!PXFt6;n^Mwt5Zm?&(0+A03M`>^Q-4Hv0R0~L-a^)hNrHjq?(Oei7uG$B|K@*7vX6Sl}$DL3^&%+<6VNCr# zIW8a*>nsHpJa~p6ei|)=n<`Kh!TNk5b?%|4zG{u*Ia{kWpRqw|Hy&6M)lGlplIi8y ztm@ITS1Nrzk-FDiihcO6@9lu{Ru<7ZNR-PGzWWFNm|K+e-s%VMXBs4&o%%cx&OO)@Xb_&a?S_&ldv@!$*AAcuWj_<7bE%%fUpeGv1Xm`+-+o5 zb>rv<@r@;3uM1>>i%kANrOp0`+YS!=i!NzwQ2M&qpAcpQq&+Jvs;-Pb& z0tpg8&_OC5frgx=rZpK8SntNRl=saa-cnL@nn<9o1yR8@( z-RO~@Rv0Oc`fC*Vl`daP4a;*JvNfK;jtz)A%o!pNUU3v|ek#m)l4UmRj905XsDN@* zh@mtsDPfG-NU*f3y^pP^3RPNmWfBHbn|s1r z-%iuu+LqEO1$f@MNJ>pk8Z5=epZG!GY7>YC9-_D5R2=g29^lF}I?Xk&*!!QE&`JlU z-wxR38?o1u3|@Z#HYFvnAi9%nd6O9GaOWC1(=}T@IdDq}zIM?Q2()j*luAaPhg`4? zRR!`RgtY*#TDlyDqY^dQ`8l>Kn+C#(dF)m^iulo(tJ~%z-LHh`3Yv!8T|okZW-=~- zunVz}vE(w$y(UXTIi^(c@>7oe;O>%3(p!`(P;PU{B?T(t3dnKKxSsM%L%Iq&RAbPY zYDp%6R5(U{XX0OdStdBckqUaUWE72K^D882W+c}W?^)c!n8WG02#+~7({UQIdOHis zEbIZg)z)}_YquAXS{M}tn^z0#a^nhySFZ|=YFw&O*x$-^UW%Q zeJX)vtpkJ;I@H?9+F{STv^DqwI4k|1|=5EsIf&wo5PzJp0p+KSTl|~DCOJ$5l zx9vN%LrKj8q>sqH(2(?Nsd%;iMxFUuZGqwvZ;M1*#E8?pZ0E0($Dj6C-f)1bSTtX; zg9MF2&s_G-RmjXpLKF3g8LQD0=n>|wWSpseb9EOE??Tg++Abhi!DT;BwDXYIB}-vL zaf#e)eOYzm1Dp+*P`Z|xmGQRm2>=y4lY3YOu}3;V*j4pGSDz=gQ$7tlw5ck(d7FB4 zTU?C?#WQM^8DYxi8SH%A`wHrzOXjqm>?qnZd4wBrv`-4O!^pK8gW>10N?&9hi@wl- zJNqnXnns)(?7qWi`^KuAm;(c6jI=M1IwD_mrBlNCr2!_M-~29XsbPS#Il~~1C;v2? z>*KUYX@6j#%Wp7Zj<)9Q)mw`8qQ)30XISX80@AVHC9ehC2YcG((8%|^*Y^fDeCML{ zd8x9b2zw+^^%ExIzjR(((}b0QD&WtUs#5>8A$Iyv*OE*P{wbF9@ru0MC&ce}`bhv; zCUo#PIckO{ua^8i^>llR>!k+4&ibI;6vxys_0Xv#Z{vd*n(QbUti{T1^A6C!$?T;q zvm={EB-P_js=dRpM^*GhfQsgF6FR6NJ9oGRNNkcajVS&NErx^l$-#0oDXA?6R9)x; z3Bjzoi7<3;D%W8IilS|des*9l2k-T4Z*vVv)dpYVIc^EI7Vo>v=HM&z!D{Q=SWMvqB7%QI^Twx+|@%C?>OQrb=+sqqW-Ts z7;9I-w^oQcF6%EQMXyJg&f;jbcE{Q%cR^=iy}W+q6MKyWhp7f1SlI8@XZ_4=M za!!k0QEfT2;S`=-30R{KgNC7g!>NcCiNVZjN29)}(YBL_02XJ2h}p2i54gR6GqqJu zg^6v0)&>K@;A~XKxE5n)F8jOOtbVG_mq^xSgz-^@U$eKMFBZdY z2YQHZB`)g38oUX-r5m_c*Rf}P>bdAR7XULlcD#nh;%e{my&T+cT_;ED+mm9l_DI%p zvhBDU<6;AY%yUIrRGsNf^Yiz=Aix(vfWtK4@ME!k5pgv!c5PPN{y*qg7TY(wh^z2x^%!NPyPyD9Qj&VGQ;Gx#k29#}7kbw=*duFR> z;Gnm7ix{SdcmVX136ttbI{FUdyzD5eX(bXfzDF(_lL60P0P1V#l+io#^V)SHl z{g~6e+QE6;`;{!edEvtziO>7^gbF9@a#iU_=%<9;!Wm8qy)7@1gMpY$FMcnJ5Wm?YD>1Ke9PGAZ6rKXI%#B*C7%3GyX3uMAB=y~k=E^92<@mhAC?FyfJL?htn z1Zj7k?>D13ai^B~x75`P(Ae_B`_Pm?Ok5Ta|C&-hSZrwXuVau)&wz?<$?G>Iwg#A{ta6EALK`B^L%Nk&5d8*tD-AnR-M zs7{c7>?#U8{PC(s=@-%+;}GB~R*52IuP-kU04E64iNEa>a6@RR3v=<|W29)44G>VO(kwHkw|OcR%qJHJyqIN`a#ZMJn|n98G0))Invu2I5nrr|1aN3_Ut|MheZ?!EjV-HjzZ5^FJ3s~?KgEiPuOpa9*IvHJ0#L*o3WgP z;?~G;sI#k;_Uwhke=Fl$WAk2LvI+#|1C*ca4$9{F{YD2o5HmcMnfmB7p!v5U3x&MK zxtm(JlfhJZExZezm}{=Qh&J(GsRzHQxdfUwE=$gfzR254ut zV+IKiLV-9a5&41`3@FFWGn%KO09NJrW%b>)rP>gt_SKg%zMU~Q`GD8@i2JS6B2vYt z#s)rP3K?M=V`3U&hLeM#1kpwHzYlsNR#uyGR`U5iGv zr%8`lfCqhEW`@814<@z?JTqKa_>d041d{Ev@(xksXDn_lNa-7k6WsM>ljwyvY9j-# z5-~E7Hm7d`xUzKJ;Ad?cxAD)kRG9XUZVoViA@}C*gt-~`H*kn-mHxV`W{sDm%tnH5 zT#&W_w~HJs4IEH4&_hp<%YgCY_{QSI1)H~gwM{K|FD;IfD8tng;Vl#C4PB;9bRO;brAieHjth*a6)ezZxQ zr+gY!$LhRFVmz^;UO^dqm7{)_A@rx!6ku9@^PEywdu&S<4_P={W=^@X@@EA~8z+hD zg{XKMt6?Ai3ueqpF(QjSu`6dVbj#*b0~D42v8`)B^bs_yfTnL|SQxa&LA`v*d}8_= z_C!d2NE|*Ub0|84kxsieoDANqRXP7hnZX1ngvveHg>s&0b!je50M?6&PUDzs1dbbH zgvY1t!P7d;-MU#Zg-A~4eNvr!Px6$3I44-&yZ$li$Ck*y^FgOupHk7m#mx#% zO1@P*;zjk(mddAra2p<)Q^XY%2J{7@@h}JLE52EdwRr#P^JHS;LEZC4=j^z!pVUAc zwK0Dil*oVXoY0o9U@?&GROA?V9A#k%qUgRjVipi+;d*W1@wQsB>^*+;H6@?^tDB^( zkjtfX&;4g8Q8xh`c=Jt?4}`e83R-PNGCIH^qzT35tL3`=motwXe$Dqtn`p}tB?wus zOq2i*OwNe$d}-(+Q7Tsctbe|P~;$itO^6OP0@;^oq)^-ZAKIclXs5M50lJifU6WoPuxPq>i; zeuZmuTb*5=zDpM*L5Mp9Q-KA5xcS1Ymx8jkn;iMHSlL4_Z3cZQ-BB7f&iLg2LF!)u zB|0^s>p{(EI09QSH>t&Rr|&u5dWoWi|6dUPq@|W}A~rT>zGS3jB}jxH_Re3&x8S%c z0AAcw0Tx2_j8eWABplx1Qj6#4UMJqpwh-CAIkX^uT6P!Zfrb>bRg8nO)x?>+$n~B_ zhAaA^D+=(T6UCkRklAK`upmVteLJs}LE?#&O!OCkrre7ts|go9;EywvmT-wcb8#j9 zi@Mereu=XG&P>3now;k9=sODn?GtPg~9S7sOlA=z#Jy7Ohl(8b_w*JPDxcM0J(BeEhQSTG7YmE4QqbkLJf*uR@%WLn8lD~{J@6TfGc1?_-JlPO~NWqb- z13xQU;_F(iw%79YOgH8h`oua>vd^cFKp+|SSe3-wFedWF@*G?&LZ`63a=rb*JROxZ zXbL3n?>^i5(1!E`yN~{QvlII3`SV~^a|>G6N1DJ|xoze~`=1b#PhXv-*6BPAWf2p& ztS6)9hZd+Cn#{rFrCFU)bp5eY&-S>S4!-Qlq8uW7Yu-Cl^@Z?WaS3fn@bQEnL~Y(6 z5J+jWF!l9*?=m=jlD+oX#EBobts4hwFkNAL_Iq`(xc3^&f+dkSi)R3~XO%8Hd-y~- z1y6m3Fi=T*slvqejq z7i&c{yYWPiDs>(!?H{AZjZx^#EEdy?0e8@sd=$n$eqiom2+f|0B$6O3xEJRbtnvN7 zB{W;N*JW*Ma(O33{DUqDi)S}IrJX*AcuJh)u4>e7*0j-L;e8S!%|nEsm=c9xdiWSd zW<6`W$pt7rsz_6XSqtg}$LK35j5f#(`Iqs!sSIKfQ{?103CrpUrO7`w8yK`oNhyG} z;4aFo!)i_78`dvW)y0I@$U7Ykz?PXN!sFNfU)hk)|8gNbV}cgFa;845ioNjLD!DEq zS2qk}2PA}yP1xA<>knP|gvJo7m!7@A-L|hAAi+iCd=ev0tKn$@(M}UwVuIjOHdLB_ zWIggQ#zNEnSM|5x&reGNaBeKxJ=$0L*Pu2WQXRP#u#~sCfv&DUgkAq}O8aI)09<0{ z?B~ZFd+OiE(n=Rc@;A@iR=XChwh7M!(5rRUAu=}aW&^A`A!29 zU~)D(h~1CqT^LvT_Wu#W2fH?ys3+gTdISV1=!fLYF+J}@$ItzZ5iScSvvuFlB!Ou+ zF8OO5OMxesh4&_N&NU4LG=uqdi%*x89Cjz*OM6BhZ{m3P8eNDQCovkCb2x$((iyd| zF*q|fKD`{&&|guP<#w3_!J#Ze_?l7Q2CA;Rj>Gdc zBpIv0zOK=ANg5taJBD%pcPxcfmx@U%xn}{>9Lm3G4i&zTd^2*GOeLJI^`{mCgWkPGK3WB>IBSpzR6op=O;i*M1GMb}z^7 z!ch!E)tc2J{e4 z+_RjmDGyJt?{@LV=1WZ>ja-Rdo93rXmz=BFZo#Y9zTJTXp_(7qwk4nuI_B{^sC3@z zJ`0oKs1B%LlCLD_qyaqFA7o^7os?lvnC6Y-sK1Wc9A}AY74CV*!h}{5x;d+n?FGli zw#K{Vv5+{`zQD1KVe3dLs}hm8yQF`&@3;+;d~lg7@E}~DzypJ(D;P41i>i81a>p&% z9d2*QXD|BP!8Yp2Ot4j;pu&(H9q834CqlXz4IS@R)T{h)+P9OvU)qv+w0Q%sXy-#WMTF;miHM6VP<%n)DE-ejk8!OKjuf-8<{u~PRqn90i% zyCQN%Cb@Hm|B*y)H(Bz#kP0;I%}o6*;pt*T)b>iDR@K1A2HP%*3^OP>YjVXq5FURM)M^oM1djFiWi);N$C%vd)gsZ&3SZQ+K=tu_La z2u*-Z^5|FdI+Dz`dc)#rDz6pK8TID06Gr73D|CcxaMz&`RhPynEe0@Wf9!!+_VE`; zd(kt}p%`w(YF9krjCm%dQs5Yl@TaB(1p>a;&}DC^zE*2fh`+y=-z`A1ZW8HvdOe2F zC?p$}SNFi$;N)2f*p=Jc!kQ*M>Hh-VWHG~6TE<<3!?gni@9YW^K?+}ZTnqkaTka;L zbt@VRhz(6&d`J$grB2`|{9%_t?9{v6mi{;%Dd;FPt!oul5P`@}jh3&o*?Wa|=O|}G z%{V(WGi{4Pci@Sk0vjB-r<~6jgoq|eLwrdQ&~G}5gJ+BkSTA({N!PJF$MP2SFfX`l zNjIgmwN^$M`bL*D=RrU6_)^O4h1$g$p}Q@f%!&JY$`=I4tfm@V=91MD3YVFh!Qr_c zN->33X7y48bBT$rTc!cCm2P|5U=3O17BOlDYS0)5Wx# zVFihBfn6jw{S7}HX{5K1p3pA(f$=G2Ncn+pH(!jJOdTk&6*@{;zGKrRkLDD6d zdI?EW@8Q9LCV4;;33_5y^kP-}9s5-464_{TF*{>!rhED}Ld&*tr!Z2#^-dQT5DC=2 z%vD0o;@?X$%OHiH7gOkY&Chg$lJ|6%?H<4G>__%zj73AK_)#;AN&9aVV@0oW^>1v0 z>E5<)?!2z*CssEzcs3NrbYNDAC-r4fM9{Vs4W(H32}G65Z*q%DLfdk6#lOWJnhX|| zRvjDk7#ZKbwGyj8^A3KPY`OF(DELcTHN=lIkB5tqJb^_l3vjK4l*=`7Bhn*$=Mr}J zK-b{lf>Y$8IDPbik-_Q_p@jFZ; zKXJyd(7xp2Vug$5n${|{r_V{1=P_UeQsq4{RdUXw@(jl{p|M*-q~<9GCrVC+l}}&p zJg0sPA}T2rF+por?mD-FN0U>lA9&Z35&5 zzYDx4AfjC9AyRR`dj%prsZiJ+rt>~(NMxu?Mo&`V!TW7gN4WOe0Lq1_@j%*}pX%XTeg~0^FY!tBplw=`V&?4YwFYvGic5zT;-z-jfRS>-%tF?)m>AnE3MEm2r3|@b_ z-)W^~OH+-}Q~TSin-@@CL3MG!p%xL|IpFvi@xvf{_GMNXr3>yd$i!!!z_M)Y930a- zCS8x&pmsc#^mSxU4gARa>aSheJB{autHlykQR?z+V-OnM<&YezUN4*RURKVJfn{&X zM5QB1bo1yQ6Amr#99q>IKieek3Stt8F{v5>Io!j*r!os3J(r>IS@|fR#hGBB2_LC!&fni+1OWRQ zs3@rEvS%5ey%Y*)k63nD3`N>fae<<7+YYmnVNr`-c-GL5i$_N+#8(rR{XKw8-2@19 z7v^)$Fh{4yjd^GF2^)|7h$K@ujSa}~V0J4tdTQ?*0M+$F?kKK=UsT|H9k;{BjH*?T zHpo?~Di@VoU5U4;%T-lg@}v>DB%*gVXlNJ%YKBWqo~-)6Fwu1kD>E03JS}b`b>8fN zwCe1GNV%yjEE|_Mx`PSYGw$AB;^PBiOb9c35QrKrMTuwAsG#oafcgLPL|we5Zk%;^Rc>v z$l&c()`4Cl$XXsI(AQ=>5CTCIVwvs%IhdtULXH@6`YV*Xzm<^C=k+i~#A^SH?S=4x z^_S)gSXVP=wGTuvmqIdIrDexrG^q0%V&m173A|k~2+#QZc&E*nHLNAzwDLoYoA1Ua ztO>zpmXB4bW`XSh1o%yt~ROgP5oqn zI&}_r73}BlWu4RJkAHgBV||(42BO_6?6nSUi=7+ViSn(>T&^oL==EBI@3V@->chD|=4ffj9VzO zXaSR)jYUB6#-9x|Z?>DB{|H6CD%O4n0d`*H4d_W9u&gf%_8AYO?!VV|kjOkwpQS2- zD?7tc*{V-C^>a90lqnZWJd$SB(b~@gn9wlPGz=D1XP7}sHlbZ|nqkFeghAsX{a_}a z*p^$@JF@p}6p9Cdl;}&;+5a|c%#r7nfT=$L4k;9iajZM$LB>mpySU;zN2|r!^?;Cu zwK!a_JgbH+83=T;5cV0fu^#PHq0Do01|wum=SQGPkX^}00936>_o8gpE+Ogue7T2} zYbEsmTJ;!AAtt26g%HyO0n^lk-bkX_J95{OMD1My+`q?G$J8lC!w_ofmi_&xhd!8( z4={olZoK(@t)`+*$^h0;32a-NE36*0tzK4ta6{E-O0rbcN2K*WyyLY4z6@ILG$<_-yK@3;F3A-ax4`z2a!6;{6K?hMJ7M@y8M zi{IqkoYGI|5a+8E*NReGrR{$b(!IwK=S@koe1b> z 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 D^xt`f literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511170002-Config.rsc b/MikroMaster/20260511/20260511170002-Config.rsc new file mode 100644 index 0000000..e1723a7 --- /dev/null +++ b/MikroMaster/20260511/20260511170002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 17:00:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# 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.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=104.20.28.254 comment=dou.ua list=FuckRKN +add address=172.66.164.200 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511170002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511170002-Diff-Config.rsc new file mode 100644 index 0000000..86c0555 --- /dev/null +++ b/MikroMaster/history/20260511/20260511170002-Diff-Config.rsc @@ -0,0 +1,14 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4306,4307c4306,4307 +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +--- +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0