From f6231f090e4d75adab32f8a6dda751faf7d10700 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 23:40:51 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 23:40:51. --- .../20260508/20260508234001-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508234001-Config.rsc | 4639 +++++++++++++++++ .../20260508/20260508234001-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260508/20260508234001-Binary.backup create mode 100644 MikroMaster/20260508/20260508234001-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508234001-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508234001-Binary.backup b/MikroMaster/20260508/20260508234001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..37ddb2cabaf65a32dc1c90ba57f3686ddbabd150 GIT binary patch literal 298264 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 z zg7ym^zt9K>9hz-S7zpU|8;>N?4))o)|HEhR$d%=3GH9ul^%%sd1!9J+!w^jIg3CU0 zI6Dml_rrJ#cC`;HQ@td!aq!sex* z2^xkvYdY3!7>Reg!^LecYaT0}`XCUN*I!Yd%>c9!U_=Q$!v41($haUQlDLBq`vs*Y zl)*XKU3fGGkPvC1Cw<2Unl!%H(2iA-kkDf0$+?nlcPe#FrlNQcC6un5>vouUE|%^Zdo6QG?S%G-fAh6NA^o zQo>Xri2%R=uuTz+#A3I@DtL~*j~bZ)iSA46rBaVs!G^9xR;zc8-1!wk9?%Q z23W#4`};86?yAAf6<4)$dDOT%!Dxfg8~x#NLZh?EiAk8p=`A*uHmu|W;s?qau(KFR zWu_=H!GcIC_evJ|lLw@)sNKyERsytW;9v2OtAeynFxzei#*`^!`;*o$jrGoIftZCjO#r~B2FCV3K3>^*Z*VT_pqhfNoSqxZ2^`#@-Y z#|r^OwIkVh5&v_r`gCFL{Z~&qYs>C)!p0##fhr0-APpzlgh1?ZFwbCbCuz!g6wm

