From 335ebb624e010cf5170d65bd30f82535883138e8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 14:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 14:20:18. --- .../20260511/20260511142002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511142002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511142002-Diff-Config.rsc | 20 + 3 files changed, 4673 insertions(+) create mode 100644 MikroMaster/20260511/20260511142002-Binary.backup create mode 100644 MikroMaster/20260511/20260511142002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511142002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511142002-Binary.backup b/MikroMaster/20260511/20260511142002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..30ffe428a98546ba8ca2f4ae18446b80523fb743 GIT binary patch literal 302647 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±p%?O)d=%PDmm;?V_y+vGHI4jGc8-GtXNsFmiQn2B1DLO{@u z>>uDL+-f1$4GZE~6c4SC+pY37v8n@Qgwv_tgr>W$putuY-94YGsm*}FO+-8}Kmt)6 z1QSw_R7*p7Xus@7K->xs#)2*Eq?_xYLFXqs4{VO%p<_u2Pyk)Tf-8FarI~eR8UNLF zeGDZ{G_WS#g22||pEfQa=1pOkcW64)&Il68Rc81EyC!A1zO^-}Y)eAnjsL964McZ4 zTKvw!NbKG3s_!PxH0VS-KH&Dwx2k|UzL)L21NwQHu`s@_A_t9O{1*iy$f89;pDQKOHzh-39=zpH-`)6F&_*nI zX)e1A=E;9NkEask5AwEqy$hS0#vL;r43~KTFAYJFX>UeN11_M-?>P*+rJJ@DN77HV zo{KLPhe9}DhxOEfn}yvvV=cVUTb@QIg*P6?cxr@js!!sQsf zC_+CI?dOl&74ZPfpw2hnB<1t(OSiajhT!8N4;)xgq;Dq+_vCVbv6*4?KA^by908(O_Q3-HLvu(X3r6CBWX?5GSh!Ny?i1)IY^Yi9ko!Jw$@ z(~9}x&ygHOI9R}1@y3~eltcZP^=VkqbnT_&0+_~pMOQL`h5O%|zG0W$GkNJ=>xC|D zDqDs9&_*-daa6_mb~C`!gSo1d*1lHM(-&@H6nQ-{Z2#uT*94oy%f;(h7gE(-hj~s| zLvKOY*S%n^pTF@|P>?~JBL0nvTPt;>rB8D%#uoi^i4`(r2yD0+HdI3%2@NlyL2`jL zcfWz{bVdW<6J~w3k3SY-oYEcApBel-rzr1VbQI>eP~; z)k(JZ05jk4EkWx<5=1k}U}Cqh_Ik(DaQer38LAcb#ozXSxIGFF{)-=+zFoi!23I^f z+D*C;LtlWtxYl;}L$n^_h21h3{F{vn1B^P(OU~Us^1<*+AgenYv*D#Thldy5pTOfJ$1-2No z3Ih0w?S)m$u{bL>CYKGSiM0Ua36ECyyy~PZdcK)pb;Cu<0XkME$4-Tku>E;6&OScP zq66w(M@|L!E@z|>E*p^5=Rr5F1KR6BY4enWQeU5BL#O7%i&u5?u(SafPsODC?JN1;$ z)<(5x3OglcqN*OwdgBIB^`TC4f(^G-k3q84H}+-7rK zS$>Xn+s~V9QXidVo<_6SLVv~r~&LmA$;pwXnLb=^eJy!v){3<38l&2u$zec@NC}_}Awf%dS zTO>0KNwXFclct>5WNvlPtYHq#t+*exvdu0I^Ceq17jwvneB17cg%25p^~t0Mv;F0x z7*cmeuFxtfR_%=WF0`e&&gfiWOZg+dBP31D!z1CUy1Rk8E=_^;R2G@4R^v#F#R);m zF$p`E*_=uAUn4=a4uB@Gjh!t&b)1SEcqj8h?L=;Sa*QL7xUZP)0Qx5Eks5@Y)=>0+ zRzs##E8mT39^$gC8{k;+2;s6LqOd%{VG2#11|L7eIZJBVSMWP3Xk1n4S^W3YN_Jx@ z!%E4jJ_Zx&mvTk)=z|t%r)+wK8%Bt)soR_PwJ9vw;$rub-CQdpV^aoF(Ca($?w$-y zJO>r44RVRv`Jl7V=A6-&Z-JGF^B#%>)rvX84fA!r2IZSaR>c4j#$`C{y<2aN{h&z* zC*LFJ>`lq(me+zfnZfm5u^CKLw6VZ*&qw&Ps;CbHvNiy9wOZZ;=botwSK%fOb*m`ozQ?@sjHr`c)~X|Cf4wsB|H^A@ zE*kMD))mvvGjfDJ{?SkqSgG1E834#h)%1WrUJkvud(ign#jUw^hphP(AK<{#?qxS? zxG=ewu1i7_!H#EPw*d90aVbD1ab;YQ0|TxDnrE7D0&jcuEolt^*p5J6QRcDjE&KNV zz(IRoU{b+$@$`1mJK`CJ3!Izh(5K{VbGE%_`g62ypY2cmtgp21W4pIbYu?OUnoMiRF8R$0p0|`I#JK31znt$nUG*C?OI$ zXLN|t@va3)Uw`M8>Z3M+GU8pj78>!hxX?`Z8L>R?f&Dkr%VclfNqxHz)N0Dw$pbv` zXZm4zU(Jy+y;6wTb^P(q>2)^pVf?yI8LJvBLBKRZQp-)@?A%8vwsR)HTg>gVsEC5Y zRGHj`+R~)2QkKLAgEj<|V%`h;a++U>(XXs@50w;_JQZzHoz25)2Tdb`)=F3_+Wm`# zC)V!ntjnra8WHU%B;8X1XYg_NOt?v;tjMCeh+XlLY5?`uTybA4#kt$w$u|A!l3+1X zAmQL8{Xi2-waQ%Sdw8d)E_yy>0LkZmu1orJcWT%S44r0@u<=oNjQvtcVPT7QzBEg? zQbX3?)_JB$z%gd$fH#!Z&BkfCZUIi={_H`eU~giakKYz zS1+4?5022XFUsaOywI^1eHEep5^F4q4QAkd{~=?Cv(FprJWQQ!vSdq|HmBuQEciM$ zcQ2RFU>pA07QZl7C$Cm^E0QXG8P+9jL4>svBx&TMa~Kl?a(l4pW~|Z`IW44C*SF$j zdA&~gk9~ R^UdfO7je5?O)~7(qN7l3Pr`jq*!B26zjpEoB&g8(;w?f|KmXBXFMb zQ=`;GCCsIp{+%WTV;y4@+HRDYZJb~N&^}XoB&DQ)+2*UOec*!D*s)iaY%~aY@2uoSeBv95phktx^IQ7?Bf>K(VjNw-v^|O8tvbpLR~83kC`yXjbOKK;|^z zPaosHij?0HW2Xl@w3jm&FneBeCPegb=3BENIN*noN! zoAk#(KF)Dhv%GEeF1~z7^Cp{hCP=6`4-81F3WlId=!mU5z8)VPPvt+CNaZNl124?z zht?CpTye|4SLkWX(Y_oHU>9HNyP1cI+5*{M&V=b*zTd+XkbWGj5j>2Mn#JE_AXx$^ z3#L)hr~bs;516oOr(-^0qB}v$vA7I)S6~>{uhZN9b12!hRvc|KgZa~ff3QC)8Z47- zrg6_{L;twSZ^eMf$RDWe9sskZQ^ToXL7K4XsYB7{bs9RF-em0N%Uf0op7Sl@q3}e4 zU#axt^#a(08ia8QkWa$2#1sGixyvw(@M63Fhgnz<1$V>#8>$(&oWyE*%CCgo2N-P^ zO^v_=5h5qQ`#j|S@2HOyKS_9G^d*W&ie&hGVyNY1#KaIowpJ8PxShni87_8ZkIX{v z9s+Y`R>Z5YJ!$EV>?RQy5l4bZob@+KlOaY-@7^u}its6oMo*&&>=a=if#>YYh*T0G z*OJo(RtNoN#t|o2+q5d_m5v&=0tIClx>lmqzPCk6GUa9dAw13<3JrGCG63(gMjwse z3$KX`r3TL$cI({rKMJt;llgao)KPdzM1;`rulom!+Mj*2`|x{isU%xUh#PKU)thvg zrDq|?F5Xtq_rO@HS7El%~s%rJL*h3?-xLYC%ZAo4o z{svyoe}Dr&FC`97RMH){nAbv46RmznL=fLcLBxd9jcN*a zpa@9l390Y2DptN1;s+RtOL2Q;|KqE91NV+!Tt{!yBB>NE7Dm0N!|PwE>PEb zrlA0yI>GzKX9dus$>9npJB?GVn?Eb3@d$mVd1bM)2f5i9YlQT&WAR>cXr~Q4Io62W zFkA%CIruWQxRR5aG@70FHi2t}&`*vF7*oZ(jRs9`!h5Gxk<(+P#tyYDLuKNF83moM z16ds%{T`{EySR+h6<))h>963aozm5(3bTFMcF-qZKsA2ntiWtQmB(}GnTQD6oU(YX zo0)pwLCsxYA^=RNV0h6+`R8Jf@v9YBVxl=VLqqressRf~T}(WB$Wje%-gJ7k*2Q*3 z84K_C*XlU*$(0kLXnwvb_U1$XFJ@jeVegD-Q zk?y@~4!f5rPGzG<5F)cqI5@Y#Bb7AK%1J5}@(|tU#W;`~zRC+jg64^ADl*Zq@j7vY zkCE!E4=tO8L}^qL)d%A~pj~=F9f7${O56rvoCn=-iS-tiPk%FCrKq8N`f2(z)8`RM z<|*1GZc4gH*!e2GW3jwFOib&Ds!b)eJ;409BrQOt5&y-`q)cB3DxNrfh_^S2{+a&q zkDOd|HCcYXml-Q(Z>=Y2%;Gl&0yY$Czb(>-&SnyCjmzK*m%(7qI(lGdNJfzz%wu66 zDh2B(Xxtm_FV*Jz$rpDL{l45aFvidJG!P-6s^}E^f!gJUJA31D%PSzDt9(z}b%|YR z-{)kil3RtO|Mf!jd`g|>Sv-6#eeMuVu=}krZWRjMNOO!_-ScSodZbaUn1figSoQ+u zE>c35H|-sF{Wro47CT_7zQwO>sFmB5Ps5ul+|lmv*NYY%tyT_m(kn5p_ISt2GW zIhW#A4HQV=!~HkQaSTM1iioL41tMv5<}y0;Eho2oth+za`sVA~#(HPOk70)n0g zF@EHUsx3Kw`ZNQA;OvaR5K~tQLo24rhPFgnrI@;)Yx{j-iR!sqw5*_igoq zLlssyxK0<~QR1^Z?5H;(fsQo}`Lq08H6BApnpC*Yj*vH_wCD4W1yrpeHBg$qKlOR^ zEJ>at@z47F{u|AABMXdN4Z-<~e_sgKY}5xD{k})!Hf7nns`pqbWXfGaVz`EgIw`4VxEzFpGCc1TX$h3Js(B}flvm>eN zRE0qT=dvk`TA=a}e3fV2(eA)4EeqTH=Hu?nUEDv;ls)rfeTE;#tb{^hoQE@pjOcSp zSNLmG{ObFMRB-qk!hcwX z>yA|VeRnid0N}XW)L#tG)T;BBES3-Xn1$_Ch?<9hH^H&F1E;VT^K^2nB=*CE1LT!`vUa#|(*q*#P@XCQDddU!d_JnQcc(5-gl>alob{y%__5Fl-0iV6A1-Rr?7mxr+OQvX1= zHdc$bJB1cO%5g$KGWlm06t^-H7wcwS3;`_3>pkMc+jYQ@dkveFmQ{mhIWh@<7f(5p zc(17*CZp2hecAO~&`lF4yhYsU)sxNSvoKDvh$z9-_CU-=C$_Mm?75kjUT$(FMbYy| zh^0XNp#1ri_aB}r5fkN|U%goNbu?n$k*UZHp%HO9fJ&JIIJwM!-u*JGtx!!#etFDY z1aH>)dky$}&RNa~v>rvNV>ODDfCjAi?V2RgqQd!UJw?4rOtjpt9R;_7kKv99ArY9k z!XpO0k)?00#Ttmp?xA4A*mud)UQpGQ3ld8KEme#H@5uA1r>wq?M_zVuKh{73f=#f`k#Xs=Y7MJX3yP0Zj9 zkNH`F9&^`07W*npZ}C>x6CKg(n{PP%YznEbb-oM*WB@m>Zfk+73?1Kbbwzyk3$F=Ar>d=0>q1cWp&LeU#DfKdZ_es6JFP{P{g?diA zCTeqPo_b>;hzZNmY>0vxVxdt8fSa3KVa#llW3YfERzp;a^e`{6j0yRw?y$dCy-0th zz?mg{&<;7fYqMa?rhZpNfe`dPgVWm)zFk#(n;3bLdYY@+xS3tbyA9sF%*uMn39x6d>|3@U10|Oy zERqxicPXRB8#=g`_5$9M_9s!IwAHqj#{v%ov{}( z$hC@Q@95Kpg?odFp)xP6z#MGG6)x8dFOm~@Ej5^tXJAE!CGJqgtK#=3zVOuXdWv_F zcMWfFugss7%7bCm zCHeJF!a^}-q%WZ9Ez}TjBl#T#UjyAeXc8rQgop!|*|l+|vD03R{)ARs8Lxp@62osv5keZR3k6MtXORjajD$72t^nC3;$rjfuesVaZSq(I+BDss&W5{)>OAN zTPsdqq3N*d?sQ^`Bdm8S_-(k8W5+n?LFkG9Dp$Up=ps6l>R5sTA8{ae46b1=(Jzca zst#eH=FyRR+eQ)Niz+CWt|P5JP% zDhkkEDyy-^{+#ueJ6J3ldWhNLlx^nnGaq3AN=Bmgo2ili^_!kmkazHh0(K#r z9`UFWt5yQZtPjRYqcw&8^9_RNs^_5f$oDsd-J=>z)n$m&90Udm_jN4x*bePXV@Kk` z+oUQ6ey{w>sWcflvcKYG8y0BhZzQ%_NQk5w6r4U(pP>|FWefB41pSI&yL{-BQeePJ zuS)G5aVi0GDXFU_+cOSLUvj z#pm&dnDQxi!QY;2l}I! zaUPOwze`v1A%uotYl?GkcBsI0`PNR%a_ve6wiaK%NoQcS`g4Q}XsZ6~sd^bO)3mo{ zp2u1VR$tm$JoZvfq%Xq zkRmD~cgAabfhTa%*>QPK6`wW9RFRqUNnZJ!xZXnB`-|_eUU7S3Wz72!u+vqh z0Pa6^(OJwXPe@oh7T##O1!VPHrN}5C@f@`h8ywYDq5U$eE_GRWlu=R)5a~xE{~|X{ zI4WS3Vv9@;VGw0ABT@hE_msCipE(iN@f@JvG^}Q3Ou&%>Kt=nE;Wshwx;%6x3wO49 zzc1)KJTsB4hSYK7Ak4u}t!x@)oo~x@K<*+s)D`KNX+@QPhP8K8M>YW4%=D*0FEkjN zyV_0#&}&%6BwiSpO2Wt-!M)H+&oeJ++(R=^F<_%1Z$;dL=}YV{+IQ1I-|gyq(~Xi% zkd)PQC2bjJFn7*72OX+a``@*zuJf>pZ2L|ZYLg1rl7$Eu(_)u(fPj*1FCj#@pXJi5#WD=N zAL~GzRltBw>DM=5HH{4>+$1eS>0TtHlUutp-wI7$PN}DpVR~irPU>33%c_vtD|({B6jvJ-;TG-b%a*?-(31KyU#C z`mLWYU>ZDcu}WkEEDXxkeZg;Nlr;xv}SjBh?PN!n_bj({#EO{{U{b^$ME0z-OTcmiwI2aZo|k z%3mvI^D~_fb)265Y5jN#)gh%ZYCj6NDTh(gQ* z$FfaEYOUM`{@OWZ;y8XveTZioA4CpLe88Ox&1`)-g^1OY;$mL9Pg_@5M0v;SzRfrB zM>cT#Ld;XvToQgt4?jE8|Dl+RR;u%5nI!cw6E6@}EGwr5<5KsDuo%be*gJt5lUNJ~ zWbn>3n)Ruxk#$I`ZFHV@HM>A`&i9#b8V6D>yYeB-4*iQxEB*dq137`QVQM7}JJgC> z)^8w#`7pv`w`e`)_J>(%mkP#ZfBAG#kGr|v5)WuvD85@zJ%;CLX(2`QxmP^M3RVLlzOsqxrl@PZ5iq9fXXR#p z6XL}hB43y0=v?&tGRqvQx%Kt&vlWh$s!*`?2NizQRBx$tLHQz1j7?0n4I9umhPkxq zuO)5=|Ec(MS3=)r6EKP}KZKp)^hza``KjZt*O1kVIx>@*pRuM;=XafO403Mk3ASA|3Uc*V|XS*tPo!{Te$5 zk~q6R8o`jlE17$G5V9dx$~C}JxWrtk?ivb6C7v0}EY;1pl`)*lEs%`45K1pScW_n5 za*O)Vyjp2`N`0RjM2i;>3?t+mZy~OLx79eUn0)ct@nmCYVen0IBXiy7e%y#=A~u@r z(Zpm$3O`r4XG5Lf588syji}#@Vy%lO@ctVM6;G>`PCjt!($YZgch!9@ee@owpP>&5 zhb~wIScR}VAiPd1+(o>eM`M~1gu`V*F{V4wgbtLor3*p-&=cfft1t<#Ldpda?d(C(W>vcR z+~Js9;kXip)u*F{9NT5(|=UJOMHzoQv?IFrHqX(O|pT@ zaX0#H6w(|#EVX{3NAKg|&Bmcyk(|w1LmRy~CMW;}=1s@M!9opnpd`VSNYopB{8fFV z7ULcFSluMI0YtLv$zg05qG)HkMi#Ny%8%Wsh#B)4w|ZUEk2opyNj4DXxY|V%N8Alq zhy+@}mlVFe(>I*jcaN<{XprV(0m^jOT4iK~?@f2RKMlopP_%AGBf!XiuY@k@*j)oz zxM>2&(glI*@;@C{8Rt5W{voU>{=c<4N6_;k#t2!w zE}U+E3)Fj!n_Y_jH{X1$N1H9}DW<~p^|Bn{*2=%Ei7m5Dq`Q<(d~~#P9veWdAwlZO z7IU5X1Q?Kwl-Ud<4rEQn2j{;V`e$}Z!s|-i`GR@FS^i>9#-j;i#+YoIbyn&@>cp$@ zDCFCIPwn9n^UMF7-g9D{P|@SoS$yR?APq&!XfE@fdrz0{uTX^lnK?b_oX;yxHUkD% zpj&~(;{KH5jVHoY=M0YWngFEJwzu%(BzXX@E6qveFq^}iq1HA6m)Zf7kk^iq&D>k| zKNe%Sa~)p^LuFu^`Yi&#deSCG{0i1K0tyb<3`P`W zJo@=hggKH4jjSBQ$sD4<7&tW|AwN;@CK^y~@4GsA>y-lU9QYlq4|nMD(5n8Sq-kFx znezkmBM^fS*+-t;gwjv(<{XB&$Gz;KzODP5RaM7i4$S9y#Gm-t zf^SG9-5mQKj&D8G4(cUFSBy2U*;X?3PKr1A{i)*xE?qDNk&J+-WhNvfsqJK0rJox* z&!qOsxoS@liGLm@Sa-MJL!cn#S#P~UxGL3jWzYzHO4#>Z%wT-T6(?YeOQ>>LMVbC^ zklusZ@Rw)-=9l)?{>#Q~Qf7=wowi`NAy)D&yjq_yJ;wtRTd}kCjvA+2E_F;MsW(Ye z#Ma-%?cKefcJn|Py9h9pduDJGhp0@4;)VBCJsZV2v?*WRm%|36Z`8hDj41tWCR{(gg;#PJ zBgebl!=H@%%>b*az|@;{{`t5~KVoKT1tb(N5zu7!AUS5qq2S&JbeTG51sJf9-m7>c zu(r-3gmldXWtxhM;Ps1nKm*6Z9LQPscLH)3QAq2ho?!Sk5vcfwc3={fpAgU#-1cKJ zShB#QM!q|lQ>$#C>lB@f#SWE13ohFH%PFT`t^2>kRr6-o=>$^rJik`k?D~eR57!D4jh&6u{tvmBgG)=U+L$gEd%@A zirgp(|F#z_EC}IXmPL;d`8C^LAL3j-l5m-{m4YQ`d6Ad}aN1;Uc`SoCaouFyZKg(9 z$x7_&-|;c;m`kSUYxAGZfO9EEebfCV4IOy^0yS1DUATWSlRLss2^!yHZqN*;?7iH! zNiCh6*^RUEhe--IU&xKVEX}ATdpITVimKGi!8v(F={i8`-9pVLv=5aLCcU>(_3z>! zL+1vUm4$eu@jvfH(Bp1t>MoOe!?q0CpT zTF=9#yn@8mN2spep@zq*K8bw8DLVPe9$p3cBLfln@o`9}7%GSO%kLz$*{*13wXCB3 z5h584neIg_i;H2jO4J>51w2O$FgKP*jNjsojA>L<>5X)aOnYwIs`%f38kk zQ9ZgYkB$=E6^yG?XGE5^7EBNX9Bv%u#^~2G-=WosX7zYPgQG~sNPok!LX_~-i!fr^` zAWi>$IP_e|)_i|hUNT5pz~i|O3^?ut>rX3T)zP=;Zrhnbl3)XuYDPBnRJ7`(WRD71 z1>DH9>tO*if1qIH-L`*7oaOcRdR2gftQ`nX*qEvD|I$3n3!Pn^JX{3yiBP78t{is2 zp%0g%F@)DHwJ?aijOBV4RvD>Hlzfax#i}r~erX)e-rQA4Nu1)z-QaX$=1e4S%Xxwf z_7LAqc9|I|X+`4HW-> zaTV=-bAP%FH5Qc>Cn!OC>Pas7!wDug1jQ}^pbsPkh4)p)$2$U(5gxjKEGm{$PnX(q5ex88nMpJ4MBo1_LtHF=V0ChwiQN$a z)t_93iNq*at$kv~~xW=fQ!MACv z5|ZjDi`yzLPY#@J2A$)@5pSS{Hzf2s>b`Q108v*raZHppA7>uPy0EXaaCMsb5Pdzq zsfoO=2*ZKJ*}1(BNcsAXQQWmIF{2Mmvuvshy_W;jm1NBz_3=J+wP@$OzI!oC4rmq+ zrNY}lsQ9vkK;Pyk)8|jk{bALEK!={C-kz(%o)jpBYDD3&WQ(lgef&WAG{%*?4fO|HI>UM|aLaSjc(VD_jkN-x zefH!^#Mz&W+~46$nUyhU##)^-Q;L#ht!&x`A|?PTkf%|5_^U&4w4bO4;!JAK%RM+H z_7%XkD_)z7VQMz6$`;##gh2w$%(Mi0mC58U?7X_geh6tOW%}Dxjc<=x2KuIG|HD8IjsKva-~qpJA(GLjdIc8LBG^h8n|0$-a*{jSCy2|bvN%B zwL>F36-Ei5eJt_=$8-u9X##*JccCGgKLnhN&aqSd4n-~%p*$^mUfU_!;Xk(@*-s-Y z21tPl>1I}5>1in9dr3O<3$h{D4(9p$1st?YwTDc=ORj6&qkUtUQmv`@grum{H2WsUbMn;_3XEo<)6?KUG&$0e{LVK$xgK#PvA}xRPb|?_uYeQ#gbH)?4Qd#j5u% zXF3FYF3EUahql*RZE``YE%QfTftVf`h6B-m z?t}mZs8r%=>-t+J^GP6nLk@~Cd==6mc7m(KR#oq1liqIRq|JE!JNGN>#rU!~qR%6B z%UmLm$bh8wheNF*IcAJHZApj{WQjVK$7?1|j#!?tR3oH<7tq)V`(daGKn(f!?`*_L zC)r|y)B4c6eQg?)HB2Aw&(X*Mq-RiRXJynpEr1JD~;^W)t#$h*F~N_%14dXj~Zo8uP!V!kYWQoU>Uem zYy4`wk@U1q4y|pEq8Dn?vc?#hYH5&+ZDc!jlz~_4V42tFVL{k3K2B(ELDsp9UZ{^| zWdX0J+)r2|op1|9t6Oj+2A+iD#`1{{PJXl<=1eN}Z*KNOK<1&mNjXeA_uX(H28vyK zx(@d(R`iGSyl)XY4ByzaTfS*=9SJ_X>{@EVRFtjK?ET$eSMdD2x5xdMp~1cEN0JPnBBSqUuo?{-~Hlxrb_H94qk5 zpH7kP^sMcQYqa!h5u*oncQ7QdRNq_!Kd)eH-A~P9Twy^$VKFv|IxG334=g)kYNjUQ zX7gZJD7Mwzaw|ylvhXq@Me?auu5cuUaZ~FYmwoc1a(c88 zhq3}OwVoVnZmWDcN12P_LQCrhcB>hFABjXdNGyKtDutwdbY}hlq_~yD-EY?`*tN*A zxtw%28BSjm_DJq-OiN;bNamSz@1>~tX^@JUR}NibgrdrbZAOeEivLDm039v?R{B!& zW+NQr)WM{%Q5`0RnjjaLk$@8CiTG2tdN6YACMAhiH~8uUV{;D*LC@Fp;1ZpTjvyps z3m&v}OCpa9B;cY7H^GiBgpzWmIqU2)?0p%M=SptNq7R9V^~OUXAudcMBzl z1g1{FTBdZ<8IZ|O6tiQRB;>3)P982hk=gd9^cD%03PF1N&qt~o-wUx<)-2VN+|a%n z#^018)XQ4(M3#2$){kZ*lR;FJw)#M~;3}{%Aw}o(%>rrz5n9UIjT=Bx&j(28gcO!O&|j=gab6$D9q#BU5)OsTa}v zAv@ju!&bf&h$1yElJ)IPSEi2h{B3iHfZI4;ag^}u{9G&--&v%gVh#NK&Kyv?C>~r! zmO9%RQ}F(@eUN7X-|fy#JVmQ%okL*VK*ISvq3caRx}Y4x1I)K5|4U#fc~h$J@Oi1U zQS7D)ystQ+cH}&)IA%=S>5Phnn2KLlME$coUDY}p#fc=KJ);C=C{^^1EumepFvEls z8}xezQ5vPV;p*KZumWy#6C)~{9zp*CDmuMOlB|wOo%cOyH^n% zEz<70Mr&6-^&OUwn@7me6!_ykCELob72}m7O>-j-p&U+EPiNBjwJ_1ui+bBX>vYNLvYlE+Tjap8#BWG>5%m*)-_VJPDsc7hwOqu zP$xiQq=$eW!?B!jeBci*;FT~YYBd;G1!&X+YC`>~VTE9L(Pk2np__C|5zq!W(`q^v zU;V0i%`Kmc>IPl#m4K>_Z)U=Ta=(meGetBu14{VqC4cSKk1H#AbfaqsNq+ofqYkcB zS3GtlQf&8X)@n1kj5s3jSV2*I~H5 zkLm-n5%Un0Q>H7}j6wn?xWbmD&;aOPG`UsqE^fb?(m;-FN`Q;{!COvPKj+YbdWh+3 zW;$dF-}Gl%H`(rsGNQKS!>pFF7CC%vsz9%WPp_dO6uh6thl?sW=9x~ZBrisfVuJfo zs@w2lB02~f;1<46z{z+!BWBSXeeGH2vF#}LjcIW8gNoJKW<%>|~Ia;~_VOgAP>iN!3{jTyfn(M@;QO^mSVZT|b+ zta8D|EUGrmXY7)ob#(W#qf7D}WLlU+3k|GvM`#M5qo?$Vw1$(lkt0}+kHKZ)Q&3O; zMUx)fBBFe^zJF*%jG-(Yn~`H@Qx2}^VGIrlDtZwx?s$Ih=2}r$X3cPtQXTyUWf50b zi5-+Mj~b*x7TWrv3Napg0lAMwAiZquUtG<}Bs@K@;$ikvVt3g5?amhN@s^wl4;S6b zIrz@FbPI7=9vyT`E&e)(6s*NpAB0n}p#P+ns}Xyiuk|j#Yqi*535f~EL6hxI%&bKdSGyoKOkF5e1zUv4G8KJPJ*CQKG z&o(n**JNs4dPH23q1uOXZ7&*GMSz;jc#C3e-#aA;%(6m|9E$~5b)~39E#yROfdj-E zz$_e2WvBb^m2qsEs;c2}hdfop22*{|c;ESYf}YE(w$_WuWH~%S5gb-uH-0Z|i zX+U_#Q5QEyw@f2T%Gu&`>{WM2ER$5NRo)4j!-8I}H{d&5N*RfBOqw|$;^+P=$&hd0 zKxEzcS*zQ&2eT1f+3*q@u{9C{gv3cAyr@^%*28G#?VU zZDm>tzY@N1tABw<{1FD|t|mL;*b%n|)7msrh&;WOy~AWxbdxFihu1{UfMJ2giw@MQ ztBc1HE?nE5y~#n0y{>6Y_+K?}d!zk( z7zjmI!J5%+z5&~{k`~kx1h1(p2E8y!@fMN8cZBq5dmztziZ(llcEHILuzgYseO?*oqCf=X~T9uuqaCL-q2i-FAK z*|0~8TxC2~Y-ChxKNfhma9fegHN@nKrkwEZ|Kg#VoLqsr2qjxt8->DARquBgi}lb< z>vJhv3(Ok6Y}3^%DkI!fXx>6BILV-pnDl@Ra*|1YeyH5x_Aw^Z3lrD@+NLl3*VC7v ztD8asdbUUaY>n5QkPbABbN-hEHY1#13u#+HtC^71iRT;P z(57{q@`~`MOmazq1b_RlVxotvQ}B0|Ab{>J<~sYiJdx4#~ic zIyt)7{P9^+zIZSCp}ttonqFOUYXh={;%2uQ1L$7$L{}u<(x;@y|9EK7eHO0W{PuZ9 z4#-9hmI-;ir?L3c;Z3aiCwqBG@<+3)uG@AXyM8Yc&%GcF1Sh790I9oHb4C&R*JvAO zI6AK)F^f5or)cuJ?sAa(AQt8W%j?>t}Gk~>FjHyQ&WsMF86KM}q0|5h}_ zm{pJ}6?z2R{5X2rtF9mV1T8|rX+VoObl&@vjhRmaI7ken$%gL3hd!YUTC>5f%4C14VaUkL_P=MIoU*& zoro)wI*>4y=7iy|Ujgvr`zdg6%r^kCK`~X$eE2Y_;IZaVd+AK!=-bz}t>zX#l*M<< zTFY9oI-!z?5nf2i?M%@92oy@nbgbi+um$g@ef~oIL4lc+73l`R7Y{l&L6eV4(bNow zqa5(sAqdCg_rjPl5AGCtS)FGv^(8om zDkH*>o+(=0gbX4#4(pL-u?aH|)Sj>mp+xx?MlBV`8U4zy9Iml(>L83U)Bj7mN{DfO zc>T!=OX|l}m!U=iB^R7$F9vUO$SWz9;iR~^*SQq_&eE;)r zO~W0$t+7@B3p9{jz14;^rcJwHf*(q&ei2`4m*85>7r7c@|KxyAzKUhLAEnn*Q(zh| z-xjwkEk%fL@R3f)@>EsnpeyfE^>zY;j7 zGH%M;mb{?k+QgRICqn;N#|loh762n7F)n_o>JL%ocw((qtyu=l)U6C9c&Gi-0IQqslmFEs5+gsgfI_r+8RZ3_YYro;o&$2__|&h@WWOG`j&FyhOd!z+EYu31hgE zP3dm}z|=*uwf4$4MvnI}TC@|TA%D?F-z}IDdicfq)>2N+&rpYyA&}J*97G<1&MW$? zIr`hBU&qw~UPU)2(RBJUfoIJo(mmd7L748q#0Km44k^CwQmUPqS zYkB!Or+)Wh?*GR_lEJno2|9!}L6nwf2z*1L&jBdzlG5EO4!*8G#QA4%Dwy6yc4TNm zMXri*=zJcs4$a@o(<80QBv%Xq{Oz>WV*3Q7=nTr?=$s0tKIWr77qR9=k1p4&(kREPT1fjIWMcG zT$@U&n=DPdMyFg8EyUv*=0m%Vsr;19#F%ad2|Uj6HHb+SCH4UX67-oU%Bx@eS~$Q9 zh0LHau9HLKfY=xtx=8a9V52#j7$E`MNb^sy&jLF?4^C&J8z022y9V$W=^semZD&O* z;uv>=(V)T(dOoWnHz zrErnZ7y;KUaJ-iL>*@6U+v(81X(4`PHYfeqnZE26Cx5TIKo~`U*CkF*0!Pvn_v8bH zXahXja1mvrUbyY9>RQ{}6J#MJh8k-98X<=Sr`B_A51X8J(-3+4f2!NsAwDxTx;UAJs+Q?x6Nki^kJsdm-(+d}~%VG|N{*OG@#SeVtBXrQAR3 zsno+`2XD3vdY;3rOBjwY${>neFV`5SBYV~UqNE>pop;w$Z2Bqu?xIi?sDCs>B;T|| z?}$`==$0c$nmIx5BrV)8&mbQVo*6+|!@*LuTc=+N!R9vqYalCPD@lr;w~s#zE!FTC zeUb%jCJ$|5$prCYT{QJ-*pKf6WXYoTYev0bvf1fqyug21L%3h4;5QKNIEYh8TlT^k z#)u@p++}A-GI_JI^BbF2!4K!3{0=FC=%Cp`FZOy^%b(tsSuD{ZDnF_t*Q4qtQ-@#a zCp@lG)RcPOnT@>2F^%Emy=?>1>iQW-3%(yPcEi2S3_A8ygSc!xs;6=KCXTI%^NPoz z+mL}wT+gt0cY()A>6l=)ME-wjGFY6wbLc>$Wug9&z)gN66H>^RDt}dCJ9@L#RYCui zAq9lOuQ86}SgIK8Q|`zgX`|IX9hYm#ANBoW_LiFF9y-+%B09e^H2nMUBB6;D&wl1M zFk*1Vb_Er4yO`E8bJpqn>Osaq$vXJ|Z~;N{=N)q*r|4i>x)TbBzka1KUhyP5!11IY zKCLb6U@Umj1uI?9N}Vz|$trC8l${_w?*s+ExLusWT#~#6l_mM*^A!XC6t70vc~r3d z-YvfUVFOvgox|e0M_G{4Bk1bnL{!rM^;x2DB>VfS_#&JS{XU=4CS48c3{OMC5q8mR z71VIgCLH(vkr)z`flnLkrBI91(i;(ah!2@WeaJx2bi|R0BwTF1W2UegOuN_^>bqj= zDyc;nL}td)uYSh$9Vvm6Xm@z3Uq|5JOrIpSY_%TV({s7Pt@pZRNkpeE4#jFRjoKww zCtf*;^sm#b1;*=H7&A{wtc`dW0}UUcnMd8E?hNkru55c<*K_*($oo;fbKR?M__z2- z8t!eQ-3U+7U*HDsXqY!BBxLIq+jFuKQ2u$lf~9K$ODr^;v)q)ujZ!WFAzV6ko^6Wz zL1oMS#?23Q?Y7Z>KanbQ@bm(g7AoOaRVa+dTkZdE>B|W!ZE$3NokUY-j=}(5bBXZ# zlN|L+pJrEkCf_WeEQcz(1J5Cw5Y3D#10eN}ks0JGxKz_h=UqEaL=3FOEY&tUL9l*g z$h&)%IW*RwHV6)1e?th`RYKr<+NG05TBs?{Sq$hkAdkvy0NLyKdw#B4&LR*BbKV~X zZ6t#Q3l`^;t@*RKej50jU-Zzf5axnf(TJ6oBAT-gO14-I=S8J;H}-m{DPB|N-aiQX z6Of`Y=9`WhMpe|{OVzqkldEGG?>oVzpnaEV+ikQQ8eKc#dafJclZ_t=E8ClTj2^9J zok#P>ADl-=up986M3p z7P@LEVQW{|s+wmtPsaJo_r<3!d>o3lP-2@75&p?m%)<(phMv`9@^&`hsF(#CvgL2d z_qyu(bwTU+o;sOb&o!Pz2>{_%EvCq~)Wi-#fc6(QN?w+AOjuh;l7oDmu40_{# zNK6b>pa3rB{P7~}4xU|}YWocsusm2I13~{TxD_yPZ)ZbXS$ z+?h!eIVwtz5|z58y~cs9FAIeIJEyk+k&!v1A%js7Zc>6oVK8MzVSX+UIYd` zr<9SnS&DOg==H|&-SKU*=u@o?Brze;xU8?HtD!;7ALDeK{hh&M;VL0hMsc#g!;uUX z^fC?VjVf$Bym(UIF@aT}e%-Dv90c}cMZ2j&U3(_; z7&e}%ATU3*{5<<^iYYMl`$czw0+}$RXnkkcFz%DpN8=di}RiE!&b9PH%Z~ z#sO~~CO06uV*yj6;+IX`eCJ`7o1N7rRGUHm8py?p4ke&Q>PwaIcyo~u&_ucP72IQ& z-ZYblO{{G@3-Yl;Ke!N5?B3PgwZUZt$(Wto#2f;M)&-jEqvs4jI~2rGqJx4r*>yxH z+PPPwmESp|@);l!vnXtGYNz3{zBq96>4>mWS4onX*`=o=v%QG`7dWee?~w{zudnf0 z%%j1#BMUAwf(Ocj8uuaJMT%qA8gAu@2t#dhE1!b>+7|GyuzA_*HvLoIX!I`*vM4tI z574o*tJ2YM=4&JMvdw{5|CIm@X&0|WtAyj~CNp*ZFpl9hfMIZTv3@mlO*-fipN(Gp zVW>>~5q!6>F(EBQ;(P7@8Mvz6l(E^ivFNXJjnL^`+87la{LEgz1ta(AkgkjnmWoD? zXZSPh@Ch-1CNe(TAAH(P^-ogtEovYD8zuL$DP*imZiVg;I~()9L*p}NIQX>r1_U<4x9{utL5+%PQo1!NXUp67%IqXc6J{>9^U8L*2=9Q^uYYH zkkb`#)vqdGaMR0;NH<(yu|9E1ptQA7w7N;Yz$F5W;#lV14M=sPlK+a?g>gwIP~aXf z+21V_aJ!+iaBuZBy}uAW*dEV^!hKDOVivsz-a=)U;xPX&PxHWHg^6RzHH+sAt zZ*;%2^1>psoxu{{swKE5fU9{5K5=S!7eOd!uN>FXI=Z7T4vj1t1FU^{Y(;lkrc`?c zZzF8y7?(TL?{V-(%aVv{Dku%|Lp_+Xe`lm&w2NTxyP zKSMGjXuZ^UG|@ihG_f4pllQNz=pKu+rBhhSicESVVuo}FS9RTMu=O)4okMQuI-9{m zsIE_;DFl2g9hSk>w~_JyyEn2VQxLR$McT3N)#(I2xeQqvQO zjJe#U1xW!AhLEglCOPf7s?XB5UuNN|teTN9Fz0$Y!wX!J4sdkKkh9~=Y(-xdl*&!p zCwf0)P^(R{jd=0@q_*rkJ2&({0>r86g!Z@l1*SC*%a|?FPGftpaAVmO`#bCpaT5qM z26Y)IJG*PPuoGDgUf3UWoGDs}aM%~mIWkMSa+`n~+f%aVYjumQ z;N~rO5}UlY&D&8!?jNScAq0z?hClYFPr}Iqe81+_^3xJA=i)plAxyl^4cXD#bF4!H zz2Q-SLbfo*X_P5Cd-rZ88n{u!$J2q#t*ZJqVyy)W-m z%Ky+FKW@bZDXfspKqVfs-Ryp<103}Z+v=d#C67;AQbk!gronDfBmDWvd})j`B{>}+ zTI|CPVfikh)`Su2}jTn9R_Y=0RKM#z%!{Dt*);d zLo1%!#^Pv1=IL7^epv~SZwNZ4!Mrufn(oiVIg=LY4%Wh~Z&$K8YL2QO2d^{@D84e& zO^k#r-#0=o*Mr=qZCHUv__Aaqv-X`uZ&iG$Pl<1F$WS~UDo=}zyu@Ol|@&MWV$?i_ua5np0>Y7Thh+=aJM6lzT!fAD+hgp3K3N z(NU9THN#HYVrkCP^+*(d%wH^J_7~`(SNACuMjz@3J%|8SI&dS+b>iI?8`J$_I6B+O zejdj88VCaPfA(&4>ODR%tzN9C6^Q@N?EA%9_=5=$<%BvMgov=pl+PMKhp~GBMd3^t zI&qHfD_E@RD@*g>HbP-b^e@niScHYBOLBqJ#Ql^K| zK?D~J7E}0aGN%R-ie5wwlZ?5Y`o>%A`Bg?TYS-aNMwW1)PgLwfv$|&J9sgYFDv@QR zBOwt`9(y96XRl>M}{{GxsoH@W8ZAsV|_ytb0TLh*{_wwyls>@rFtVbB^^X~RFt zIMxW^I37HquOtNl9pu~jRRu-A3MAbvVeqIPoPHN^gztBInYVtuw$MzR1}3FIXvo-8VBpUR z1OQX1KkT1?VS=HyQg5X$mhn>KC<-yAfJOR6qv&~!1Ub2_dg2mly+T5VR)fEfasiqr zEdqtxQMX^v7YC2ocvXvMi9sJ8qQq^^%J7LKn=tUA71POXZ$}X8PG1q6>IlF#Ew-=U zx$i1%W2Y$q!jN&Y)I(+6(Kfx}fG@e$jKlR;&47=87%Gd%gyrDz-M%q=`%H!$VRqM_f5{`iIpjS7mZUk zULVn^e~IDT-DW8ch?Ki7C$*aS9yH|ucBS!R9}6#8;k$`Uih@J5FA9N&GOKW^{1OB( z<&~IO&}y*cdTeRAVa&(w$)yhKT|&z=(yQNV`odNn*Iu|BLOt`YjO2N6Yzn(EL2Ev~ z7*<=+tEs<`otHN@=fM&osBbC?;%5qxEDU###mV;$+wg#Ek*EvdV9A8`T%O7a zM;2paXgytfjA-E4m7wBhvF%Ok!54W$EC2ZcBA8ffR=|6t!%BD}{XZ_Jq_LV43A(MT z{r&j&MVfPsoVCl|QZ4ErhAT!{a<%;mCVK}x!(h8u5a z$ZzgrAw%^&+tX2$`MJFvb3mBAt2rNaI7X>crbKV-M~mCk*Eq_n2_JEx7y*F9;cpf3 zZDr}NyGK)5%n0H*xG_fi<-I8(Olx%2^Dv5(l@~E;Fa;QOV$TR~=7-2uXr}QOcvV>V zbD)ju;JVm-;cqE8*A6t)EJ5$Fz*`@fO2_c7XxD^h7yVk7e!#lG{<#uELq$K|pXbo(g?r%;PTtM&`e}`^2SlM^IAaXKC52(0f z*eoQHkW{;)=A!NCjp*vp)2ioKTcH1 zu;(Hm)u6wC!($i5V_MX$^W_Yt-U}2<3g&*Px-@wdF5K1l=Eb4x%FfbZh{PE zohEN*OcOXl%8)7!R(1ntX5z|N^1RH$yg4f&JvEH8P7)m^1ZCL`vv-cws09s0$&g&?ocFjO(GgiZ)oMgOp!UVl3a$%Z%d1AfmXR zj%o|KKi({LpRi&gv2^#E=?>|zhoJccC`(kE;)DR!$qdX&?V9kx4J?D&BiQ;B5h>m5 zo8OKEA966rZBc3y<-QJ&I}#&l!PU7z-il+@6+efiyKfUxvm>S+N)Jd_)3Ba(&i)Ns z0ez|}BR{>xYT1(-C7~m3-921M+y@rKTZVhsKKFlOHSJ@`>*@^7TPKj|ag!@-l&JJQ zjpc;3V=?JEIs(|~b#a&#>j9lOXp~**1=GXI`GdKh_#(OW0|k>C)7FGobY&pvL-caC z?;-?{vu7JIh1bxrj8>{sZaG4`lQc~_$yTSfP5fOpWXSlkhmc2{$WDqlb#ITrIQyg1 zfq-3wJ!SH$ahLlT3?5oKWiIbr%qD@6|$=6ewN;wEsGD;?I;?qnUv_l&jtmP+NjFz)AOq=?YO@A)6 zE-WZZ`4|>ZSo?i>cCrB|0rIO63j%c&02(89#u)rVnvvhilV~YJ8@5z!+|^WTwV4hWRQaAeIDrv_i-}( zq5c{0y3wHmIiuij(*_>#kZq#lqlBmIK;qJP+0D{zkOlc|D)ij>&i$5S9dv4edD~8I zG0#D2jUb zl8a`!WO<~-oyj?%um@6pr2ho4t{l#gBM%h7_4wMUf8m8ideE5|qND6+?{VsZ0m@Wh*v=O{g2fsG7( zkyomK)<7ws)FuKE`*lw;w!c&EpRUh!q(|!wzIn=L2z1bgX@nB$uH$rrvx#?-S@`i$ z{M+WYJFhc>b#MzSKn|Xj>%9hS{lsf#2ftA=>ovw|)?1%^BYUBrlu1w3w_^JO7JwDQ zOhO${S!uW*dv=p8NuAvv9UmW{ZPL#0Zuv@qUH0o$TIT$4!EPANxds{sMHPcXHxt&~ z1%UP$*pa>OJ{#byD;CE2`p`nMVUpgkp(*{&4yIqOx;x!XaR_Ex_jJ0VH~@$R#J?SU zz~P-3VXcc!2|9xV(}SU|@woO!(D=}q|GK5yXInA>=N_!^FHe3(F61bek76x2@G3pz z%wPa)s`0a|!V`%&-m(o_vv!!h*Pv(tE{>J`An(vy!9*2PxcLBr0j2%00jBxI$_@l= zmFBu7P?&ld-DJF?HDgNr!DY%@Jb&)kRz|J*&F8ECL-J&&S` z0_T~NJ?gC3d*cef&fF9eOwbKK{k6Ge#h#Iadiv6OQ=OBAwq$;v9kM*?Tvmr0mUTWr zGaDs8I(LidtMs88rTK2-gB~KRX=MS2Q*bF>V~!IPX{uUjk5Wfbi3C{~F^PV`I}Jg< z3t!g+ThWt;Pk3I2LA`QdWRefw>25M{rxjAOdb86V_wx$3a$xmBmyYT;Y!4@J9Y~!c zJwWt@J&g1ygv=JrK9D@rr_Qwac4?*M{RntoFa;)V0-5ybePO}adzKLqTkR-iC(+=!Uwy}U6BxDv?afVdixWklT&E^RlNS!VHR=Pr(Bdn00$ zi^k#D1>6RXl^oIgh01M5_CjV2k&>;iH&7)QM>4F46G-BvNgQ#7M3wwI1Pc(h5h9^+ z&rQk0VGU@cX4-C=h$fwVXkii$JfO(NG5H5OOngP=a*wp@3V#_#-Y=fYE}Bmy=$>LG^AJ3Jjl5?Oz{Z*ep%wMT zzLUt;n+8d|qj%oLd+Bz<9}_M^8EYFNXV!erTh&uN7eN*C%&b#;1i{{X>5hSWHb2i4 z5o?Bsq=w<@$6>ZcvT!iOgf99_!DPb#Itj$% z6l7{-BjNAw*V*ogEA#Y`sww*58KJ$cZp=-u5N>3vYsl(fH{DcUc!t2j&yHjQiE77m z`3X+#Ja>yHZ*4I$Krl1Q>U_gh!G+3a#+{Fog2W&9>D-2AmtU}G_>+JU=wUkHmBz^~ zAW~;7Ao;i;NL#(oacoTD8}wWEHXT9ttd%+43TkH?MK}JhUNJ8)l4>{?RF*Ma9E`W! znEu4}WL?`5+4#bI+XhTdg)+Gr7WOUkK{P^Vh({YbM-qv?1-HHY@R_&aBit5I+D@Qmo0` zWo*je4xN%nCHbH+2fMFZuXwEOHeaLEu*d~`ht`{dSGOxadv6*}&)FBD2Ow8?>}8sm z5MS)M{KmMfTvBvTatz{^b@!ytqe1Ipk9&&8N)~|kIo}$OH#u10bdKW5nP!WOJLrBIqUFdz=Qc%taU0mFE|^cSGRvMX1QIAK9~%W6W*c+btkzmAp4*e@2ku zv}(OI#i`{yvgWFx%e+iSHmhuOT;t!M>%E(-(Gb&2w_DPaa)Z@76mD_nFL>Zvpcali z!1~kNIP}5BKCl#nrx>pbeb`BWw(H@5FTqm-4?3KosxaJL5 z?G9xZc7Q>WLvm21TnIk|pnqd$pH*<^;3iFnY|YgB!!lBjiJ|7pgtWA{_6w z?RO=vY;}&SUX)`Xxdv&7=elXtu+&s=?SF=-jO1uD0XR||i#ZiN45CjX9g(F3t?7s+ zvbO&hQ1@+5GDFgYFW`>lL|1DdFlos_vug9u{-OAM?tdL?KbX7qUb9WIzp|4~t1e$d z-~8&ZHJyRa9#+eua_(T=U3&D-(gNGoAy=}Gdit&n8RF$U+i(T@s73|%Xpeg_*r?1D zK&mBv9YL)X3^R?WM#XG7K?kpbKZUZ`E01txs|Av>dnW6UQ9!qsB^35HC`w!Et1Rsk zrHJCCL;!;nqTutsthO6$hPbaB>^k7J>+$_i%)K|oPvi|Gq^dQ0g7GrM4W62PUT1+m z-+jcohtT|G9{hCTWNc^BF~86PUSP$o8QQGf5bd8eOf$AK0&UZ4egd5#u(Fc8g$y8U z^0c7Yiaq&BK@YjhG9Wo%oDaq?aahnno>QLXR6BprpdLwh7&Sf7r8-wdx_p)Rd+aKR|i8}%f2zl>_ zGaJALfDAawcT4!j-y*&f6u}I#?Aw<@p_k{4RH*qE6Vp78dcI}>yL(zqSNzbllA8?5 zs4%l2cs^X%P34@mHd8#IFjkaRKoe?l=X&bX@obXG72Mn~Mjc_z7mbA{8bJ@*){D#( z9P#S~jv!-$odUEqt{>DWiMw$zMYH*aJLtSgmNa)XT;c3h+8?-hf;jj3Nu<)gNw)+& z?F}sRus0b|NX;NBe7{!W#iSoJhNJ&biIoKlsTW6l73x92;1L9%tYsmv)SI@GS4zz_ z__B=?pLo@B(!{$kGQW`rj{d)|??ZQ9c?>IelJ2TZUjiBm%+fi0`dGIhkwrp?w}8Ka zxU=@o+7T*Sq_H#2utUF95h@p!GZdt)At^Mvd>!&Ny9lpircp5<$fZ_YofM9kb9zve zB3dz<_dR1O37pt&C*A_-UBrdazc^54H|AiQ= zi(1?@q3%>0-c^NIe%x0%gr&+9@=V22_@>AtI4X>c6#HfmZDbG4KZK3S zn#$E>ezt2O=Iz!G*%N2^^2iF`2?j1e$u{#qFGB4TG$mFL)qanF$Ni9HmBnI2P{fZ3 z&kjJR$TX>OtA@$qSkzy#dK;I42Ds*&RYa;WcR?u3f{MasiSX7v!P>q8@R20WZOJa4 z78lvJAIY^M)>c2IdxEePh+bA0D%uvr@@-4d;f5yw z3d$qv&{-cL$4;?d8_?D!CMH1M%r$d1Y=<>d>tKnH0+Bl1*uuKeXO4scZAz-oz%C%w z+8xYhKVHOD58uPeQnR%iE75>?Vk1EzhtF!$R?-iIxZLz~!($=)wD$m(8b45Qj9H6U zl|)J?`B>OGdnl{!MWBR=ZOw z2Q4Fnx20~~U8~+Q<@_DviOql~DL#u&HGGKF7UV>Yy1oaX&A%k-dqGfu9^rqH<#bC& zN_UY+<$D0YgVP5D}^efm<_shzjII!QE;CD zpv?VrLK!kxvw>&rNy_oOMSp*znRY|tcm$y%jG(Ic$OTzNIYuyE{vDJN+||>>fUGz3 z6*8T8tffCU_0E=o``TazY$2Q=g+-Y_8Spxjj3U=<9v-5NoSt$a9?00cpwbdU^|tJ< zhL9h7CqCEHu-lS(WYHaa`8bJTDfBBaF7>%2`>m$QvwaCgHq4TV+c$vU3L#6sLWLymJs7)h$x6w@Z zI1rKl)z{vqY<8UDtEURWgzU4*4{jmnM)h6EB-tSz=Q|o1k+IpiHRHJ9ZMAFpd$Ek# z61c$ZST2p>$c01syDB8=tsaK{ZVcTOb{q{9n>tj@>J(>?CBCLwz7Foi%dyG^CDB$pbMR8TS1L6iMMKEG6%bv- z)5D{d3fOf5x!+T{Omf0#J^fqEqM_T?x&Aos<-IOa4Vcz;*esTiS#bVXK0!<@Gqn4a zXB8v6@8So{q#Qm3Epx$tV?kz=tCVky1gh9v@;lE+01|%o9L0Kw*(%peE*x@3Y=O5KWA0ui78a4Oal_ zsA1TB6p8UY2<7a4EV)tVURLI}tnLgF=WpR<{5Ys^IK|?w+)Y8u8s&Ja{Oj+}x1{P= zf<~H)K}lk>8m{ONsaL$|VXP2hLvM1e2$rU|9?u0pvc}?Wa|}a8@4+M)vwKXH43h4(ysna3QuknwK4HP zaZqe`h6xhBSa0mFL&z%Or11SWTk-_Sn(u)vdeEt;l&>`WE+tERf}~lvpL78`;GAt9 zX_p;|nuFgZRYIyozhvm`j%#%}x5kN2`bI&@v25jDfbUXyy&!2v-w%PgT-`jvmWPv0 zH;perL+3lq4-FzEUHubIV*Rb1ZS%C0Q-ULXg=>*FMv!4o28y3PKcz`gu+U~c+{u&u zWjrt;4~j#^Jssw8sT%WndM@E{?raIC)x+>Nbhx!l*jlchC9Ipat_fUe)~aGnHJu?=KOz&mFK zn==W|Z9Fd4p{yg;pVpKES1`|U`*eCWxBMWInb=qbQ+VQR*ynTHO{j2j!AL-#r}m)m z?>T(X;wjXz6r&N(8V)yG_OmO`7IDJC*;W^$jzXEKCU9+4sloqDgph+Kw-cfF6yjqw z6v_i!^K(Lc!dw{g+|G0Erpm6~&7WDpU->yCu=p*w9)l^WU^xmJLt#lW_*RFD6D*z{ zb{0zx-HqloMgZ0AY$(6WSRBtDzDFz-&u^aJ1lYscQz^y@iG#z$w;RuLSYWYT8N;yS zc~asw_LXTB7&RFD2F(Ug2UMgZqIfummj#5Vo9T9tc!luY!l^E_HCQyJU)f}+tsfH? zuamcX9EscD$wA*Jn6joT!=34o_jDPnwXvd%St8=Y4q1!8LKi-&Qjb_a$lB;wsKHu8aMj!UY!=uAIn zCH-?V9nS)!S9KgKBo=KbF%|bPzXxmNqxXdjPQEMnR_HreyjRqD8 ze_wE(q+pApfa}Hiu%ln--lzSa7V!DFA$q`qdt2xdV5F-9)#sE4hb>XXE>A_o$Q zsrBV6ec3PraXE^IXyyJkgo@6CFa!W7kZVeW3X;+$a^vE;R9FlQ_2tld(QcxUlcotJ ziHstOh#>u3glBjE97e~RS1;+utJBA=|C2<65_4~Gw!vw0zdIOya2+g^?$vah`E-LK zS~qVbh@ecDMU6FR$_Z0_Du*A+Qc0vVCBSyW>i#_!p1D_ zp5CQra>*DP_Ok}6QKd=%f5pWh^lDDT&!SWU_0A8*a76^v`SJo<=&YFeYoqIvDSVVw7UEDQCi=NgrM*y($&@>4td)$<&iI=+$ z@_kae-Em<;ly}Xr_2uE3?d_z!>ND?Mg(u4$q~xfxHu7ChSQm6nJ#}BbE{pPF@5Mfz z1#<@I2pE{m)S{2f;z^DNow-a{w1&j-L69fugp>qxWLW?^k+hc$>U3Bm`lVY7=Bfh0 z{3kp*?s(QE^zv>--y75+L<0NDkS|VYf^U*G?TFP?eXv^70!6Ej)(BXU@4qXn*fExD z+c3M7C*Vj(#`L*+XdAny6IZz1m9k(Q_ocnx%O zsRCeIp2~fBJ1cb~*)Tw7&c;HCYI2)7C~xbXU^358ujH+p$RO++2r^DeJ3%Tr|B&J} ztl02xkOUAfbYWBpJV2smRzICIwC$vE^dMdz&~@KNqK>BYVT8;^_FEgaGHq|HDp zc*f;7%0?2@=iv(A^M&HLU4rklY6u7-!`j8e*(F1f@Mw}$J>Pyjp0E00@KHJ+s{?D1 zd#**-q9sVM^aJ*!#UucS-I~vm>*AH$=eT1wPvcwvLBlS(Jd^tygG+eq8=C$t%&}mW z6+A(3+ex`Ma5BqD@3hAF?PqrqYvF`0%T63qDM_}+ak0%Z?F9eBEwiI8USvP0Yk&e+~9hS&ecsW0O>`7@x_JiEB};M z0SS#_%(7<8N-L-dV)^w6f0zTij0!doXhNpx#e%Vo!DTRQ}z zw?YnVu{#x}yIdDP2n(3IP(Piq>QJZ;zq72dQlZV09L{s@9Tn)c+m~B5RuM^4PUO!9 zL%`VSlmAzwe<>Jf-f^g8I3V}e>KQp@K{MDlDa%e!k3J?4quyvOEA5BT#xXwZ8&`?Q zHn}T6t)o8=DDz&otX7n*7mJbC%~?Ef$gxbm4sml1y3YgZ@&wX2vqS^nl~lGz(FAF< zdnEi&=Cq0q8|xQ@UpHFKlj9fZp%W4uBrv$%_E1-9!?aF#XeU3(MJp(md*QbDjVU(> zDtd=g;~Ep!#O~6iFj34@7xT3wP_E-Jw}sjqm4i|;zI+G+S>;#A|0D>y<;d}<3riKM zr?Wyeo#7n(|BO6Z?}0SFcU#t_#w8IZ^lXN46ri%fm)7~fsf5|BM7WOcf8GG?#@R0Z zz%7ZZNSqSk*oXffk4spNLY9E-f1`D+kC3N#vsU4=MSir!yo~z!p%&P+dD0qUtTK6Z9!T?$yHiFcF+Gc8rqeGlv`iPpxjdoMIDObot29W}-#2 zTvhFlWqgW5o+jhNf((gvuS<~c^`U|f|HdHu`3J?WRZeruTI4hkcDdMK&%6YyTJH)% zGv9Ndnfy#P8?mjlMdXU}9KyldhaqzHEmF zNB`HfOv(G84e*`rYc$^vO~!Ml-@d^jSU!Xm^a*WhM6B1^0oM&J9kz?;ciC1oB{;O) z%UTZA6>Re*$MtM~FdC#uAmc)6Huy)stf7mZU0*Ew|#G3BnGv@ z+`b*kSdf0CTc?@qxqQHduWhs;hJ!o+25tOLPYB5R7Q9!I*8XtjnJHjuBfB$QX?G+Q z$J{WCwrVG&3{MQ8(0&Q~VMAFl6dEC_pVgcAY~l*bntrUZ1=in-+fPM8`VZ`1oC6wk zD(8Z4=t$907OYwypeJJ>^V$=%aBQ7vz!&V4z6= zZHb~|-FH#oSIdKc0JY_tpRo`+`ss=MLul!Akg6=6!~ZdHr7IX8lz}=ypnJ2)!@WX~))N;9^QF?m-O86aiLOB*CucxrFT6n}oS`_RyaS5a)5 zA1SReVz(@naoCZ%U+tf%x$=WI*8`xt!;>zb*2DLtY;W+ne#Q5ZsO&0G##LZ?CnU;T z+50{ZGjtx75OQ{j;`P|Z_Yh`@FDdEhMj2=4B`K}F@F}}qrUN#_@oYqDb)M2-wBKv$ zJ6t5VWbSmgnia)JE_?1_kowd^e_D)fB%)&&J~viMRgq`t#s@9NoX4N2C05dakIB_* z5{&24-D*H^EW<_Wu9tK(uj}bD5f$nO_KWAR08hMn45l(S}p#s!A z>!c;oCRwL2KP2%^#-+Wje+4~r-0uZaf7i*rJ?)u1qe-yHiP@vxldW_@vJ%&pD?U(1E-z>dXu7qrG|F3rwAqC^=c|JuBl-XaSP{?T=$*iw>!HF4_MLC zmkW>3c$*~Ldhzn_EK-1%6g4f2RglpGMEA13TP;@{Ww;XK*IGm<5N!7Kfjxc+xw2I7 z68nLJJ%Aqtr@8qftg*eGZ1eiMu4+s}!e3~Gs{*7vftmsWy*+le0(ml96%+BRMH)Uj z*G$p&e@Btma>pa!mBM3=X6y zo80a8IV(EXG_H(E?uz6~p}ALYA(#N-%LvRhOzrQB>>kF7@a2vkkekWyMcy)CIZ0N$ zt9t`srY<3*KTzQEb{H-f0azLQ&SM>ksdf@PFV8mF<{{kiU`fIxeyG0(y1%aZ$|$we zAju>+s8mdtT@RmqdU}NAKik1`_A#z@83&~`;G#Cp3g~d`3;19R(aDXUDaDK671Zq0 zT@Wx%H4GB~!C06ou6f6gSeAtbnqg?`BC-Xq2@6J;SGP@m608a>@YDjbc(8CzU^J%@ z((iMH(PTQRRnV7$=?};l<%{DslGDfWej~Z3=KV4f2EEK(5xn#q2ISuN}EBYi) zIJ?i+<+9$L;2PYNOH%|OtnqMr*qo>Q+74)(`5<705U0^svRdoya>@cyH9bE}AWzv8 z{gL)ab*0OXww`=E6BJ%n2e*IJ4a6vyLZSXib%R8fC-GzHv4n9rU)?U`DK?bYu8kZ2 znDWJ&4}#zqZDtZazzZSxdvYqiKhE1&GU_t=ARb+#4qHh z_aQPBH)-Tv#fFiK^*y81srD?8eXol{N8)ZP`#c?m=SJo5szGr@@tmxtAQ?S(G`qa8 z!W&*F{%fa&k7+84M#9gdBlrh+IYR;(D&77+@iHnRjuW^kwrN+At{J<7K!Nwg=SwPV zh&BtIA4Yr{Wa-}6_Q43U?2p}uqBGm?sR4h`vSa#RSBv7X4da=0ntJEQX$i{`BlFl? z%flm*dNQO@YtB-d@E7u5bnd}TFe3Je3t6S#YUD^G1ywx_iC228d6hw1p%=IyO1~W` z0%HtRrNNV?3R>IGov?ZHgaufBGd#B-i*cYNNEQ!N1qd%Y>ze1aI41y;GRkcs;6XOu z^{O%9T1=Y9oLaD<{(?}VB6CAD*L@3D10}Mw=lYCQfP-ewYh)G6VUPB)^B(cs^zqV? zx4oh3v$Tf~UOqaFi>7LPRh~U~E(hb4i7ACXri0-s^>xb44*q06y|bRYF?xMJQxWb| zSjVHyn>miJx(?C`W;Y|{{dF-8N^@KaVdJJUccAnaXEh%~jf42g-gaZVE;*RdlEXG3 z_!I>!-M9q7?$nrj6G`dX*o7kx=D)nMjwFK{KSJqGM7{-MT5PaHJ}i|OM_J;~azC5}2Gc_H_p%N>12k^RH#J`+xNGuz&2xNml$tQps z=EufYcUb>4avKh_f~uWXVDQ-*u^J!x&QtLJpi^LgrX~Hv)s$dL@7a$dYvgVgRX3Q0ZO5-`-N!J9cZd`V3?rh)N&K--SQsOK{&?c-uYn$x5r+9}L{3qY6f5bKN z&W!wSS>RDY>CZt1uQT>d5RzmlBdlAe8bwnhhsk#=(T*h}!}lE&zM|@fQ2JoM`H-~1 zJVOEw1M2_%+yZ@R64*r}3tEJvWAZqV@zvqR>kGg+$MtqTg`bUR9?s_aUIS9Rzuqbb z>!-$l&)y*A^Q}Fd`SF;wWByC90td-_*J*dIRwN9SD81_K8mQK-BFwI4Y!hYc5us1F^eQiSa9T5vA~e<5mse2Lvbo9A?-w zBEl+I>cSoltSVyeUio|CXqi|EmyE75FToOUz{&C3!OyRPymv^%;ME+J+BtpE{%2N% z+qdVJ+@zB~A)>B-ndJE$C|~K@ko5-jZuIUKgNBk<4sh_%JFN&tSvDVMBSq4l=WH~7 z#$NVxK81SyLI&aSDf}sK0Te@MZo#X3k#f}fq|@7ugqaJesgF~5t)MgNpnO!P|wP&}|xSp;5eCNV9| zu0Mt_NCr!C7@N31jv)-9)_u0#mEa$M#!kFgkT5x(FD4%!ee9| z^>s?i?DY>*>6cc#@;gGrAjaQ9KxvH{az9IS}Bk4Rz z;Gs7VZfcIVQLyG9W*I`cqdH_KcJl@^tffn6`}l{mjrO(4=jq>9-!01v z55ZJT0FD~MX2i3hQY4JO>MT@nmz`zwh%mj8V|wunwvAYT z>8$|#dY(?}jDE62Y01YE0$G${=MS69NpqaQM7_ep8F#+fg1$6qh_kSwL#^fjoYmFLOMbC zS6aJ+dvrW;*&0>$nRck2jedG1^3mT_X{ERF_C^7_a@b7F(EunCk@?*eGHshH_hRGb zVt3Yjj+Ky?VX$E2P^*;(=Dp>?6P4s8A8tLI1y&?6t|ZJivw~75M+F2b8r18ZoncobGjdLND!ZRAcv>YC{HS(kF$p?($Eih zf9A>+K+OVwG$SRHtcuyM5an#kcvOdC&(){4Lh>cPRIbxZl4bOWZCNFoOgAk1MC3p= zK*_PLRPGG=GudeDXGQK10%sxB0i0|6b^;2u3V?bXuN3=t4{Xk95DONK#rb1r0)9ae zRjHKY>D~iQz*l==m%K4CGg?B1D^Fs>Tb5U$GPsQ{UyN)p$6@P&w2rXBXC$>*sH6Ij zubM(Zb@w|xGXmMJoKc~{7C}=;L3UMYVPTdaXe@-iimX(_|4_Ub4WX4{W8fLTVKahj!Q7$ODZsOj>gSSm2`t zYRI)6FgPWF>oYDvTR(S%-M^U%`pQm9n-SYOvPK}uTh$tah~ekF4~66GO||A-Zygg> zo73ihWj0m@^0*kwc*eV!qpP=(FImIGEjIl`Qz^mh)aSxP%t)+{=yx~0FB#kP2f-yG ziPzAviH_fIE31)Pa8Jb!j^Gudc}c1u%%+ri0X|AWzU9_<`fhFAC0R~;coGvKws_D= zOynun&gOc9kQna{W7J^Z7B<`>mriXK&VILz#o@G^KgO?cuRbM;EDs<%;-*C^CHYV z4})^`!!K}m37KJZ<&s%9P{gfN5S}3!EyLPg5B-YQRDOjCJG@&0P)H_=#^=-l*(%9+ zhq_7V7$5F_b!8WHkSEAU%MW7GfU+silOlwqQv~YJ!P^1XML+4-83-k4vWL~*DgNL#O3B?#=|WDZ*1T`g>Nc&d1-O+;gTN>XU6{By;9f%X|mU zbL`~p5$kQfW5d>_Z*hWuxQM_V?aX{S^80 z#Il+I(XmXEI-kiR#(A&qpl(3;!V8mE1(2I~GUIXGQ`ix}L(VjuWrW8wTXH$Xd)B*! zrX^EDfWR!Y0*!Uql-zJ>F$^B2i#$ROeAgb908>OzwJ|_J?2Yw4RBja_po>+~Ki5eX zT+qUZNQjdQGyEB^`fM(RwaSK~b`Kfhb+3X6oO~wfS1aUkrD@f+O^)}V$rBH$?Gov2_^jpI>x<^Sk&is3cTJoYXD_^7THHq~F zOTcTJRn8D4Ycseuzl`b-l{dSM95rYNls^7{urf`s^}8F_jj4-N)b-k(grAvn+Nks} zNjb{M=4LlF)XkYLlo$0dRciGmSPnR(-|6lL=OQ6pW%i4^y#^or2y~uyB90PSznDsj zOzq1@eT8;zRRJi{E;dIE6quY<`Jh6~_b#Lkb?~0@cL_?G4i^icwW_mmgjdIa1oG3I z0Fc~20hx^Mam}8`17Na&e_rd{hG8*otX}a-7v!zqhjnJFo9C^^x?AsdY5~*p` z-UX07MoYs=a*}Ad<+UK(`{V<_G@oE2^y#*|kD@~O~{g&W7Mg(y_HnVadjh~$RGxUp_^>jew2RNr+eB6i2iQWSQzd@7{E5cgtS7h{VN-QhL9;j_JwfxHE^oY2TPl(%3h-2LQl z=|MR73FJQKpt384YLscIssIh#$Uk{O|Am>qw2y#@_@*k7EQyE?3LM>tQtm{p)h4Go z5C+WC$g>Uh07I*wyk5L(SwuRDg?30E0voQpFnU6V7o;z_9J&U@?M;ES)TBVR(SViw z=~Bt4!0PRg7YK&lUbR>D8Dw^X$=9Om6$7ROZg&=w5G|jk*yOs2TX<*d79X;%o`;+z z{ORq~w-@0j%{C`u+WBR^3Sbd%{~6Le*5C-h4n|Rqng!DeS2%Qg|2NElcU_?6f-4It z26KM1a3bHL2HtI9P5r9|-$fZiYI~OhJV?w3X{;hTMow-SDqdV|gd&3CF-D~ObyQ2; z&jxu*26(0^>Js*F%#xWRreH0`rWva)9X8<#oF?aSWKka@R9s{Pfp|byHhv_Z^sjo4 zZ(xk=3`X>dHRxMExCQ2>W zh{C`nVZQAUn`z0o;rxkAsI!krzCZC@1=ex`;4qmq7kh-J&MV7W!eF?SPO9WpSClj%2>pn)Y~ zz|Q+7^p|=M}$lR5zEwB>7K&Qi=R$dFAL92Z0c(L|B=v$9ixlM@1{qkH!8-Mt%n&^4+ zoR7d5OS%|QEXpnz+Y$iRIG}1s$yX=l0fV4pHKh&pSh{oTNm5XF2v!rKgl-CQ5&3by zTxc8D&p+CH)(kEpN9o*_5N#gm`&b2WwDf{qg@fUt$n?*Vy^*UAr<(f}aP9p@r{lg^ zWETPW(&d`NzC#q*bk-f#9iV)~b$=3l%WXNUKW5mI{@>(PO(thRDtE5f z^+vA+;@ihSKR3n{hxh!nnX{U}WB(1>tU67wJeKK0-U19vh7;dszu~EaLy%3T?;x!+ z3@%X-)(cJsGiCq}oOwcpTsX~{FW#7rcJ#lk#^Dd8pzT=x%3^d8kfX}~<`2G|uA|;l z57f5m!4qmBRq^_mS{B@8PUV>=1y{Tq5@IOBU6T*nc-_BB1vArM+|cHa+5MNYe5fg0 z$!TbdSkUusWfwO{`3;46=vuX@ix<*j1(l9e(?rfIjFqbr1OG4yX);~I33^_h)puN$ zI;l|13P7$mrRKfW^pQ;1wI3%;5YxsK^dN7TM~)2kUHZggG%f#xcuk@jdJ%x4`Jlad zogdy@c3|J#MCJffG(uplFW+LDZkh>>{}$XA;0n$DQDs01XUnA+#BH*+%QbVa4+=^D zECwM#+TMeipC*SuXgp=>wmPZ=3~+d7njrZlNxKUZGxVxbHcpPaAWS41XFomKdK5K( z*wd`vfkE4^Zn>$)Qk5b@NJ5Hu*$1DH9t%s%bCZqdX8h8w`*@9-cr8jFN^^M;224nQ z#DE>2s(CxiRtiA5+*;(koXEs99s%e5y_R|+LtP%nG@Z!Z`>Ja^f(ZHcNI+Lt*K-C5 z?_5))Ho~tUhp!1i44t?V2B&y*Kromoq$F09MXU?hhV@MBv`6@x50v{>rak{RK=PW* z1~W~KT;%`v;gX2fnwl!f*#XE!X{{w6(A{_{nCi`;MOD|t`tKbsf*w!#be+liTAF_w zOCC$5dNWsebZaLMSZ@Oi;z^!QJXTP+53y0rmqRw>P9k2imm-FGckxq;QJlT|wB+}L z6nswQsNJFRq%q5~#6>#xy!uqu>v@T_wcVPNe?bubjxt1#(dC}IDmTn4FPB_NcK8a@p`Ybvp^vq63&cL}YpFD+i zqO;5bxGBdwc0M@XuWeUIW*h9k(wJC^38B%a_?&uJ;20{IW+28I`wy@AWFsx6a1G-B zS~7@Er&!8egagXYm-37H6t<3>$UgH}?qlqKoSboNdowvi(Llp}sOEWl^m|f{x9=$c zL~Ch2Rte-jj1#D}=RS<`ga?*)(gHKTp~pf?JrGwh+q!usXx8qurCexd3ui!Wl|o?8 z!q<)3d)zWFU-bR*f1B7xDRJ{WT2G!BN6ZWd@ZzqlVIP%O55ZH6OsBxOzL_uc4<6HP zs;}4uQl=CNcb-ua{7o2Hqga2Dwi@UF2^ZRR$^Boqb%KvF1Kymv)Q#WC1t+s7y7Ptf zLBYUbu8CrfR;<@EjT6@ShqGh_+;GNZ?ST+6rp15UACCNBipgSoP$ogTQ4XCe@97sP z8z32yae-?x(?jWe#l1oWG4c(=Bd$DsNMw%QSoM*^y^M_IJb3dQlrU*an-r|eNs zmJGj#&#~hHKaj{*t3XsdQ2rI3Y0oEDCeS3$ z&zGG02u}7v#}~cd45J0`vZ@!IX+|>0e7oUnBSC^KI**7{y;J;<)AIcFSTZHrrSU8< z+b6`pIpbVcl!91c%-)pn48=g$X$LjP*f<~-+nw%n*CEd=Zm=T8C*YIv0-D3G6JI3$ zx`7&O;3nfK^QgPe$cI6DM+s>KZcfIO0=thgz+7Ad_d^1#Dw*<_g=mJd4pGJQjJ!_W zGHrhx8KuD7CNBEty+zg97>k7sM{_0iJGC3)x=WWGRLUKsq9Eh}gf8!t&YI#}ouezVlwM{@RCUIM67-Fb z!=jcubsQ_QrJh5B&y_iEPj&7)ln3x)7=Uhja73FIQ1qn_E;dEg>|iNjScj%tRW*LV zD(HMMy75F5Zl@3S&u7jJyNftgmamt2IJP3NxWXj1C2uveZVRR*4>K(3EboP6ifhAG za=;aNi}j!nFHB84!lRUa-h*C7$_YA@fIv%XzCy_7aIX=2kvqQU#VZ{SPJZvP2qx7i z%uwIP_9W)rV{&9UMf(FkBqT7}Gb%wmY(KIPEEjGJ&4KutFE~6q4jL~TKqSlwH(18E z=qUaOLO%+IucSuV)a^oGNNZX7(Nz~cAhn^izGDrWZ)k^j!lGYcuyDGp>MTIv$1@ZB z(O?@T&MKZ{e&a2^*j+b@w>4_^pG;EcstzraH$*Y&4RwW10U7_{-1Gz@S;KHZ$1~Cn z-?)O8iyGkZwox2eA*~oJ7i@#^$hFwauw#u@uaE26H6ev%!5V)wL6hixQKPoJ`DBI5 zsH4r(rPV)>f;9T-x4HYA&9sdQn_BFD2qOCqvLdg@_)B(e(uTi8LmOLmEkf{k_&kQc zgJZn*%Wm`2THu$764N#Shj(U^vbt7!mHDh z47O?%L|mJPv*I>ojy_)ZNFP5lq}UsMn9)dJg)P3Q?sH?WGc=I)RGVs5%}t2w<=hWs;Hv&ujMvL#b z+kLH36{&1NZJtUs4QYGa2CF2i0fm)%JbzkdBV-LRsg*WuqD;R9iP$qu3o?Y~Buo^_ zwO6=+pvpbK{~>5%2}VF*GW^AWTMky>EG>C<#_e4QA|laJGraEBSWM+fOur1=TJq@} zkHVG{OfDYaeElAW+LG<;0MsNcjhPi>o|cY$nnFIbIWb#5jkv?= zm>Ns``p@B|XEvA*V95I%LX6sHBLW6UhI4iI;1%*#e8|n#M>@W8%TX6q?SAwm2gjsA zE5VbU^hsRwPG#utni&`^{1W1LN}OG2B08QcuT>u}>`Vpv6OS-!nZ0HGA0}}W1r!+H z%eNPz==I`%9iM(-nkF%2QoQcg2MT&K_wd z64JRa!nYeM`Dj5)F&)Sckc4*kj{$oZ%x&nA7{7q^((}k$@Ad4NDtaiLwoTfJT={19 z59wvDSHWn_mJbHh>~hpBjdD!OU2eGpasiBdV`RYLJr;e=0@K+bSM!`Xp+m`udA~b= zi*g%Mf2YwZLruaqrt+wVgDtV3){gZp!5Pud*{gHYB0CZVr~5`)Dz#!~MwpOB^y)FN zD0~4+6?yVWht+c*h(`&7yrYbyL}CG5b)=|wKtP1q$QL6_2ezTxNF$wFCSM|Pfv+cM zpxs?_@GpIB%+W~K<9w#|W4)xCdEXOd7ENKs|NShh)2wZkN8fE5feqeou-Gvf1w&EG z+XlR^`Z60lbg~vDtB5OXiX;)*!HB2V+cGH=i@vL7?u2dbH_1@}+;(IZS8Q*q#=}y> z0`L0g7?-d(w;Oe!xuKM(zP(bC4C-UJS+cV%A|&_Wj)1day=@F9+X1A+_?myV{*g}B z#b$%$)F!QOTbii6u{AMb*qY;=jd!Y`P6QX1(Z(3t3lBs8K?}O5gFQag?KEE2@lNEE zcGrOfj}wSKw#9^y;IlvdA!#V>bu_yd#BPjPBmjYr-$(oAFQXm@))~SLg9ok#cK@QG z>1DMm!;3MbkJeIBiTKS=gK=y?!Es_yuOV(wTDd!VN^Kd3>;Yi@2!*R*x!1GAznUP# z$9T7#2vej7!klk>aH}+2EQ4U$VD6kAXyv7ZTr-u75nUn<;@K1@7jkJ(9_7uzIkrwN zkE~D#lpPbmiFPCfp4NVwl0qRFYP>HX&H|*SbuVWNW|m$zaj>an$9G(l+r}t61#E7i z_7+f%6)hvXvIRzB6eZ8QLK;;zOisx8TkRokRlb*ewbzFEh>)dkCzY`<2a zP+4E-%Ckq<&TTGUXYt!|XsM!~2`Fy66At9uSRUaB%I*mabMThNiR{uO5HLXW#^t#h zS3^vJ@D^8~sObgv>f^+(Yr7edd4GZd*48iB4vPahYt1&*BTQ8tGH zwHdW%I&$cKXCP!+Y)mVe#Hk>7Nw-&LA|fE4=bTYYS({y)4Y>;Bmj$9V%0q-tkgfT%-B&zrGA=dE1gnJvo04+Q0InrqTxiV* zkGsc|iqQbeo8_!~y{Z5lA0HuInSUgg7@Zs+*s2`oX{8f+Lgrpj`ei~{fyJUY>kuEN z6N&rz*3$=lFMV;hk`SG!7^6jD5|4NeP%B`dg&3Frih;08@)?_sE9_97je$01egXksf^$Td(z08n6MK(_KZMGA`BNXrehF13E58A9H9D2elkn%{X)SVFE^ zNu7Hta*}%2L|>g>TZGC*e4_Q1yszJ7a(RK9V*>E4vQQBC4WvF3Z`!bULU?@3(lFsj zN=6|T`tq5UAT6x$m?Re$=XRI=j%}TsSUGYBFY-V2)%BP12y1%Q!ZUFDRD$>-oqTuKPu($dQ(}J?(yr z#=>X%j^w>*a~}8SV|TbE!!kt z>rId1(-2Q>=38z4mbOAcMKLx#ACQmZnM&OdOD0a_PiO_C@e4QNp5b9SSm#MA3hU?G zi>|iF2erODg1}9|zPBN3z8-A^8p5af@WAH>KSv(|(#fqn>2gfhhWjJ?^l057g}hTx zw5{f$-oip3V|PSDrT}cX4Quxv_eB66Yhi;bPv+kAlOf?hbX(mJu{ej6+$A7mB@f~A z$=Qa(*Gy zu%aa|k~#%jHeLJEpl2dT^O7Z-Md*R^tH~ok&1ltJw~->A8I<(yprCG1jC7}5D3JUIoa zzIFxVD~%bpC>40NdP7S*0^=$4(!kRRgzf z%+n$V{wcU^;gR{wN`H6)sR|}JM{iTi-~hrYoG=18WB|I>vcha(6$$nvb%nEX3>_HqpC6cO+2lSfWWjqBTBju3$=jr07 zmFVJ{#}Y1Izq&~|X2NWL&iM9C9Cw$K@ySbQ#)egUR{<9=55044I60pCKnc3J=RoJo|`9h9gd9VnI^=hL?a< z?^R%Dl`$(ta*WYJV{TL=* zwckZ5guA&44oZ)`jM7Mb#nObG(B!b-V3!vVqHDX;X}V1|QT|m<*2J-3KjSu#Suk8o zJ*VGyQeN4@LBhxxp3s4*v~6WZS9L!}7MB;w6P$+T>*ax!+~R~iWR!5A#KeJ<7Ul~M z3`i0E@Nqu)yO?|Ta#2)7MzQKTf8-pTr**~Vowttha z@0j)`&kQ{wG~R<*Pr#S9Zg2z9Ll*>6#F6HQ1ufp^j0}gN^-@cORaMwIN7b20cViOz zlL*q&x8l;exG{mUmm^FjM-WfG$mpW}#xikSt$uO)p0vTYjn86y$MM<${Ilg&fujgh zvTAX^MQ6O*wSXZ6SmUgF0Px9cTQWz-8FyXhVreS14H-oZ#iNo*ZQ@IN-Z0&#Nw=0+ zY^$ZMFyl!QgGpP4?;>e?m{+~4V} zrLLUnw8|hp#cR3bhvb2Jg9x!H-fIZhr^<)%%pNO5lV#p8j#vG^mIG{1ndkH`_9Krr z=FL?+UWtIxW_1+=mb+iS{999Hzh3P}c} zunQ7>F|zF;y?!D?ZN;c(53{FM&cP@{sz9*MrQFkxNzD{my23l_6a>wY{;PaHX~jWG zPy0!nbY$HI(lWv#$L7cc%An=7g7iU_dv6aX3(6siV-_IjN`H3_F4$G8dgSIj-sJ2w zuA}XbPq4N!X;{5F+6i^&_=D1W%#|^zkNiR10n*vYu7ool#}SC03zo3VSW02RX8b3f z9n!47`QKjkjEY~8f)7u^_D4o1?t;!#svm{a`Rw$)%E<&fs27nE%}cOq_oi^Kbe<@$ zB>V)!H2EVLE(g;yLA&%$fyNvR9CDOT?*FmCHP>n0(LsZ^|TTbGspc z9B%mw4RTqRZblKoT==B%Et-}Y*|M3oRVEELZ46Kf7NWaTc(iIIw6`r=$dVBjH_+m$RZx=JF{mQ(6tcS5D!~l{Xp(s@5~OARopgN zlQ<{yZO!eN@KKCJ@rReII(4%4z`;`4r`|22*K_2VA$D|6Dzvythd^*B0?>0nz{lCd zd(z^$nMD{_<^%#Vvj6X@%iV39S4Uaa#+5C$u&iJv%7i!U>nw@lt#ZBmyd@^o?KIA_ z3u$xG^5U$Pd{p|ESJ`KidUWSueL}7vSq&%?+pIU8*3A!kpJhK!?upL1;5a^uWJN7WOLs;Kz%bbfEh@T-vaKRSZxTwl#(Po1}#JvRB!ywaTe|< z4-ZYd^r&CsfHVnfojp+2#V&9ogIxAYP!;tdD_~AzUll_*mK&ik@kH0yfrdVO8g)Kz{N-_z$9PgcduwpHDI* zWrLzvvBRR&(R%%Hcx7l6y@xIntrCd5Sq>G{xYugF5yfPN6kLlm6YHlz_^I58^ zZ_5tF@eHrz;GmDDqKB|5D1oc-J)KbF~zd@A@{g~VJq z7g1592Oqky1y#P+p(L+5)0aFPuQlh|t$gytlcP`KrzfqJ_@HoUt{Lg&n2U;4mmYFe zLM&t6ry;}@ANd+nd~PguUzdu90BI>9KUx^E>QH zAQ^%6SGBVAfij^Tn=;kTkc-{xx_~p*!B{fuUY?cX%>gEtI`MkDW$gNW z<9~Pd(Ef5UU63MdrJ=%fPQxk?!mq(i)|5xnDe()KhinsDwL4SFdSz}lki&|v^V5%; z<{sG_mMBb)Zm}+8)wnE|vbSHnT{rjIDnixV8iIOFi^3o=v{E3HX5i8mF`gBm^SMZY}ne*|hlEDwS<*iE?pX z@B;@io8L+TZLJ7H^|uM|L8rdb_(WT1`vxTv89*>F@m(*ZBny1JL~W*|mr9$HZs!G% zD;*`w_#6C*zH<7u+W|ghe=z|2R!U5r(QII}6IwMML`S_j% z%{Tn#-)wCxhF9$W7O-h?(=`lzm?Joz+S)%GYfFTi!mn?H?#_PYx}OMb9V|Ej;5>T=VXunC{C{m^y4q!t6wt`>=g7sj6AFf1cMwd|7Ws10(I$?8vu~y|A(13+iOoJ6* zV6DeQU9hT&`8-M_NG#*i+o)~wB%h;e*_Af-JWM2*3gJ8z8_L4=f}cFnG%Uz+aeD4# zeQcAy#jl*7w2&D}-W}{3=-6<+BfyPlPltwUdA*r{kziG&9-115hN}<7M_<%obXQe@ z)RdidB{lDGqqKPVw`Lkru433f93H`v)< zeCx%WzgY+usS*hLlT6ph32{c-IIc>cVJ%&ONNiXNyD+0+uTPD49HX*!z}((CpjcS` zCa%m0X1@C@C!OK)X$Rl4yUf%3Qbn!}@Q0DZJwMSOnA-&)_ZO^k#S;GWpTBD^UjLip D6^_x{ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511142002-Config.rsc b/MikroMaster/20260511/20260511142002-Config.rsc new file mode 100644 index 0000000..b88af69 --- /dev/null +++ b/MikroMaster/20260511/20260511142002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 14:20:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=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.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511142002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511142002-Diff-Config.rsc new file mode 100644 index 0000000..4ede9f9 --- /dev/null +++ b/MikroMaster/history/20260511/20260511142002-Diff-Config.rsc @@ -0,0 +1,20 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4301c4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303c4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0