C&jEDRyF7aO&F60F}5%{H_*o8$a}M{;Mfr|t>6 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

OUAlfPl&K7?msK;tMAHW;W=Aa@ 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
XY=*1~~fCj@oDuH7` z-?*q|kk$l*`US0=9+MpX*rqcV;7a2u0Lspu8&@nbL%9xqK3fqiyu2QU@NI^Swklok zWdgdV_5;SU+Eto31leIS->ccn5*EheOrKyPDoc~){iuGi%)BZ+^8Ny{VoP#1q0V8O z_k@RWy^kF)7abgByykccD_HEJf_c8ba^Wz>V}l_rPeN7_4|&^bAs5JFmPkXD>Q|?l zmua0kIXe-^rs^A$ieCZ13iZteimYVbhidfcm@cV8V;P%Sd@L-s*Uiz;!ZznnrUb1y zcA9g|{)8Gj>O(MiaRAYMZ!iyE5Hv_=*fFkh3-43LNmU&Z6+g{vUnbefYg~V;1{c2u z_qik=*6JA2?IPcp9Y05iuJ{y&U0X87+e@FjClx&(m#+}`MW^4W)Q+nbYp76G%V}DJb>To5U0OzesfgHvDiQ|MmOJK3jd|U(j1*!@h@_)^FD|UY7bNAb} zUgjQlH)w`C5jN-T|Il}_e!%9zL(HdrjjvB zL;&K&MIKm{e7~jFNtmz^T1zM>B)lgk7J=8cD>V?+rdKJOTSMPf^b1LWDg5sIl62?IP-;~T;NGvGzx+a-jRH$^7GQe9qrTkK=P@uO}WPff_!eD7}X zF7ww*yE<%A^136;j=$9<)9}n2R3kQ8q~6j?am(>Lc}&SJDAfdty8X59HzxU`L9QV| zJgZh=A%3wN#;zRYLe5{*8bi5$dZU3Mr4fyd6^KvP?&Bb0>=Ih?msjrp6GQQ7Ai-yS zQpKqW+yf5{L1dd4_?|Xf%T4avK>a=MDNsWuMa9fr#wF7hr=bA|wybrXr+^3`T(eq~ zoEyb?FdG?ADqZ6n0d1XoFPYwVxbLY(3w~oeDIe15eh~+L?550Wll#vYu=r`_*~C@+ z?I0UM=>+z4l)HLr&6&@epgx=o>2py0eaGFwJZav``%@R*AXKf%M2Nq-V-Qx`KT)*i{8#R-b;Dnyms z*EX_Rc5pGOv-4gSb1TH@@|kgmTnn4yGtotxt$06_oOf#G^i9}%(u9{(ivHAdF@}z) zxt{3puzuu0OWpef#z(9msjBgUk@%35==Gh^xqo+S%GWcsu^{SdT zvyS76>{eu#S`_cy;nzTRR$CcV0XoOM6f#b`)nE~=?a}+Xj5NyXr1mX6#gQe9yVG-Z zVoo(4Bo&D$o<7sI4UjBu?@O+DsY)^tk;9r=k-(82DOT!Q zVZkAi`0$n2bLpYKk92(-39CWFC^3cF`fkY}SnK-xK(Xfp7Pxy$j8?88??1r4^G2c3 zEWv{ifAESo-4Uc=QdZQ(aLuZY+#B1|LG5R9jI8gMeO>qtg3?HPhmHe5 zfiaqOs+*vmkLjLuOMDuY#9~9N438Y53`{V9vs^u{3=1^Gf4UXG$$bG%+msDH`X&%A zb=uH(58q7g1N9?KT@tpXUCjz-PZk@n>!7NXYg!z&zMVqNt+p}kyR`x0>=r+U(3T>U zQY2K}e@`yit4iP+$emMW6OmiQskBtz$kTv2u`M^t>bqOM?#Mm{mzC^%bi1kyY5pyn z-?|6XMz@@Csx-n92$?!j45mnbRbvdq?T8fPSMrSy|L)Vvr23;N!%+8!?cbfJ=A!{% z;WEqDn~K`{xG~`K8zeq)67$j60T_suYa4B3v6!E|%fxrrvj8J{7l2a{xM3|rqe}d# zZgqV4JBX*s2I3Keo3Lz!eSR2EFikX3wz)WsKjvf|3@i78DXk|h8{vcX(KkJxbB*u+ z!?NfbL3@S;h~&~eb9w7x#z>ENtR@&&KUAvb3wpQqqPEfz;(}pSg0>5rFWJpq`h|>| zn$6bT<%xZ-X%wHg11ql?L4DjDn2+q-c(8`{4!h^UeYjWbtRf-E;)A@W4dEaai&Iv& zQx?q9FHv8*ABY7XpgRC&b_M~)%NCo&>K#G!^8iVzYKoX*Q;a6BVMK9=7!kD17DI-E zX+(pAp5ZQENYRiDIE>R!nX%a;UeAo_aO4yHZL;oqGi{-oTWt8!PQCt+LvbgWXq?Lr z2Y3(y?;AXRkylQ_WV7dYgw%}w3?198%0rmom4_lZYGtB^mXrh6=ogpD30&mmEAC>^ zXfaF1N-(=ULjB?70m-sgHHfI;R+(#oFpo|k&PE^RLby@dma)699c6_}Z?)YEL~Rs1 zMY}=7TWDs}=HcwN|BQ9^+W$Y;5M!I7^Sa3~={YiJ1Ic-pw#>CvyL5pnJ1$7mMkRvFdZD7$3)HoxZ7MO`ZNv6 zW|c_Q84j624~q(NbCcl&Q$EWif|dLS{qQY9mfA9u|Lvxs65$)hQpLmFlf?uMuFc}Y zgltuz)1h*e>sqwEO66s$R0`&+i~g=*1K6KGlyh$z0ahpoF~TAe1F^jNWtI|n?!{@BFV!qdFuq->SLq|&KJ@C$@3^eS8$ zIWMd}s;1MZ?QtX*xiKl+7FirHK_^NOOL^tY{|kA*%AP~6+R2!S_99}IV5gXbuXBqd z$Ss4{G$_CRFAkNzbZ7~+#Or~@y570r@bA-0H>D(u@C|a;*b`g0BQ2wNiV^2Z$iEHR5)X3E<6{H`nL`p(Z;NW%})gbczsqFDcq46pgS^-H1#5 zDCCO1>A;^=Kta;FrcfA%C;j5x!Ur(A;46vC=B@49^;A+yDO@<>2Fi{F0Xd68C0fcj z@jqk8-U)lmc76-Z1tH0?#OE+9S~RMxifWTXZ==ztZ(`FIR#Ov>ca3rq@P{be)^{m)yB*ZX8d&>R&$|5WlS4Vf@nZkV3Cdk>pLb*XaiWLi+aRk2;9oiCtUbdW1pZcoQZm8g9Y2~vku74 z>lb7s~BCYQpJ3uD`mUJo4bif8L?57oZZfEhx>@)P6_#h??VCv8DJ&PkWY zyaK(9l8NL4kDe$5XC;~Z|I5pQiK&kVE~hL7LvFaQWjA$9FV@u~wmGrt7c=%2%#EFC z#Nt5PX|YIv5uLAh0EEzzOIcBnANxnhH%b4v(a>An9S-T1hsC0toO4f5T=0<)=mx61 zLdfQNf}xYt+GV4asHDIP4_!old@!Cdp{^~O2*2ikSlkEylb^DtY#OCptF^B5`4B9HK9OUKD=T(0X=Y2Oaj2#KHzG=y4&-9c4Btpddkx4C z8~a3N!KmZ6fv?zAJw}Tf)F#(i6POO+|rhhh@^XTqOVO=sXh4 z@pO`Kv@wuu^&SV++$h)N`!ylS_V==`1w|%w^EkSXp)OJTGEY7r7}9eLPUg;7&sGvu^NtD z08TbX3mF4pg$ACw3{l)idoFA5M406PK_1Va z-pmZS4#?DJ2IQ(D4m$9wqTmUXPe-bFt|M*h`~P6;KT*?FuoS1apUMiTn}1mut!QkV z2=4g*ZXd*}7FJ>Dz+Hw$)qti{f5j4JaU$^YU!2Wzom5$*9U6`mH^S1D6G71T0u;7~ z;l?`Ckf}uJ0KNn00qvD@_)1kY<9K%r2nAO6^u=Rg1gE*0GR_eDsT*TCHDrWxb`ktO zHB2wcITh$plh<<_ae;at^_q(0L}_mH+dA6d?-htdzdPdLuov5|11e3SR4%4=xbyI{ zK|>6CdK%1?~<^It3v;E<}2{9&Cy&VC1DDx^xo<)RT?8MVa&o+tL*0o_mo zPsXHt?YBvWr$ah9ZC^UAY2IVpLwLRR-%K{U~ZCGORc|5Kg#)`q(*yHw##B{&^4;{fx`R2`oB?Onexp?#8;d z-p64mc#liu8s>z_;~*WI0m#0CWk#HbuC|$~PR^x>xx(su2HK0Uu`~PWOZv`aX_t#L z6n{p$X798+Py7vQ{J7(`$VEogtS183Fr19GP-~QYw3y)Y1&D2|7UZ&cY+XNbuvTw znLXWq5uTcvRyFRKC35HLOE8dVT@v9IGe;SuaBGT#nZCwP8XdnRUijbtY!UIL2&xEk znRizdo^>-T4CS_LL1F(j10sw};u%N~omoo?Eax9Bt@(Iea-U*iqVCEswnMoTY`qL4 zg)(_b@^R;kTY3|{tti=or`&1FC=x!(mNiaRMdxUlo7586h1*9ulc}Q<7F^ZX4FM>u zEb;u1_Onu57}Hfro2v=P5cje(}>Mc~_xrkxxkg2RN?rZugeW_$0E$VvfaIxt!6YS@BTZeLy(Vga3CHMVo$ z^7d=XXrtVHnZe}Gv`R@Txu|hNutySo836xJtA#;%Oyy_*VTR26cJSHLwZmG#O^v>* zY7IW!Xakfws<|TDiBDlY4zxSVrM$XISXIYFV_YgjGvFC{Rg!IC0OZ>IFrY4n+(|*o z(d%uQ0lF2WgxikaQ6Aw1{ZqL9y&y!Q83S&2_>D~P&agNn+dz;G@D|thAVF6*K zGaqX@olE7+g*e=}oOHzGc84zAi_xxshSwB(M+K~NC&`Jo1#32Co+|td{Y9C5xhTX+ zfUya=9oX))T5p;yV+rq;;)eyR)!)+3(x=O+6oD_xVBO}Q7yWsN}Q zR%DaLYwW>Wyiqc20nSfUmcfKbIED*#wB#{c+|6(wF#LV2*~HV^&(P;Z$7G_ewB8ma zMIRFNVYUQSMIFF8>C=1)o>1c5Qk$ahfQoARh%JQ}L5~a46)mPez+EA?)Odt=yJlyt zUy_}V_VSovd+L8D6u%%Hc&Gx<+R$de)hGugPjtcy^-9w9H2KHJKD|E6bn zC^PSZz0W%zfyyiNGdF&$uZ6QqtHKZYNDNw`_cJ@Nu#q`IQh8L1uI|rk%p|<;Qwjw; zitKx5X;jE+`4&-CSI!7XsA>+j@e%EZ$o5k2);7k2A5q*537mAEdo(tl9;XJqjU@Ex z4Ry))x7p!6Bd82$HHbu)-1sS;jZ_TT;neEQ>5GXbP4-F(eW+jNKhV_kXYQ& znbdw#fmzrNy0IEE{M|jJ3awZIHB$G(tGHu$CC4)GCkBvwiul zQm$BZu|-N4o&F=(4hI_aJiW|yi>$x+rd(jePD~ME z$O;#<{z2xG)Et7foSE!D&g3?X6PnRk+lCh?9>_2vX@5HB{A`Km1go-^LI0~9|AYi75}3GTUDXCEYGC}fhajWg}G@X}mpR1q5m{j(&& z`eyP8gCLO0Cn1`E&_6OM4ZmFvtv{o^bhDJ{Jh#~XT`v~_R8LfEQ{RJ&Y}4;pbgpH_ z!*x(IKcc$)jC7oPAU5!3?hJXz(nl2cp@IW-zfQ-KxD7Y=k-#KD0D_$f zcIY48fWFeCS^!UHqBnvDuR~u)CCV+j^KK#UUTHXrW)8f>H}GgF;46;F$S9v@b>1Hp z6mzhGH;1aLH;>-lltd>@4B;JqoB#pEKqs?D*hKJlU(2p$mjp7`U%CZXuxE-pC=_jM zT5%ZB?9}x4DwM%f6VY4Lj7QWQX+N``tWvb7tu3`Vth|S96)W@xMY!FMPmY4leP0Y| z7QJ3d+L%o&Q0P((%jO8v&!R*{#dsNr9C0d?06i766Qm=vH=^SOr^YGim>f}zHJ-(h z>3O3Vu7gTSzq6_jozvc9t=ERk6BsJJrHaw)L%*5}^T39mIo<&Lzs_+FuK_Tua_-@z z@~0NmN=Z|GjT0-RnWf|n=ky=Y;x5dLGbUuJrQ+BY^;FJvgLdXikqD5;(|x z1NF|i^%K?&tlL4UdG_0y!}s`*ARCi77&WghbT?&%?MfqLM+uk%9T z9&+IRwz8wW3m*rWAVo?xCo(=Lpg1-{!D~ErZ~=T5mkVD5X(E8??ZwW8o55E)VAAso z6#+N&9eG`h2WL~H!=2pBHe{rWjK#1-p-C~i%t0T&bYint7=u!1@|AX9wA3Nop))Jc z?0_2X3g5E&nocxcV*Nexrbi8}`al1^kpYPq7sT3Bd_5pTN3$$3*3dFgaKG)o0S_DO z>_~eNP03q?iy6TPs!7TXAk6C*_4PWJ$!PcPbzsesFVImfwY&le?^LBO%fQsOOy7)r zz7si9@tKQ-h9MnW&;V(zmIB1C1GU+$G*K_2Qd!1hVcNH~fNd+ydhC1r&WV>%Z;%Z) z`v`K==^oKc%(;Q7yW`?+S#PUXo;aK{DnGA9N^#8U91eCN-Uc#x{Jt>%M&R-BUyi8ij%0u`p8bOzdTLS#?(V%j?!l~n$2 z0V`+Jm;yF!E2ojHz-`nItC-2mRP;Cr)h{eton*QJ-3%(7JjQNsr^}4ESJh7tbVo8; zpsG_IJ)RkQH-1Z*)v#n4FIKunW~*W`TT#uz1=XFMUlOeN&S zXCZ(Sp^!Z!0L|ay>-(Jl1G=iy3nOA#ev>agh;z7aG{aLAk2w%->g$7yZpM-Y#k!GP znr={x4LfQmDqE8%jutviNR(&SqJH2U6Aj;c>`N%hI&&wDuKU5!i*IuC;2cDA)AsPWqh3=_YDh;U z1Dt6@B|5eF>Gu-M4wWGaUd%nlRk-x8i5CMOE&+Hz1eR+?U%m7FjDRX~>-Kb-kTv5dQpZBp;cG5E<}faVhw1w$ST_2 z_o3-XI;}YpTl)jX^n=zAxiBo;@bfk%v(PY3S%{2amW4C6ItVbH$vtQLK$`N=oz#8v z)f@SsfKeAFD<5O_;od+OH>_LyWKnk)qWaWdm5tTYJK@hhdK+P!35+N~R_q^=TRQIK z6b}qe5LZw<^Kt{0a}9(?hU5uzE4P+`5nk=pY&Mq(g=KT-d@8ygz|0JEr ze!g;|0?l)xOT4$yh&3EeNzDz44qsy`i9b^S7evWc){lbXNm)F?79_ut8~pFCXp*3lWt02il>?E%H54gSLA|0VKggJkj1e3trV^sl9*NmO~W z@?Gi@e1>f#a5|^~3T>tH&5knb2Sf0^psB0qPhrl%39GZFs`;4+ z9#Txe?%QxXHsq}Vvh3}=iaK_~!mrZ1`3%mfHv?mH>j|(dDFT=8XB@^osn&@|s8AUl z=6Mj-t}7YT8$5_lskhViQ~Dmw2k=T<3s>0hpqrNks%20kfiHxg`$<1ka%dVIhMkm; zU&xAd5oYjsQE3VuW-9ywLP z5x|36LQ`WguT(ytnvluxlJci8e4YoX1m;6I4s!eA81zth3Hp1K!010Zu)%b!5#Q+L z+c+auwb>4xBP-&ov7p-^mL?(yNoafaI{QnmH@$r0B^zohy}u>q{CAivk-cHWU(*Da z+1la5;V!^cG{7nkz1h%|X$4f^!5?WEm(~oZ0NYhmQIjreHdDSgCsQF1Y05{6c99-h zsH~TAKrOREF;T~-3heGm>>sLDebY{l(wG&zq}Hty)g%CU+*ZzR)HH28j*KIk$#Lp) zW6F*Ir(5)W+I~NePyvl}*k=^nSVX|fU8m@@)J<|w(1jZNmS`H^RojY!hj72c`O9L=J|IcmW z4bc+FKjy`v#-Wu{N{-jIjUuL8osk%Gqwa)oB0nJ^W9i&0MJHGWqK{IAZJOmM+C!#Q zGtjjdC|1TynT(uhj0*_E8(WV1WD`wz8#zkr?ZpZ|Wq!17N=UDehZ5NbqIP3qsrTVM zK%JI<3g>?jc16@sNE=J)8)Yd9g^6mP(Nkd9+ z^#kiNczlVarCI|nWAlZZDnxU?gfr6eJ#-7NNv~n6^Zw9JJ7F+}(2RtG-}pX&;0odDm1NLMlW>OT^&#a5&R;#&Bb`*7!%Ydv0*_&?qN3 z9ZK;1Ewi<&YvRW8>H559BO#Z$$r)7UvdqkVnIO@EU{fhWM2llQl@L{v?13=oNnp4L zT&OJ2)!t~C1SaT7iLK8|5Zdv5c_?-B&8#|M)8d{_U~RZnx2Z6D4DNhH;#_tnN;btm`X)B? zVfCy2U9yVn<9ZO*1Z}`Uw2mrxGDqNhC0|2b)#F2gp(d}I>c7A-hx33P`_Emi?Ch3A zA;=|t{LVF13DZsP*Q?XSt?>)K-XOy}y)ywf`~&SF8qBi;nR?0p$QCHeM(oTKPHv_M zY1DECxCYx5jh?maYf94g_zTn{@N2x-#bAy^vH(n2g}JhP z{FR6c?u}jA#!>V~NvX#JYP6@ZA3dAuLH3Z}=TW4lblap&>!Rzi7dh37LdEhXnNTHe z(7BbzGhV-y_nsI|#jIZB;hdOX!h42}rV_&Bc`VNZ9fP>DS)ZTxjji_sfjtbMtAOuT z0%WNl-+5aGD*u55AJC(W7@i5BofL9>>`3TSk#7NyDBfv1N9$=Y$+P#twxIOX_ihB? z-@M}7f?*6CzgMJk0M(CYF9kzE(L+P1m~z^!$M!aYghgg zxy=c7L7H%Lyp3-u+uptD1y$o;w7nWgpRRZXXsv)m1G$IEV9+4Zbz+R5n&E=EKfOO2 z=UN~lpOr2}n_RLT+Ajc(5Qh2&t)V@GuxGxwF3GD8te~Ogy|Lz?$jPWt5$8568&7VD zu23GEMj=J=aAb&Pe*01(Z%j{i)@{AAT12zBVo<7ky$4Zf&m-)i+Pg#SIVIdobDTS5 zKF7WB<(<+H;^SI#`3teGQb%#hnhM|A+C}c&d>3920&p8*wG%_+-Qmtrg)}NFdpZMq z*_Z1EK1$f1_>%!jWYfs1d7_C3nqrm#s2edlkX{i*)ANiT;((4&nS$i7k#qoExqFj8 zHX&kr1H)PRpYK{&am}EsgO2a;GUWd`CbRS%GBJBe=;-;vZP}6JWf;8p*d229dBbiB zk6!cN5kwC)f4L46(g$FAmv3afhW3MCHQ{g?Fw+H-QA|5Zy57FZlXdX3=Y}oxYiGKc zam6uEV8|MqH-#=tWLI5+;DufK5@wcWa+b)k03(*VUUgIO?MfFRC(p1%QLmF^w*;m5Gl#Db~%C$(tn z0p~h~Cw&%5pYLx7raGO7Y*X>_;GC2rhuXI>^hJr85I z)96~_pXaQi{(ohI8Kao5F$N1hza2B^vm#wy7dMzsU-X6<4AgAjKQ0GtuXnrO1&qOs z!m$UG7*^Z(`9#FY9#PHfMZSlAZ zqcLOwBxE}_-u&vE1lq>|jti-8=+Y5m#yC;f2b69YObnDUcnRAkD1q4aITQUF;*}dhnp-oS@>I9lzWFl&k^wUk!2ve)ITN?(*u58+IM0@ z7?-PC}`}w7sW>UTJu=%Vk~$zZ&$PUhzj8tp3}uQOi5 zL6-8FUQw+nED8F*7$-r^ro*~oI}n3kf$2meWm^TsZJlYG-U&1)1`IV96D82B{m*Pf z8jxFP|MIuef@1!AQy)Z3ub-QD$yPEyArWEYooFfu%H|g20Mj1a1n@h8(_1^gc{8&$ zQEA7AA=|n|XK1;v-YW+U40);RlwJZ9B-Xx*c0j;HD8%!XN6Oui!uR_=-xT{Zl=aT| zho^}h@qBKBgQ2!oyc*!E^t!~8C2yOLvK#KLGUwzjsOwN;9Pg?D1e0*YV+OSu=5t1< zJsbM$b$u`QrHA+Q6$%*$VDOiu0?d>F(_qu3)T}_Q{qa4Sr@>su*)ck&*gYB!laz)z+Fr^bKxS9@uDYSs^ca5kXNPku=Jh?__M|qVK>fz(v<^?>7zxBWc(&@aD2S1)J3nqvK^dNPC{vAB zx+tNJw%fX;B}23xl3S}&mKwj$A49v&V>4!P3d*hS*<`spZ>T{j`G@3X#q6HD`*pvV zZfc@H&X>>9C;tmE3q>)I!)GmWmWM{tp9l5$Nv6M2k16js2DXZ^85G5^SHOYB@+=%1 zQ~B_DMs;hiL*n`cxrc-kkbZi`C9cOUS-P_-c&X-{7@CQ#sUNO*YFj39`^)i(aoNZQ z&`XIET?|A@Ho~TWh+UW>Z~@#ES;A;R6tcy|7;jPM@-pt46$YKFsBYHJAFilq;!+Cq z8|2XFkR}nfXaLp}aP^*dYyoZimTE8iOq=_}RQ4&lZ+!FvFJ=sFZBp@-`~z7e?2PR( zS}C-=qKZcQ%mlU?NQYq)vF9d@7=Kx{rP$Vl=z3VHDOSQ@b0QwJ+&d4CK z1`xZpQ0#yY$nU7dGSIKBi(ePWt$1fZZYMV(sGU|s;Wbu~ytu~nImG03Fqf>xJa)2+ zP4Iwc3mWfkb~<<|TxrOzkD$W|Md@T*+d%nnak;JUbpKiW*@P}7B(W*-1zUKCj~T+C z4f*5)^^Qj3aIcIqnStT$f5t706qE$P*5gGO}`|p~2+w-4i6|E9qv} zrQZ;!-+dBQqnhx|5`J%j$1R}4s)hyb#D#Fe2KjWQvP6nH(jfK7k~8LKm$oP^v4yzB zy;hc#dNSBv!Vb2F4-muc)L5&Sj`d3eYjY-)IM>d??+I%rQDQ}n3Hi*1cKBBDDddeM zN%J7~iX?#I>zhlt?NLm&B{VgdmJriTTt>bZXSwf0C>*6c@7U^_X8hoLmqm>q^fV>J zIrk;qSy=#C1ObD?>uM(>P#7@w#j~xa-0__`EvG5oVFHCiv$quxtm!WM|I6V_RWQG% z8xZMU0j#uc+xOu(NX z5Y3$klsma)@F@;iz7SeQA_MismMu=lX(h-js0IVgZ0&xsWgajL?&I>>U}f_^I4FRe zF^7CQ+!x+>P|?`3w)76|(@;#vU&5?EBgm)>Am2cz>xY!t8s4=Fv?OPnwodGn;es07i9=Mf%frJtbvN&dG^y0)){?nnVaJA@7geW zv3M!MsL$cPtOpP@!pKVedFiCxL2Qjm5bEcH2lEgRZ0=dnM<~HiX5=~6z*vkFR@nm# zv~JNN*@fkJf@cQtTvi6@a1jb4>`q>b{ zLBjk((%sN-y^1xcn`nnFf|BDlJ`{oO%3KEk>TezeHU>ud)Dl*~@&nrajj5b(1nJ$Y z#AYy*8(N%arZRs^X_0@_9)ELF`n_!gZXAN#@wj8n&TwuC7gJPa>s(0(fBQ|=vn+MG z+A_UBlHvLxQZg}fNPoadt1a3i=95t!i)n_VX$;N$H1ZIYv)mmAhx{QcPIg)(nhZPo z=ionKF+|?Qdc%R4I-KlExQYqQ`@?mp*Wiut6lhCfKt%lwN;pjA{R|OJ4XvyD(hhy- zG~Qk23#&T8wA(!_LDcJ$$X@pjr|VmdY>4WkAaG? z>=@pZy(aQuRSXOg@e(%v0}>V+bJ17@kAA^<6C+PIJ=z#rOy`_~aeT?R}mu!zN-#v}j7jK7hhjjbb0M$Oi!^k-Qw){`6vVcg>* z7=f_TdU8@fWt7A5q8-r6P3q=3p>Y;Z*c+mrF;#bo=zmO~jG;3IK~6lgo>yimaES54 z8>v5$M({{{wg?pm#+71J_Pd91zg|?bshCO8W?npiAA!O2#mG z0ABj1U0GH~qXGZmrQW^{Ew~t`vkq&j-Q!1&I;tB+I^3gaaL&nDoBTj9lr;)JDtOrK zUI!g*m~`JBqTy%mIMZ+EsF(5@7j=`Dhp$R?$-$$VM89FO`RS%1Y>u;BG(|cSg1Rzt zgpCHTlIcmXrxipN$Ix`CSa}4AruG?a*@BLNKk5U_?;e*DFEEKX{!0s+t+^IXf28Rs zMGO$@F^+Hs0^xESy2bT>&*@`LF4_`F&k!Q^|Bw33vHD`pW+VJ*{%qTLRzBpkRVJM$ z_7$nb@?k@Uqbf9NZPoek!c4eLz|v}^4(EFq39e4&@-~(Fyvyo{CnTmUYCs;j85}Fl zuVDJ22vklng;=2zE6{ixe4TCNB|C9)Q}Xjy2x?V;$<#7EZfpYEE>7i&6k`e9eX@vh zmFtalm#b@N4E9NSQ~^rYQkR8H*}T0~p{0rJQ!#YdjdbBV;RcCAvD z@2?clHlS#HO|CcsJ89p|Qon&rV$!ukYHH?g5KQt~SoYpdSm2R~ zILm?L?#N$I-j0q-8s*={%7Cb*tA75lscJiL3MAi8$^M@4o z{H7lHaP~su5zCtV1RIW+_A--p<>r`!_&_2%m&>p%a+!y>v6L)N3>H|tsP{fV8mFOCo zsmp+m8x0q9mn}*Ii(j0X(@ANb-{{Su8RlRTrfeQ)i&!c=)(BInH4iE+MWS?~4-fLP zE>sgM3w2|hq+WJI+!XSF6|qpwu4}M%p-r&DA>Rc(5%C?|b&wKQ?>y{*vBcOUK;({;ClR@zaoKU8RZ)n;H zaE4v%i5C9^xA;3EnVjc|fQph$Xt#zk2!a-`v=GrobSD)^Qt}8JC>viub7yA%^ZK8Y zqn5=sli2S^H`FXjR+Ao;jpu~YUkH`nu60vS%Hyd&`!r6=+`hHfgmH7OlUutk3>uHq z93VdSqlL3hXs!k#ar_!~6 z%XjOGQEXWXEZ<#!BMKROiaKP$TMvdf{ z45}vij>u-_PyyirUcKxzEE5+(i?`r9e1}9=J{piRu_@j;2eb&})iCJI^%I3K)w^`H zKn+X^^16a!X&KrFTT~Q?e-zn(GG)AIx~Q2)`ujUt+X3nM)BJKU>}G-ZoGL0`3phiD zI?WiCU`FM#l7Dnrc3Y=%jZqK_zg|)9Qp?{3Jl1 zmC=Z6CvCHn2Fh}>I-1I)?XO_CDp@LQsCDYV(m-`KUWswmlhn(9Yf^(QLbKf%1Em8D zX4DNVY|kEe>J>~r=cQVJm@H>t5@=6X9RypULZ`^h2$g*3eJaTb3+@I98Us*)gD6yU zM@;^AE9MQ`(83(g0p{ULr@OgK-}j#cWW&mC@c)=sOMizko*=A=`tk8iOexkdEoipE zHcq6b6MuoyeEDWXj7xC=sM3;++DqFj^W~Am9}f^I*c3+T)&jGs2EJiD^-jT z0Lj025D*mKl31JaDYQr8E@2jsh}9x(LgU>6Tf5aBwKD}E$t~->4Y5VG%Uvo9AP9f7 zQLl$E;nn%2kl^kmRZU{==_}4E%~(GI{k6agF=86uFg#x~NFky6PD?2yUEe9J;$n4H zoypsCopXC>)kP$4?vK-_Kq)qASUfBpBT`XqhZg6vUmu32g`xxSm~iUndKX@mgD~K- z0i+`0bjKNlcwt|{xhu81d9ElU2^;Rx^>hm*vzI9r5$EyPNny(Yzoaa~4M&oqt3bZ5!IPr2Ovw9o4l%Q5wO0o-pG6jDJEkeF z!;mI9lxU`O;|t4gm(forL1h6d73E;S5L^(xXSJThtnVbd!HkDAKnPU#PLip4z+$iI z=F9}re`^wF- z`0>m*zCl`Q&ru)=L9&%-SZ!wk{~&7WL#YZ`=S@^f2tPz+NCL^eo7y;kWdNUpQ3JAt zVqpLH2Wfn@{fa0CVoG%JW)=&ws*>S#r<7U{?nATXbKFiANmF=CU9GXWwny+0GGCTQ z3NXUbL%`t3hx1oQfkPw7%GjNyXbopttWtZn_7E|SOJp+tXF$Ct9P|hE(RU_0+JvxF zE7tAvUF=Gsz=p0VI6SQGk={soWQ`la^NIUC%l_+uB`-{BxpbXP{E+h`UEPb-PIeqrj;v@o#Xij zqc$x0am4K$hVN6+5AtQ*r0K`hu1{sbyUA~X`pyo`ca_Jy5qG_km1mR$(~q=Uy~vxU(< zf0)p)iK^b)T2aJ*lqNVAT`~s^PF%Vs5u*Bc%Mlp~k^y`vt$(KBuB#qM>Fk^z!LD6) z>+A=?B;#x~<@qPp<6{;)3XA(pDvdCf@2Tx5TK{L34-htdq@48XPnP7viITwrGLRC+ zX_Djy4bdWM@Z>#b`lBuRaDRrPbX5sIVtArNW4nx35+UN<-;eOk@B$)#Dr4%6%Gk}C zNK)r}lxD*ee%;vUY{A52&C)u`BN6^e6PGd-qUH7P)yq}punnxfi&G*z0A)Sn>%6c? zb1H~vdsT;Qd<))2#CUwGLCU>-QG_kuyDU-%09r1|A0*I95%_RD@B3LHZ4%MlT@PKy zr7HZSek&4&IL5$}nkjy%5qDLRk^ig$t&^{?0fV#-fm}1DWb??S{dCAhO*c;|6f4{| zilzjSOn_^f^@5B_KI`ZcE1Euy*$%%h-`{T(Ea6|`8ca;BU5mImrdz5pYTtW1jx0Oy2-*i5yHEiVv$b=Vj6I{3d}%?iGtX$ z{~#V5EigL$2UC~z9sBKo{?AnMI#xh(>u@R3KaXM5(?&)1+*qHYS8wtG$z zgr{7xETa}_fs8%U#-7p0I*RMw*+0wOL3z>kt4F=r++PYiZe z=aM*E)tNRxBnfMu_r6m3qNb`jXYi}hQW%lpDv3V-#YC4Mtkt`%ur|xr!}cgw*F&Dx z4?L{}mBR5SA*h+N$K3S*(qRQPu#D)-&>lj*#cjg2Nx+6=w{44rX z?v(56L{l>SV>#T9-^97%2wH{nWCrv7Zf^97e{sfJ32_pyu$oXa5HS9$fFH?^O!pX``q!TgQQg+)V!9)V*Ny2GUI zCko0mytoqCiS*nX_bL6Q6e)q|f*JN^Ef1BJ913O@xL*<{viCef!6*lq`H;e`e|o5S z1~M*YH-j|r&zD6Ka+x$e1j;WHWCFXj1Gv~^~KcnQ3LcjRVh zO=QB$qL}VbE8CGP&p5`Uqe`!#_|sE4Yx#I2(lb%oloO(Z0>9Udx+T?mJvB0-t2owz z{22-0)#2BwDr4FGq>-V4-Y_kl9k|6weBMBbp8w!9H$b~Vvd7TG%WK=YhU9`TAv&)> z21a^F@a%Z})$;`}=2HsBTwW1x@-fh48NUghknYQR3qv?5=R0Ky6Kf4>L{Wdhm}GkA z{zdWUQmWeHBw6C0Fih}Y^kIUXXD;CqR$A0TeqjMaEz>}0*&q*~afWNOXVeG0OZTH! zlz^imWN81=NU4vKc7GX#?Oo#gUC4ENZd7gWj#W_3dcq5NV`8B?F0gwE-6(wPpJ5aXLp3^01y?xI+2X!Aba zWieyf#VwIG{rK0pjv$-a3b>P?6MaN1^cIuinh)P)(GL;wY2J1OSYg?HMy&GU-}zoT zU&1#36`R)9I0T+b%TF!I`w^hsHaI1I?Q9hn7bMn31SBP0m-?=DangXD{bj-ohUg}IAQ#}s zS1=Q3zh-e9vzHUTey%jUDy~lmV}MlkdPB$z{bw^U79VBGDfKMdUOqr-x4c@sD(oo) z%S(}}I}K9Yu6ac?Lmk8eMFH7|!FCf)DA9`j1R=D195kmJ(V5 zM61U}fqZ7owV@JNI$*jUeV^Qv3&EAgXR7ETcxr&6iKY{sBxFdpXo8yZ0U>SP`SI() zobv0ic=()jXsw1Q(@anG(ZwHn*Mk!7UftONR;=K*bJq)XqT>{z^}-`GUCEPjud z);P9Xnz9=w0#bB=Yvanx2JhIBdZg!3rLJcbaJdlOxu8vj$1%tqZR5n5!&+W@@`DA` z-%jT>SBz8_i|DVZ@?Jnw$Exh%n4M!BjLJTDp2ZS56qq!~cxFX|K6hTb&g3NL>RW?^ zHQ^;l^{=6)Yy15*63-OCFNbA=HJJ z^1!;Mz^JD%nP6R>Hn;pzxW%heLFM~QgMQXaUY<7ok%gqeeP5s}T53ags~17|MV~UD zds@x*V`Xv$K%Rgs)`(}FdKbe?aJTy=fkA_O1__+mmwi*x&3Js%)TXkXFq;ryAl-G} zXIYv#On}`7nxrxK+2`+#a$y({`O+sF4pU@-JZP^0y8(28(cY0?%d0=`7aZ(p_c=b~ zK!#}6SD(unuxqn(gM}3d1xl@U%pq%wsMENUf^AN_pf>_W(!V6h7?b5wh!^-JFyD@p z!%RWF%`_N0%|8VcA|TA?J7)#keP=1fIq|yMXss`nuT;6?NG#D+0RrBRcnZID^V~9m z7#^_Dhfa!UUPsl=Xx{sEFWE*RX_jOctvG&bM#jJC9iTaufbs6pDbEZ?G};XjzL*yR z2j)T(w{v)7S75_Z&UGE$nHuKwZa#Ag5fNU8V3c_p5Aek%MZ7|=ILo071IS7%xbOz3 zJbpS}bBW>Aoh^Mo0pQP0)p-u3cZz^d!OQ7dr@5yn8GiiYNO;jmw;gIwWcmglLp~`z z_7GQQzEEQ=F3e)3`;}BBMQ^ibefhh7Spb1*@Eo(o*urb%RV5@>T3%`9Dah50sZ6N7 z>~hZ{9kYsmqz`vG9(Ss~aMH){|MQ@5i*KZfpNN%sLIK0=K4$ubZzIR7pHgX#pY?@r!3OOKg`Wz*=|illM+C_ju3}qNe{)!BmZ)xU_;g%_Fj#+V zrygG|i~q>WptIM?K*66D|C9O{rc2TH^PWk${z=@aZQq6cSG}2XOR}eSAb-bb>6gn7 z<1+b+pk@g4RM<)CUc4QTHp>H9N+3dERBPKe4>8Z0S1u0(Wd>_{jeFv@auvFoPrx$m z>P>uuy+A3p+scy!>H&WA_4ILcg?>*^D@ZW^b*Z z?>uvfmk_OkzNP6Y&BzfvwpW{YD&;BEzG@pk(({!GM$gJ{Ohu!vs8vfwlxL%5n15sb64YrexK4?R5P1x5?Y_)P)Jw2H5_lzC^;Y*Y){04 zlsMpC5H9%x)8^SO^jQzLrPd^0Pvc9HdObVJdo4CjHvcz zKxoA2@9U;S;w;oIIV=~EO{G*ocr>9g(yYWaK9H0k*W;Jn2jk-))(*K9i35S_+0$@K zf`xkwje7z3AYU}HVTAttW9N2_7oxqLy5Q5(M|AF1pauRlIhTR<4UrM`(!pKM_t>WC zJsU{cP?OtCr>52?7cYTz!0d-9pLYQU1(nE1(8|)RrWVNd+2eJLk83D~ssOY_%TaUB?4<1HqgK=?%yJgfZ z|AQ$jADDn2&Zw|nsi3UvrsHSUN+q8|y!C8j1*0uNDEqR(hW+X(5ZSgfgS&efQyj+v z85I09pjXoh@8fxZ9VBqH#+|9|hWu1!T#(uqeS{H3I&i4+XW=nMnU$XfR5~(PT9l{K#>j^%s;y(v#}^Ocq?uOI$l3n z>r1$74+iA4@B&FX=2H|QCIRcmger*y0_oQHj`096*W1$Tf-AJ~nV$i;AJHL5T4kJW zZfJ}Z37T!#$<&wVpe^@qZv#M%QjQ`FSQ<>%&r%_6f@HyUEN$6bi3-;Fo9(n6T+dOX zNg|WxDKgs)Yb;=z0!pePtjR-~?MU60T9;4n*2#IPy+N>%IkxizxRX-dG%f*Z z^Shr);3_(#W$<9ny?uJq?$E)et_9nc_T2$KeXKe&XRy-JQ_DJ3@q+Q2RgdNT+zTN$ zQ%@L<7v$lETRJ*zxK_sHqW|B6>c+tL!#UO{WkYJnn#!369OQzF`ZS2GvkT_RO;z$@ ziSKs#Z7{hED7oeB458#S&Zc{vQHvJP#xid0UUX3HXU^16|MsFFWoT<>jHOgi*;`<~ zwh#ik|KMOu$u-l2b42sTwZQmHdU4CjJ0OD`&gab;YSi@eH*EBxp|h5YIJ{f1lnoYz4XSFth9Lg0X#+^Ia{P zzh48<`!~KnC=V7Z+9_c!6}u^vhXJPLJ6>rInWo*`BEJmZO#nU-KEOn*lp7G|-FJzz zgjQCIs-`B$pC40_jO=WIr;+yi&|-g{TX2bLsH`=Z#m-E zqvk)NWY}b#u=h+}9sQ!Gd z8}o6Q;SxT&|HG*lf8buRuOL2jWj;TaX0KOZ^Wup1RD9(XAAnzZ#QQeEb<&4;qXh?$ zoV!_DDKxEKrf`k7BC2bkokS zYsJN$Uy`Bp`Qoazzlui}%sdk)8Sku5Sn)0QM91=;?geWa=V%03RF^D9Y-tMwn^;X3 z_VyIHcTW`wq1AQWJ=79!UJt8dGKQT#B%YL4kw{oU6|D^>uB)%D2*8)0I(YDcBfK-}28#Cxu~VKgcQx9*K-lnrC=Bph)gr9z5iH}$Q?|a*1kc}2-=j~u=#+q*d=ug-MkYrllaEl+KZFgR2FJul>?XWQycZ+WeqxGqYR=?iDaiqvlnS)=GEq?y1=*Puj_BpNJvHy0{ ztfFTE!;|7K*1~549a-HM;zWH~u0+=tyx8%LEZp$4E?WSUw;!>cn7Sc+8Y)TFs_L=U zJY=??0GgvkW)R9@!~(LijZtGH&4}OUvD~UFuj*2<&VFvJ@h*C61M>t)ST`-#?B;8d z&R0!vhQ!Cb=$(<2f1>&@O6?Pvdb^-x{>r$W;$XjE?(s8Q2U3RHEP zEl6`Mk^5}7)65{SCA}db^`C!A!#?v(jZr6@ZoO=QlGmd`a_fmQ)7{u^uC6`b6GVa8$(gLJTSsUlSeP!@}7hH0^q1b`U5+ z-~1_GyqI$iht(A0!v>Y^tx62 zDi?66yk3Irf+6o7yLneE>K#zMB>Lke|I_4T*B6ZM3^CcVERzqjynaWsZ*Pmrzx)3^ z39)R3YpsAh#dx=84habE&I8YS+v7fa`x?L2FGR*xaWYdnh>?u1E$r|b`CZhg`o!VN z=p@xy9L%d~v1Wp|BK3B%x-e8%q7`p1wQu->+#HOO=uj_+5vl1#v%rj5qRV(0;K(`g z!~E;Wxqf+wKSh-P6~544C(Hs7Kp2taQlRrm>+L@!L2PcnV02Nbx4KQ?_eyG$--n}a zx>@PF3NYb`$oeZ-+z4wxiB>UHu&mbVEf?*pXjuxuU#VL;M4Z44@$?j{-&Lm2jBAEn zI4Iiy$_SQKKc#)AYX+$8Jkv_-GFh7yK{JEz$Lz-_@Hf=&(h5KPSH>WB-A6Tm15c`a z7QldZCkd5~^0-oD-le$3BfbUBpQSYPQU%uwkkjIkhO=q|u7T9D7TNGPV=>|!LGn!y z1T{gbxzQv!jxbWi6!b@HVHD^pz@c|oH$PI~ZQ?}TGI?#;a`L^jbr@TZmK;hX*}4zR z{vg!YkXUL%<12J45dH=C5}p~B1e5bYb;Ri8I9R$Jwqlz z*mp8PCj`_Me(Sj!b`S`xoeFht+)_rK1loe5NRicU;+FnzRZ&ayqpn#V-6+Z1g zLCvh^Qp_Y`j^sT+>A4SFn{Zj!Lv44?p&ODl7xiMt`@G)zB!Xv`f>hhN`j)`1|$%w#NCu7Pk}%L9^_XpDKq=NI)8-3cswO{jw8-cbY@uTfkcb76!F<+pC1R%j5jN4R6#NpTK@1^XrJMW+YzxB7ViQ27a4on$m_69^yMi|M#HA$w7;} zQES#8ej7;bbYUh=p_qQf5B%PNcP%>=myh{MKXPgUGmxxjlF!--$w3(N+PK|BR!a;~ zu^ml1tD6U_LdSj=qz})F@egkG2}08lJ96bUj@SGnJ&Xoi3F6ah13R4EE)SB5VlI{E zWOyYXrz9C8xMS##?i#6rXLWHRB)ijz!hLO8a1LiYp+q;MH61ejV9|IgmIGodUJZiE z-q)zSozp7Kxs>)QN}RP29DIB}KGergp7YpAByvoK;%QFaA<@%LeU;yZ5d=mYSeY+x zKo~o5=`|5!5C{jm(&`7^xY%4m5EVZxjIs8LQM58ZuU-5;8vRRqYG{x-*^8UV`%av@ zCjq>7r^eTDoL42o50^1bMz*GL@O*Z-2c^V~BZC!18VFh*w(JMzk*1ZzIUiCpws~Gp zkifuE=6C~D8ojKe9ek-3kk5ERVfQRDKBwQU%r9ZSliOK1Xz*bI_Imv3E%dP4?|*DL zjr-SLPW?fTCvY_-;Qq5oW;V|Xb1)Gql|x{JH%x7v5-AT){`p>?Sx62q(z^ zuy&~JW^9&BX>x~tDt6$FxYpB^U-+uEHj}$q9WBu-_#(1>+jQtHpfTcXtfUv|OM$>A zPI$cVBQfC@Y&Mmdp|e$8a2lE=|AUP69VC|ixSTdT?GLz3Rrs)#l@;~M3?RPxkMn`8 zuFjQL!Xt~I+$N5ODjXRkNPmi`cdh1|q9~9T-#l#UfWs^_fO88MXt8YF2kd4D(7r%L zYsNuL8DLp9CQz4=)J)S720A+`8M}(Rek5?osa1JL7ob76eZ|f~K|vFEE*k!tb`{&M zg!}75l8G~shu~m_EbjM5`NdbXY{h@BQ_he^UX6O z<`KyclXKCm^>`Cq>EJLT-oxT1_jp(ZpG13s?iFfyDi(WY+gZ{ORvWKBOgu2gxyKuD}Q= z!7VOQ<atE^O7ki5A)MEsObxgz%o=NQj23>2Zp`4Q&3c0bFE(A`-{j;Uqm?y8&o!I2~Pc#jFz4VO8=MC|n%%E#t z%yNfGy+6XLUTO*Lv1(j32(Z4@l&R3W5Cx6p?*BF7+pl73V%nMD9BAnOd|@6`aE08> zU~-x1th{)XWg@Y(by62iw=mU&;sG97XdB%p88*!xjEa3^GrZue^78hNXe)tlzY54$ zmiN(ZI=)WhSG;znng}4eJo84IU*Pr9OUt4TP5rdy81BL8F*B^~i1FAXZKJHl^ifDL zFj1F#OeGOXf=+7#;mT0b<7x~2AUN`$lIqlg}{T1x-7P}5xIXR(07oXGoHS%vtWRJm z^6=BFx5-cvNul4-j<6g-554i>L`|+3))+T_8G=>OxL4a&74oJ`AC{&5S2onGn#Puz3S= zE0neLCx=o`BStVhLF$*HPw!83DB4t3@D&irdew0KoFF1dV+^ndS+zK#4?|N+zhGq7 z2{RQw9WbU9(1VzhUKSc}Kie#x147&^_>`Ewi%!i{_4O}Mis#srf_n+5fcTSi-hoO8?~O)t*W~2vBVecQaZh4)|Yv9AQ}toW{}g1PASM?-Vf19j`7DT$dfHDn$#4D z3pgxdU%5$6kL)ZKRP08-eR)}k}W1`5h3mdiknNf*T8&PpU=JJiY zu|;CCwePaJtQ>ViOl2R?{9+zh8cR$y1QvQ<3PS3((pEbT9D3D??L86vJ_Oy*O8AN# z8z%={qaGcuo4n6Se?mP5*HK*F_5p$2my{@(Pz~B3*o(iQ`inYquX<;Sva`rhk99t* zqu3}zM)37pLo$h1&7)`w?5|+rbj>ahPi}JTq)0_wSehNlIS{%qN*U&m<^mc~Gus2e z^+tRvuMUuDSq#(}kG`?1u;~QugT<9JV_^0%*;H?lh&7`!NVk!C=Gc2LK+?0({R|2y z4}pA;r2~Nj$92P(P2BNRj^)#xt5G9V2@KEQf@0dIaW(B-#Iehcn~~^f>w-1RjUr3q zijDYzyQPygV=P9KkP2U&&)UJ_0cOlW9uCFWNqpgWffl*;As$fX6N2CbKC4v~MjCYTC8aX)TJ_h<9BT#U*npI$M5uG8*NS3X zn)2{Yl-ST&fJ(OLIaKB%M}HpZt29=6QO<&f9*m(LK1d&+{xoO$cq(=t6ng7OS&kQD z5zm6kNuA;(hJ$FAR8Fg3eH1|A^8|bH+_i$A?r!)&vT+Ylc9V%q0B-%7G>UKM^`Q_O zo?c%SVqLG3P!)~^kx1Rq=)&7VjB|h2kCv2FW4A$!hT1`00#(SCd<7{3X(7UyIjmBtHPcGV3&3ul;!!7jlm-N-hEjVLVdg z(K~@y4}E20_69a~nIUJfEe%XB=uIbhMFbZW$_fsJ$-??6m!9>t2(igJvJhpf^)7*0 z!R@X$-RznwZ8mN9fJ^AXMt47_lD;!9+PaCUT-)Bg4EeR1K;Frds=`!3k8$=Gu=FTA7h1&hjnt>Q$s&Rpad0dO?6i+^+tP{2F-DS7nZqGrPRwWtV>Rc?gwT4qRifH z!3I9y`a-W+EH;q)o@-}vmq|`@gI4caCZkM-LYz58s5z!af=OFdgELi8AghHSjUJQk8VQH)f+ z_N5Owx!4Ktdh_#7E-PFf4*jXfe?+&m2{XOaN&@}|Z$cjGQ~dBNKKZreQa*_<7PFfk z9fB&rynid)6MB7NXvfpF6l`CZ*mEY{01N!K44Ad3r`yL4qpZ_Ws9X5o;EfKDR}9@) zIDO>m?->yA<7~F;<+F0rc@Zo&iFNS7qykrx(HE+~a1z*hc3qj)9u9ZAS*f=11RbRC z@vH5=89C_L1_|B=8CQHmE7B6_W20HqwjXI+y!OiH{~GsN%*TMrMw46&RZ{CwP!{g{ z*?1N-v;;@S)#@iV7L8{~OpJsWa~vlthXQ2nMD7JZ0NSGoS}l=xXY0VqL0v5ek}{VH z>5?tb3O%Tuz{|tYhkzL*Y9rc`^s0%jv)>PflRr3`c_=1_>}rsGE>y4{P`BR08lpv} z*?LengQ)Y1{@#ZiPHi*g-d_u8D++Z(&scm4+$;F84^Ya8YDk)b&(iOk-jc)f;VamP zQG&1*u6#NU0^8dHqC23)=UgHI@Mb8Fck1&b9UsOcuG(czS2T}j+x5s1`OFdf0ee9G zSb~Gos0i`iiHt6QX*u6a5exL6OM18Q`j-!UsDzQzKY5?8VUs_tLC)uylqeazV`9!v zs9s`~vv$9y#xrXA6(JZ>LlmbORYka;k}j~JfCBioJ%0+^&;Y{%8tNmlhg*qM0&!@N zgwYuBk6OX?m|7CId%@V-BEfl=ysC}abl==;{g_n@y*kI09pb`I78%@x0t#<&O@JSf z;yG#MUR^({rgE4XTR=u&Lx3B#v`_eLZn)p}lvJ+fv-g{$NuzUTT%u0;747Gn#!}Jh zv^Q!|l9qadrO3Du{}bB?rSeJs|B=Xb$mAvdD?Il9aF;WF<7ma9Fqi4?JNl(oajU#OwX+#L|I@vrJn|= zG5A(K0vziqY^iGzlGO`{aVN%`P>7!!jMkcQh6X``A{v#b#u>sDeWuUty!Ccp197?; z;0ANbu2(ZJ$V|Uq2YHoJ&7HUbl~YS!XxcxIiG+XNnhXlTP!_%w!JQYDr7BZ*)V#Xu zqOi?L{1{N`O*vCTYUR&!|)aT^d^N$(D7W%vG<#bB1cJBUpI{4tcgN=^*c6aL|h|f#FJ8AmXfN zcJk}C)<^ml_(*)Hl$F4F@4XG6l+oHij zQ{bfK&6M9kVj!!_;PhTEJ%dr=TseZoQgI8bi*x8yYz5aEb}VykOM~I2gLOUX^uXy0 z_hQEz;Krbz%SUElz_bH`^Io&n|7bsLYp9F@44?FY*T>>d6tDKlaE@^YCfqmPYs?~9 zj){s0<_kt3g_~)PA`o8g*UYF`S1+Ac`X7O$VsQ=pw&5>(0b)bru_?D^W|{l3y~ahD z9#d|V5A~kG$O9omKTe>z2@z&A_rgGHtcreBEd`#^gr5y$9#It(mhsNptbkI4$(-`v zIs-(&w)ry2va2q|tbi)=#6Avj2 z)L60_WNHp5x#lnrmHMw@=gA9HTp@bfoN(L^&y70iWRI-gfV00(e z!2w@GzRsq6h~lhbQv4&T9o7Yiv-f33vqujH6EF zL*C$IleekPmI8Z-qA;`x{q-X(FvoMOVKEgZ$TL#u+C$CJAZ85om_2^ZuAak7;LwbY zloSY@ow+qzUg9)Nd+5rTXrNJREs#&-i|SQuhJfAjmXXsyG%twK+KQSKmx2gQ3t$u| zRnDA9zAu^1I4b~}bVI?C`A9`AD_)?yKUKwn;r-RWiGSFVf-79<=fDNDTGK7+h?1KS z{i_ktX?56AMN6Kgvh04V=M%OtL>3;WXs7_AB#}iFfdzKOV|9CzR5WPAmLt92=l1D+ z_F6Jo{Qzg{^Al>kjgw@hx(aOUAt`XNE;K@77!qtQLyv(j%4riuqWm;@s4d`u6=j=K zI}TY@YizSTRMil)b{P-=eG+DepZZEAXf64Hw3S=TiIQ$V>wgCt5+(^B5q$x$=%dqG zsj`o{3V|-8k~{24;5as~;I6q$d1;dtjE}oZ!lK;2(E497XrBZ zTxbCAZI^YRM=yIZuBGJ@dg~tP3SEgawbsAx_JNF;IjbNm zg(RU6><5*C!C6j_#RMMtYuOA1$%%_L5a7~IMC2Ki8f-gSKg%h{9y!MfqN07L@GIBE zR~HSF*z~|c;r0Y}@~9CM(HcsOfJq&^25M}LZPHZ`kfiY1phz@Tm zCYrAGT3VnyBCb}SFN*y9Q3$K`0!FgDtSfv_U!?rq)u?7N)oe_-ot&^-l;F<1rlR2e zMCe0cZ7=G}WGKu~Hn63*#@~<0SF2UNqD+*|Uq)EL7Hc>DY79ArYd3AB#604IU#jTp zk_skNwIknfWDA|UTUa^d z$7F^Decw8rHpw`Ho!3lcCYHex2t~ISVt364w7*3An^(tx=Y$M-syPILaTjK-VKZfxSn1Ri>Fwh6-x@G;K#l7n zEI+TZsib!LsPH#xq)BRen;SV(&|n!X(QjRE~?Ut-&+xv(6%;VOLD-QwlwUOYZ zWee#&Zfv6NjKL;0gir7m*B{e!GBwk4T^(s{sA&Eo5Uqhs{E5k^>>n>%fw{6(xp$! zfCh{COsFPJ`ybcgS$Dxiha|{rtNPeSV*+qX@`|J;QSh@}O2+{BbMEgyMiU ztOQ5B4cEjL+vQ$4!o!`dotje^X5##~60a=n!?8^rsV7{c%TWLYMHmd%{tobacQV)f z@=xh^Jtsi69H?0j9nkuhS(vb1pHhVVgcr#><%!vto$D$6X%IMczQxiv*G;cl`tl-;4L~72>t%T=LHEp;`r=#wNRkp&yAo_^I*gFpMg5b=juAmGE~#@ z$}M^6#-1^w5>zSAZ7o_*zC}>7zM$#Uv<0D^{HO3T>BF+o1P=1XbmbfFSHYrAT!-nR zt)gK(4;WzzQB1jwhN}aAhSc|Giwivy^Vop&Xn_fz3P+LV_38M$uXpV(jZD7_hTs2Q z#_mZYIpawnO;$g$CyAFS{22$Y8X7q5#>}iIGYimZhSipZyV~ynvKoK7_hf|RRIfGe zL4&8uYG=fmw(ID-O+tEQlW7!OvDR=3)7@wXHtKGrKAN{wlS+`DYZ+>;n2fTZV&w1o z#e!J_b!6?AE9sA`f~<(o2sd&^U@>uA0gqfRR)pz5AKYD!souQ0(~E`ZwgL5e~nwcC+beJ9DJfPKXK3mNj~L&s5a$e?kx zWpfv9wj(8mBH_-mFoh383#0?l^!G;{F8HQHR=AoVC>@U}bNlFhCFPZn??QrfBsy!I zQd$eRX(^VlErDV~<-?K74)GT7V7v)jwt($dFPhjgYVeNR;4zY^5-O5R9p8z<;9fR| zLRm+)mjTHj&0OJCuai8*_h&h|*A%#r;lmfdEG@)7QS4<>om2WThW?{G8>8|cba6<_ z8=|7>ZF@NgCRZ5~N@K=r1jFOLqwlxr`)($fz{In(~{d0RNj%G)j6D+4pyd!ps9(G`3y73d_0R1G11 zE&Zb@3D3ZGjPz9`)>XJuJOH^Mw6-uIrq%6YjxI|#FbEhEMc^-VcvKA?_d_Odt8~3t zvaUOf@h#z{Lf{HM8F<(3r`AApJ;b;+#711f_S)|>M(fOQ;E8iE2^mHzAnlB3?OyF0 z%L#b@AiXPg%S>MRVHOPSwVXPs%D>h9tPja3;rVZkRgFQUohfVgNcZyY^ccFZj%%ok z6^Q+VU0pE>8|`PvZc*;-R4)J_;XF5aAH7T`*pt`YfAq5}2ebqp&mv#MTWLm>?X45r zu!tNJ+D0x1g4B#a9U0}9CIdI5;mpo;5q^qYG>bf7Ps?RHwz%< zqu)$_L?_QXWhTy|?qzq9Pmr4VjHzXm_{|=b9;ZrS^do%D)UB`0Fw0*e8cdkqV*A6K zQ(CHO9+thTfklNI!FD0oE8&dt5Ccf?bKNkYM&zMzFS~)5pTlm3avjAR0X?TJXR0a| zyF(P)M2zp}TZ;2{VOrS5=Hp&3QQEM0A5X%b7&R`DRtE70TnW`=-rp)Mb%*S9XRsm%Xn4N0>>;t~2JpNI3BnI;ownn|VP%GyR=kAFn2fK-AtSzZV zMN+fA&W#vQ#Hfqgbc7^WZqRAzJ#hUwRCSEY+|Y78^b^dJuK*4N#B8Uzj_**qd}hLo z>r-y;EwPHjKz?yFQsB%2vOs4ydljedVrkg zanVgH916*62%{t&y$ztT<4VRwEq|ZDVJ9a}XZUQr70(nDtVgI@MWclRYZFD@c!c#6!V+t(Fy=IEMf&L_ zjN>hy$3}9rkLNB`pLRvW*;A-NvV2mphReA*82*XQP|#_E@xoR*-`QmL<178}JKMNv zKnf$9i)hnr;7`IeHc~{EZ^~q*Q857(0rPxVu;(M*yf;JRdc!CXq}AFv$d=4s^Sd z+^l-TPNRAJ#lcLW(&lbZ17&if2WuUQl!CDH9^u~X>%4Rzt{QWv{&HK|@Nl$R*+cXJ zAr0R0zZk0ZbHoLijax6A7POCX7zNnr8G+k#tR*lM#+`}yIJe2zBRozlqt|%^JD&y? z8m5F0u+7FSEK?QHR^*h2VDJHLSs+0g!V-~XJh`Jug2q3%l;4>E2qONmMrwv(vYtiN^gCK|H((ZCyd*cviizAb+mI8B`w(%zWsqtF2j_!0&ahQAoxe2a z*4V=XSlM_Vw4W~SRnFZlx-YqACy)`jg!qGKXB5%|NlYkPZ?uxP*xW8rP+^*@ofcMy zD-w01`sLER68X%#X+rbLg~Je5Fr94KYz7177S-OOxP3?DN^S_VcOWx^oE60(!_34W zB8vSlx6Yib$PK}%ChSisyW9`sfN$=#_gwwX4-Vb|Hr7#8ug7-QYUoa*U&Ejtm=^p7 z@g^vGQ*6l=7r3YKpfP^ay7Vv@FYeoJT8L2$p@ZAikUV8?`;g;{^JJi__OPh9h_yVi z-khP?ucF_(^C0X%0-5I%Ogo`UlS~TMBH0M6oQ2mlXQ=hDo7yOH=+em2QtXcfN)x)4 zV)^30S`2>XkWu}H+StwTdT29mJCAdL5W?JeZWX1P%vpe8hxbQI#5__egWP+Nx=Ul!0$H$6j&r8IIZixV(^`7!+s@pOy&caf6eiN8O;OFB^=0fvqt

mvgKa8416yniw>dd26r&F^>_ccSUnZ6Ez76C5acAWhMu? z$_qoSEfrVpS$(TrQQhTm4=p~aZ>*!iv1~Lfk#P(6Xj?~?BHF-_&`kD`Fw)&K@0Sy3 zWN;5mQB`TFG-!t^4C{Q=P^qUjyPU(shCYD=gcT3^t=gjQnC@QduGX3^K1)vzZ z$OIAo@*1hkVn*{*;4-!Z>NA&cmiLqg&p1*w$AJaw=k+e#d%60R{RHl z@w`(1tB^|;yY7j&fipiTcY9ryBhj5h>z(#CJ+!ed-I0hmvllur>ZtQfmqhqjw^#V# z6nRrC@H&so96-2Ta^LkhJ!%~H1QZ@?4wqC{Ow+~&qCBN)N$fsj36SB&$)8!E$%5UpIuTxzM3li!P|qoC?eM@Pq<|;)w-`)2j!Q|4S?KRx=F`9XK(>W^ zr%;R{ams4Ezd_<;N79*c8I6Xl^6F$BGaz)2bI7xX{Fa?Gos9r}LQr^)3j>OaJPf7s z&uW-l{|J^J2pix`S*(4oyQ~$1e-$v_87Nm%Op%hCkzf5TtI3UN!u?B--IGNJ!}&K8 zxYS7%97JYLY>=a-KK!afFPUbemar{ZVO~eOPi*v)(0HBj0wn5m=@Lgsi|&M6MvVL> z+->&x5O8zQr-o>B7Cezov6t$Q|#-&%-k+--TN{P76bkyjY*-;Dy9p zc4n$Z0|IiQU?($i#>N)5f=WKa><2%T)(cF$?A)UP?aWneSUXgm=$Vm|e#h}2i8YqR z%R#L=HCbh9zsF5fD9M(Fk3oh*BRVn1iCMVP|1*Ar3W=$MU0_NzrT&0mZWBBg*A^VE zD1cy$P&-lURqA5sQ{*Ql&*_8#X^fOPGbB0JEO|`KxSw~6<(Iqt=5Ms;$ zi*Z2{)?}QF-^=S+=r-bdHlBQD>Die3N*O;U1d)e1QR-6Pn-iP@0j31j4g()Ng`at1 zV_Km)XEH!4xj;dq8%B%V7rAf+cPgpS9kV9a2=>DvL**_dCeIy!0YeO$wL!%ZH|1w& zZHlnuQXh;faRDHv*ml5?`FVM`qM)Gh%a+Xb)$*3)Im4;!eYLFR(kVY(E;h#EFBSZ9 zL#Ha1<5`A}z=uBU)-m8CRDu9Df6U0KxUNslBg;4c1R%~GYOoBE<8g~}AmefRD^e5$ zC-xJk>!m$cj?Bv*u8cpB*|_ct_j^oYKb@wh_l|QsCGt#8C%DS$>#)ZfDlkptT3nE) z6@f6HJIC(HF|?&}4}3P-Q26L#;cfdIGuSEZ)Vv<$1`TUE)a}CJo(eJv)Qa&*tw@#_ zG&Q!_!9vizQU0}4_tQh9NiM%Ew}f03)rn}G`q3LYbdxQrx-3!9Mf&|#3OR_%gptQ6 zq=9>*^T*-?5F&`EouGi|@B8lwgWaW+4bkYSgEmSqO)f4j`muTv49-3!tM_$I@YI9} z$m?G%zfM?Gevym#tJ)sQ8G?%mjEw12A+dQdr|5G(=YK*YO$mtMlS(Co7mB+X07Eb@ zVmj7!sn@Ybj0J2jeO!!gh4H%7xN##_Nam-4wJB0}dYOZxcc_L`*G@;B{$|`_0Vc~m z2}c+hz;C%#T3!X=KIe&ipUB{5(61nn7T(t4a=e@9wl<2x-h|J8PdVMg_5g|!odK(( zY=kKVEw=0uSlE5PIXgj}4*L7Oqz$FVhV>R^U|7Cy?gna&nm!GrU=3*A)>SIWr%~1s z+Gs-PpFTy;R@_lhBY`&5o$Zxj!7xTfJ9Q@=coZ-sRV|!bGExx*RPqn>s1+3wr*t z#j0B7y<;2CqEc8s0bEWxWgG6~@I2w8i3ROSixua}K8xVh+Vra(d^MW^XKpc60LG@u zgsmhrpgn>Gl*x-$&!0-IrQL@NHhua@+@q5eCSeZz9;~~Q+uHNiP<;18$b;bsk0T%%ly8D-DN7d$^&AUB-Es|F zJ2HKoFhAF_!T`Sz2z4~pA`fobxaDjGz?H{Dj_dhX^z~w8QL>H>RbiRX7p8W`*ob4?BG>fxeIYOB0|R| z)9a6#Qt@CnC}e5oEW^HuMsSlaqr!E3PUzxeW);P;hwDusm@8tod(unTZl{{4HZw^5 zr9^jqSgff;N&&zprT12Fon!grQOZ9K_Ro5ARLk_v6l|;^VMyZ+HFl%-NrAg3t_!`u zA6u${)ep9Sr6QFn)t#~`7gyE6xtWZ`jq?QCTqPhqtd_PKaWc_qebtWe+*|CbbfR$c opQKt$#n+VlO~=}Kw6I)*_&x1n=k<#$hR|I^Ct-kKv-T(jq literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508234001-Config.rsc b/MikroMaster/20260508/20260508234001-Config.rsc new file mode 100644 index 0000000..9fbd793 --- /dev/null +++ b/MikroMaster/20260508/20260508234001-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-08 23:40:02 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508234001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508234001-Diff-Config.rsc new file mode 100644 index 0000000..98cedf1 --- /dev/null +++ b/MikroMaster/history/20260508/20260508234001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4293d4292 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4295c4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4296a4296 +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0