From 4ab156855662db3cb72e4cf1ff18fb26c6b2fc6b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 08:00:39 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 08:00:39. --- .../20260509/20260509080002-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509080002-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509080002-Diff-Config.rsc | 8 + 3 files changed, 4647 insertions(+) create mode 100644 MikroMaster/20260509/20260509080002-Binary.backup create mode 100644 MikroMaster/20260509/20260509080002-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509080002-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509080002-Binary.backup b/MikroMaster/20260509/20260509080002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6cc5bcaa2e2a4dcf1ebf9c93d12c38055e2925b0 GIT binary patch literal 298264 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�Y`Ov6wSulfI4KU-LaE0jM2R!)W)D-f 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

RFjojn^(Uu9o$z8d% z3I##7qL3v>GM0PzstHdUv!{lfAr;PHo-q*|jc3BnKnKJOco^YhCMTK(;t6`-6#X?p z>0`L)++o(DoUmE`9h;#PJND1*d^9upNLJFOxEl`6j8-jny`BBFk{HT$KFPp)i;LV* z)tI&XGtN|ZcVUb@<3P6AUd`8LM&Y6`@lWWO&2Vi9@!k-+k9JbKDy6^RE6CJ~V>AqGR~D00CUJP6A^WfR-wzr+aG-sV84{Y9MjO^qXh4+6b~m z5>-Lr&N`{o@|HEK<(wWUQ6qHDN*SN?a`{q-Yo^KF{&PXVs*FFPnujLcZkNQfZ4`nq9p8t2uTwQ`wK4qRPKPN+lU_ zyxv>+GRzL@YP;Y4@+sB>q36a42Vtdm#Q?;~<(7}L zh+#y;TvWD%L0u<1x9NBlx`Q3kK$WvHhW+<2PD+S%`UI1nSRE{$aaS-~#othUHt~R; zT=uS?vY4cd1hI(7JFCVJ}5NFQhC2i9SBBx}Y;gcC3t(&+St4`I<`oh;}?pxxB#h7n0EieQZ1=oQxH>5(!f>bn5v^c51P=_s45j`M)v@Wo=EnW$h7K;v(k| z(v^>r<^p5TAOd4okqQ-hMwhV7O~M%`(ooY{$SvgFa-{?o3>98#+J(9)&@_BGkynx9 zEokbTC7LVbe##IZi_?6f1G%cm3D?6RfE-OAuSEy=&^m~N*yT0j&#YmaN zv6-gav~e}yTqv6DiQ5!C5T8n?s4xWFw2f^@j=aJt1X(Mz4?V^aL%F#4v@)QA&RTsC z*@+h^AT5PNW5wRc??;G8;~u&*3bS4HP&$}lPfQ*_51`wO`7LszVZ2*#0eXSd^%gr1zVzc#+$wO! zI5hICtdn0{%kO`9f*X|C3o1veOv52!eWuVANm8 zDhED~dN_6U&ZLT%KxBlca{GTJ%>OzDP9^{zwX2|?tUR?0eb7^~X5j`lafVS1UTWl3 zFAV>u^bI|X+E@}(0hb(9Lynl7L&qGy*UJZQa_!+z>aBiJbbiI8_~w0(egSC36*2nj z*>EBA(3hFozLiLQ{xdliR*WiH_Z4nVi~N(%o2;cEZS*22#(qqAIk_qMfSz9-@|KJ3 z!Ry`QV`26Z)6U`M43(Er`)l1~y`PLas}{Z0xAnmPHCXZdBn+eV-g|zWBl>tR+Z>{c z>O{p~VXH7meq^rV3Z%YB5kP%!fD#|K)(97zxh5}G+dP!yRtEI2B+Rt#X}j$BD93>E z?M9~HI46D)kw(pJQQtWsY+o#D7e>%2JO^KcN|k>*0)Jabz-JF+zuNrJu4_;SU0*D1 zGPA)R!&Z7O6?47e5W>jYsTy{+=xv&~2o?e3|Z)N)Aml=!oQM&Tf% ze^&F|j)L<3r>SJuZb9s6d~5;HCm-!Ng;1msRHaIS<&5x?QQHpV-jj&jv>>C7fDB;f zswhyZY9|Nib+R)g^X=&wGTLgNt@VrQe5F`5hsBcwvrN-(+V=|0 zSdPNlG+k9FAD9$C!!m^druQ}epXal9MG<2$gJdG1_GAy&5cODIguc|syn;e#jWL3; z6RdbLy48YGp^HndM=b{ON$>gO9!nhWKGY#dnQc`Bby9W6(4|!H)OVD5ABAQbx$m5n zN=222r@ZF43)oP;!GQNZgvam}#x?0MBbnw^Gf%v#pX|_+K2wQ7#N5p#W7rX-0|gd< z1{#yx#)eN-D=&yoRR1S-Tq&+m#CG30Y%ze`=)F+QKb6Wul>e!>R@`aj;87V6mD*NxlicR-$dsC=sLprrakbpg?mG?2fMXnP@ExK|ZXo3MUYRf49+{SL>f#|S% z9o?`UjC>5CH*24(5cSIFrDeh(3Qu4(sRgT<5N7I=I=|eQTbZ1>vl9w=akXsT!c;3| z6#(Md#=z7vkLt}j&X2>tUc(m6VyCa8&!|qQ2TtW!ESPA-kY*pIK*?{K+Qg5wgV{#c zsx^5pA?>MZ(ev9PteX}F79Jw5Z#9L0*} zoz=6wr;jkR2F)T~#Zvaa^W*^$>_H5_8GUfIwhkpH>2{ZCuJ>==_541tiNs9NvPi!R zF}?$G!7QaOd=n~VW^458um3%TNzi8J&poMt!vgOjtKBg}Jl(1V{CGya$4K_ydRvpF znC1I>^!y!dOk-m_YziBB@aOuT_5l%QAidsRNBr64vnU7meed&x<&%{fN%WS}@LBcM zWDyD{BvVKk#aPBj?f=yh3-O~VemUC7%lAYUq5hXL)zJBO@#;r{fcr6Un$CiLT<1eb z3GAmCSMVg|3=cy8<0u9Ac9o$BGzy%2G|qtEC8MY5-gLR2R5!i&IGP{&)+IUWoA-a} zy?DS!dk9j<^qbxT&v#>Spz>Wj2y3n)qB$mX1?0NC z-0LOo6xiEFb-BGm$Ja+J1$X(MQEajk_F{us=-oO?@;=pUYzAJziVwI8z@-S>72(pSv$}V z2>Ae?5j$h?1jq&a!A9-F(lZo91L6H76a*lj@OG-qOOp3Uvj@$iiXs*NjTCKo8)EX^ z2cG3wR@oegkRFpCX*t-_zeed1v_4epEPJAo3QB4s?mXqaA(!oAZ1ulB)fj`#3 zbDYh_qf01>%H^CN80h46#v=_`PT^c8^bfICm?c9a0Qm7$kGTqL4!SDs)J9-id@Cmv zU03GI#62qGOr7Mb4w=xY<^%cY8QERJd*(E{M3E#=(I7<*f*cG_G6U&({sWUAiC%E} zp=*~wqm%%pQ^*>Bq$0k^UJ=N}O}?TP{4%cJC)iFa&H&vNmO9hu(8670nF^Axhn0K% z^+P^8mI(Do`?67q;mt|cLLKJ61U4G#1gE;I)9k{NwNSQ+Y4f2@V^NXSEMti*8nq4Y zl;NrUYf$>23V=#|geImk##oQ_;G5-<^JchtrV;1gFb^5C#1ahPyPkC?lkGKX92%)kkGyCHvo11$=@i|JOfx2hJYhk5TXH(m*3pC?IqAIwW5I$F*!_ zuaq(6+c6Sts@CSwR;g_G1?pdP`qo|>pWnT-BMK;MIK7Y&Sn2k!YsO(g%gRFadx|TY zy}zXTK-%i(Q8@RsR-aj2L#hm#JXW~%g=vY9cGwBv+lsVvKYvL~O0oX>7+x)Hfy8g` zVlN4g^g}d(r+$heN47y%=O-840u|a9U93u^)<Q3;nY({Cc$=--uMQ9skaU|wa4$4Fr2kOe&x#=S?mqWnS8lcu`IGI;bztR* zEYYM2YvjOtJNyDLd7z-19mx4&sSo~flwt(4Q7D}6{S8;&RhhWX)o7fari5m~;@GD$ zpYYxryCFb<=B8b{qkQF_HB+`+aARxTQVKWUXyJ(OIHwJ*f)pr&h7OADcRb27;DVc$ zMPLj?R=+tD{!3xQ%1lDLtdn*6_#9rYP*WEn+Z+N&THQ+h2kAIJ)iHmRGDfn-5QG>C zAzP^)P(?leB4N@vr*t&y&GPc_>UNKXrl-L!+pd=u6rsS?f1K-tX754Z0{>ab(Uo-^ zLaD30h=v!cS>AMRe*%eeC*fU>kA{giD2HY*fZQJ6hY=|03+uRk_pK^pEnOghp)4K!I=Npn*xD2wKu@;}^5NFaJe9$4a`mVD@&xkif>R z^x!*seG~=_MgW7(#hf*7mxLX#h|5n1RyW|5l}Ju5FWDmM$J(rvIx0 zoSPLDQDv~N6(N5f5+#&RovmB1jKT!!xxE3|<{AWvVk!?+V;7^EQmJn@rkMdyWpJ~7 zRd;D8xlaHi;MHtxz>Ql3y~CWr#l*jY((F-r($8l~k4Hz{02+<*L%rrkv0$y#mHk4m zyY`$B@h<**_A8h9VmbG*l9zX~1s_g^fh`Y73a4C7%FI7$wqNG+ttGBG=%C;G!|@!> zP+H&WbU3hDVBbHX)t1bu$g2!GdG5r`e1JT}qKG3^{O=r46K*&m)pdkKK6@}tXbUze zrj1>rb<`ouWg$#Gn)($6!TkELP)sUo! zQ0<>53{4&$RU`n$spn5|!1C+m>38-y+e`9qfKe)Svgs9qYfyny1BtNj+c-sQ25<}g zts!XCp26h@P?jN}x<8eX@%$-1!95G}PEwkkf~dQ)FY1EO#US+D@%1WgpR9nY)YNNB zVo!VUBCHZeV2JfhB`XKl8XCiMX2I!O{MJ1HcF>$YKoC+}P-tv8BHl%x%8QSyG70n? z04h~FY?MYtqMb|DOew)p!Xw;j21(C3P@R_3w&j?`#K4q4y8e#h6v4(KR1q@nynbs3 zYF2H2?rj2(fd{^MwvL~g&9!Z9*>w9z7)gwA^S1irLXBGSkC!#ZrG?;Ev1IfTDwbEs z2o~s}WX!5IGSt%)M(2cSd=l55b;@6q*4|b+w}uHsMbbU&xQQz*sm{w*Y0|fewuFFW zS)ma12&`$WiaqNVhZlWF-NmYj{R&LxzhJkmQ>of@wUFfSP5gVjCq9>#DwHQ0gNy;iNqCRNrzLGtfg+-DfX$Mn z*Wc+gaZL%ig*Dqb`4VU4+;@5E$ite&DxUfug48cgs~62-4m;!q)N4K=%OA6eJl&s| zP+bx`o^AFGF9!J`J3-{-9ryveg|RSBcq0>&vSCG)**9poHTe6zLdn?HvvdEq`!9}7 zbZ{S&Y*Q5nkj8vw$B}}T4a3aLlu*au#%CF`at8wGwE3d6L##vkN&4Y64g zbWY1Gt*6mX)hJQynncdjOM;(V#-a>+m~#IW{;GKOd@EvY{u?rqJHeD@?YQ3>83adh zBv5`EAvWEU#ZtC{w-h8kWDn-H_Hb=JMVNoAA0b_{*0C#{sZXsNU|!w70!x+gn+h!f||#;^)G~hNvrjcz-E?(qT3k4gxo`)Pgi#Q|8KXg z)(g+!vN!K1F%sk-@vG&2mO?4~64(`={oh)f8cCpjXrJLT1#rrhD?jLxg?FYrxDZ;d z$lxF~mr>rlFQrL90g!0ae@nK^j|5vlvVZ;tiS__MF|C48-eq`n{aIM8o?!bvhh`|q ztB?8asm;1`EF-Ovh^Tr@>FCrGUO@&g4I2|{O=5$g@#RHP=O2LN<0-s+=h7ogNtt~t zi!SyJ&wy1h!vGi#E!@tazp$ZTA=D_5)?Qmq5-=+FUh9!9Hu7cW!TL|6ejXmtQ2sUG zk0K|CU~RPZ?wA6ZnsAkeB_GV!!uPA8_HT5nFpJIT^btn1Hi_e{dYnf-S-@QnOJRD9 zYNZaI5j;Opq5V*$J$L{e5iG_$NEDc)$IWa=`rIY!N+jo7_XZ92S`iE6p>&o zf2&nP$QTjMimI7y>d_4Q$hiG)KecTG1g-A!1LjaS7p0usR{oO>jsTf0<`%)(aHB5V zUSc-vEba$XF4kO5xSn`n8R@+=6ddW`o^E)Zk>5~xVIW+Zk??ns#>uSBW!ZicGx|W& zi`lah9cg#~<~?Yt|D0%VcPbm>gFO=kEk)Fcs&7d3#qurSj6qK?W4~b++{>@KUW2Y2xq%P%P z^LeFSg3>fvfI8ry&#*)hb456RcR-hv{;^+_Q86FW*1NyAB4r*|5T}c3T|JK+yIK`E zAx1VCzZE)knMJIF_8-;x2x7%pk=loyy0UDt?fLLUK+0(Ec}4 zI@LJU8UGGs;O(?*5Iy_Y{)OD6?~x56bz|K{t8|5&OS$==9iPFu@=1=Hv4Y;2DyCn0 zaXv;KKRxglp;6nIuhN?*l$85N6ra6X>yB_AMF0-4k%PinD1|YSK;6KM&37k{BkDii z^N|omXWDTCs1(p`@!m><4?|LHYK3Qu^= zEPdA2j+=5UW-c_=>y?BZ()@F13vDX_cD1V$1K2 zf$T(&FiaG`>PW0T<8&}%B}D-5zgg6OYSL7yLM0Aj zrB2hdBwaWWYf=Ih7#1!)W5`X=y6@xLpabZ|$WZPxg1%N}GRUwM~5-2(--vrp{=Y>4~9@kS>80sWL`HJcaPZ zVm3RMpNs5tdr4C~ni^5_4mC&RZ&n*^A9W7^VN8?h7k|_fB2MXK2c;BU27WfGg!F={ zT^t!r!%td;MT^v$WHt1F7=UGnMb5!5oSS9&dfmX?T*}+^`4v3c59IC*Pz(Cuy5c4r zNOGP<5>iR6-p`2Lz7z8NwWBC%cJMiRcsryT*orvUc(oG9`^k*{B5F*Yz>y4#@2YW1 zcdAn3@vQ9jIkXQRN3)Fh_)VB3bW+}59Le-Y!k7Hwi@nanNYRU9G$Y9euNiMUcuJ8i z(8o+CX2_I%LUc!rj-_b3?Q+UQQWqcKHq0g;dSpm;=usc9)`z?Hr1?(|1C~F~#@J{b z%0>i3$#peqET2)vI+5a9S_4JBs)ESX%J?#F7aMiS^D0xcHw#B|;B)MBEB8GLQyV$T z_H}Kw#s%Fp-)r2Q>#b|%oor_K4y!rIpW(u=5SVg#@X}B$bT9S^ae|!aEPZ#A5c*x2 zBmk8;yi6`x28vei5{|~T$f=FQmhgLmVs^wDdxf!p<~Lg$F$|0H{LZf?siz&{H9-Eu zonalu4o~WIoEuR~$P#gcKwoIdqjZx~lW-hLQu)+LS3i9+OcQZ(3K@r&JJB>TguS`z z*Hl^bKbjl+r{0d};BI4Id}jEb8%0#6t)MW&$ra9ty3e^=B2fH>|BV=&e9dX$XVS!O zL{a4NM-n?NY>wpIZ(U6Iq4;kvc}qdX+hPKj&6)AFVFesYrsMZ_49R>DZc*VgU^=L% zF`KxvgC?1u_)lzDTuonfHda0hoi!bU(ogel5*P8P(jX&k{-|0y5m=e8bnJ5_O-4wt^yVk1y~0IoJ|Dty#5lv&wMxyHOOv>Vb#) zK#Qy+7s2t3P0Zn3qAAX!>kw84j@$&Xm`V*epa;1M!acO|SEoyrd8^H`|Ts&|EBI}i90fIt|z7D+XrJXS4#=?LV8bDDdNhrc& zt5@gJu+6=IxB^=ZP{0V^-BN!O)G%HFWL6hyE4DEECcg=ut*maiD0D;fL=%$(x zp~S_{;eCnLgW2>ItMxoM$3k77%Qz>unB~|kt}nU2s0e5WBS)TWP8bfIN+;UbliBI0 z``kf37BhT0Baj77NF76(y(^tw5~jbNCxVm$B|ROiUjeDEtTZnVsTE6Wm3<#)>x^nJ zp$<}V4Mkeql{JN5oYq$GQl>7J>`pi4gKdJ_mt}=`6kXY4n^;X}gf`hX z;f#lV1&y&dY&Q$^_f6{>PZhzg(G@$XSYg#qmi~nZ2pVh-vg{gfQY8_ACpBaO41Q9% z1-Vhbc=HKXVUd#A@8j6n-8*_!``WtbRyO4~W4i)+NVi}Z)?9$b(@{M$OK=oV0SFJO z8lXJ+Z+;Lr*E=~DYiR&y%Deo&U1y1LbuYOw0ys}8l!#a|N$JApV{m^YS8cfNg9!aE z?+2(XVuSti4|RFKKOp^zo?oh$l)Bj*6WxXPBt^DN>mDKqy6_IG?_Ww2F|B;u1P7FO z@s>dsbcC9lEKqcS^YxHEY)LqTsfs)8&uVcxm(YnfQMFwvNl3MbL!STjI`}6pL4pbS z{k*_8A|Kxcg6(-LL7JO@!ub^YLz}-JOO+^yLot+j4ys>3l=R;gyJiQ!DD-oE1_H{ZmNiK2gr571h}$ z^PoVbd)h~e-}nIeVU~Z2+=U}C_acwjyDCulkOC111XG*b@H#f^e(ky~gk&(ObtLg9 zeCoopU->p&pTI69Zx2%1y4=kq1(gQJTJ`yGkFx0%#~2ocoCMTW#}GTfS9UpsVQRa8 zq&Ef>h8R?WBes%xj&z;$%7~GD4Vw0!<}>z-!JW;&(eG_5!<1*FZGH@Hhs_Fm}Iu)3-Vjl(L~Ne1GgcKoWb$ zV(I;SRl)}aTq%zSOF;JPu5IqU z)HNzCzF3Y zQIX-9{(tSQmxYdE=JDqRi?31#FXRi9t6Imc_0Pib;RjEx($&`FmJG6XF~#`w6|BtS zMG_zxu-UOZq(3e`BZ+!3tDYHGr2$a4(tlLpp#*H8r|9=OT{`mri^W$?%Jjwun(20#Larpt z#SkoDy;>yNU~4cw#*_)?U36-z>;0e-kTeQ5x&Goa+8s@HS)4ZzK0$Fy%p=gL)nQuI%*^HIhV##Mxa`7w{aIwoJDnlR>*))2QnVOG zMXb1mm7a)Risbq5C^cv$zZ{pm5c{0CxZs!h9~uS8p>q2!|1Y&My3G3g!LJ&;T}hca3I_>i5Xyy;1xU^ZQ5(s$m5Q^2Yd z%`u?|k^x^$>lPs`XjtjD2w!4Q6aGZJjLq>6N^Ov%mRkHJ+Phtw>qJ+vaOW3f35D}| zihr=n&uMfX1LiqyYK@KXB7VC*(GpvB?ALMO6g##8*U5Ok`q^9`=NvFye6d;U(YgxI zGcxuznaiHGWXYYnD)(Y&YWx_rrN?n<=q586)F=LJ&~&k0Mo8hCCF)7z_NOII@gFM6 zcipYv;jKB4jajH^TT5~eCX?Xt%rw*sL?_{ z3FxORd|ZJ=zM4;?eQ!Fq2ESFBq|sN=GnVnv8y_u1K3|Ldx-;^u&1LfWfx-6$!hfR7 z$QdunL_Cy@^0C=a&z;59zKz9#9LtWT-G?p5T$TUgJL+zLv^cDige*)weuI8?!LG7I zOx^lE*8o>TP!2uBh(FgvLcIH9Tk&g*s-AmZO+ifdl3!^8GI&?kbYFGAS*lHTN#og5 zr=5dIgWu2V2&O*H6vQ6}uqxDASGo1J%C-(fQX<=4u!zX%mioOA>5y`7#yK! zda3g(ov#Xyu;%%2I&@w#Gk+gY?Bhk^3L1dWU{X zQ3{US{7}YB*;;#cZ(dnl`63;8hwnhN@0sT9Is^=mIYSC@dwy_=ZwIaLQ~xgA0B5ak zKmKUM=9ycV4W_{7$T)$YWsY+%2M#vF7qrpvpo_)Jq+G-TSKKTVKrv91;Qqyqt!)5K z3zj;{wHW>D2X0U=TtX`H72++#+-FpK>1)pOS}qihgkb)UKkKnd;d|A3`s1om<@+Hx z`?^9I=r%GNvE8rU_ymuF{Na{xUB4Spk!>}?s)^|$``Kc?VBMaH%b=cLmPJ^w^NFZe!+DpdG5-*NuVy!PrM-Jl zam?bl;h1S?i^Qi~c(i2{h*GdpTJu8djrKbvQ`O%lZjCEh@S{&hY=Y z0EP-0ws>qQcgZvtZlVX($?IVjszXMJe3S^$~Q(} z&#Ng)fCNjud(~)ri+v?)V(gybK4N?X^Yt`i9ln zJf2Q^l?OuR>d5D6F@FHGY+e_k3c1uf7T+aVbxx+S>)mk1#MbSl%6o?c@?xfA1llQU zJo84kGib9MJ!)R=4HoqLaaFEPIlEGu?2(>FQawSc^Fdkt$&- zQlk?5K1pbzUVRO2iZUGBoFHNp!i?>th)NS1)JV1OJoOcu<$}CYNgm=-vcG(RXMrcY zGvKypr|0#Ov3i6xdZ~6`X&MPBJ(p!uEc$m66U5OdV;Q;_x(`6;z#l~L%is%OZ^x4% z9ejd2X&^EBPzLn>n=|9H!gI6d^NMnU_RCp30X|)(Q$Wj3-tqo6RX`ni%&zT}`w(qt zILS4wC&u!&Ve@h^aI#uA+cG@!Y6{zAQA~R3|4J4fJS}l}Ul@azJkcd51b{U3iKCuEf^5HOGDr zVWa`w#HKf}K2KVqQCGEpEt}oQb$gNTheV& z@C&q5&{W&rW3}adrMbYGhW!x+5SYntHJU%#wqN&?Bk7#&=vEW&h)X|PNNE<|q0SvGck6}DGiIbcUsizr{ON^ zm*YD)rUcaHY2phPLBO#cWA~_8OH4NrfUh*%<$YimwP3Rgihq!`9@-DG-WsKEBX?mS zRzdKE_7{3tojcE8P1D=TBFro3HA7MWWdk+wY|XcF08xl0yhhyv6ZRP96pBfGuHcEP zu1u(PLf!MLzsPmX`AT{-V)RlO8M#mZ5eopI8*^@CHbm61-D` z$$yp+Dk*Kg!&>sz;U-BlAq+;RkZlZ`#$c?7_2bSe_4b3ur{{PQN*plYQ}|^g7fGu) z<4uc1)xS$bd9Bg&aUXM|&N>8vYa@RLzRcG{M;!mS)LqU+<)X@3R+RwY!%Vz-69twP z?kEQ93T%{%|0Arz1 zA^>L{>Ex1^x=bFg<&+LpOfA)tnCoN6`(wcm711<@qArF_2`Ko13Fdt%EJ7Ej3;Y^o z{@2R>rLm;a0!>^gAods6tCH>N4LxykW9r(^C7KknuEUbL8Vn+lDABj;VYoi+*cC z4~+ah3db6MYFYJ7YPGV?UwPhnsKG=v1jENBft?|62RXalEbpXHx6rx&Zi@?0vA&y^ zT;RQw@go=yFrA3oaDgIR(BGT(*ZSQQ_H47~^m4~QY_)2?Ed+${7T&?xVFY)yL3aBx zlXNOEJm*|)k1deWl^5RXkoq%jBS(HHBt4MSWSn%m@~BIj1<$H#8auc$Q>}5;m<6<; z|ArYAJn!%PTuDTgaf=wqgDlBLtCI|!e)IHr;eUb=6KjH0!kub3LB#Y2rRX&yX~-;J zO(!K}pIgL`9Y)n}T9M0TE{GaEZZ9aPrW{v{^71zsdrr_bN<}M#7tI>iQ|<|*XHQg= z&12Pk0!?YU{%M5H(X2x2-YZ3$k+vW61{i7?u6BP{7Xz5ax+Y>rK64R7+C}!jb2Oa~ z8)!+g2j|{%2&oGY5r11|Mm2^|jGIYi1CT=COXVo(Z}Snj53cW3U4Kk$iA-~u0=F~D zWXl-Jyakq_p`AX1GUC3StQJHrm#S_6LLq)tabWCJ_-Y)RIjdh=#>Yr6=6+Zqh(`C1 z$Wn3L?q>0g(69@cE3ciWRhoOGV_z}7ih>}zngIt&Cc7gnoE@G%MAnS0et;dqs=i#& z#NtI9=c!TcvUqWKhA$j)qVFR}7{dPJ22HYFbiHv=gNvEI2S$_(M$LveH<%jNy+gnT92nAbuzA z$$+|P8+1$7Bps{Y5>Ds9I`P$A-|S@N86T$7?R3+XR9mRMq6Kt@Oy->O+%)Cj6CoWCTg(}w{gc%=r6^V3-6ibo z<=HoNuY?5)lnwIUK#tFmC~T0PKqpGV8&B1NC^|rk`?-AT1^WBFAh~%9(yOLHh#utu z471pRnmI*gONCjHJYvgEWLMo*t$pCtt(ib(88&^VdABB3$MB8l8o~mj-Vg2-gGd}T z$%1v27v1V;OrnfOKu$Mo-il>)q0X9|dxs(fB)OI07rjd^nUyfVH{5?AJvF_HkbsTds- z#&m9*#NbV}YKE2K`rU4)c(oh=O2sY5^g>LJ!MhRcK>dC7yhfqht$7l8*GjtfIFvpX zk3r*(#Q)@Ph|l(~YUg&+brBW{d-7jIF6=3qK-=H&h07a`f(sR`l<@`Wr{6r(n|l81 zV6X#wg1yOiDBm86!wcrRl8J!TGT@>%Nap$q*obu)^ZdM?ib+0MGD<1{ATkV+1DacD z_p&cO>Vb8H!LU}~ERbTJBo=tppAX$o;bAR61#L7C^Lc1I@* z#|vG`t;`3~hdfFI2-P<@pH4nv3Q4V(yW+%QknX*4uN}KZ>=&$8#%T5eDxfh^!Z68@ z3%&xrYE#TmuqJVg#ks<1<0X2;Szf9N+}TSfw^qi_EU=?=rZVt!7bTq5rn zT|c?j2c+~;J4(8A88{5mSuh7or{oL_*vyIi+`04%k#uNe))CZMP6U6S{TNz~6vb9q z{=BBODAsdscQp3Y$D!Cs#+@W zfG6m5gGmcF(|qFn?J;y2KsWQ&gS~iI1A2Wq!>6~5OW$WOh$evo1C6KU;)!L8VEm%A ze7)0Ut*u)o7L;#Vl8=#&_8F{OT4aS8Ublif^0k7f5GTv>_b8Eo;Qax5I}ta>?M@eP z6wSGWAA1$UVe~)S))nkVpXaWg#T&}6Y2GLy%oy&bgnXg`z|T)^5?RCqi?ssKdR8=6 z3_Y?(ScVV|VL-nBK^ZxKitjh85ba&g}X6m*q}{v-?X6+)Ru;5^-QlXQQUsheu(kn9aWz5s-b}!He@~b=BF0Lt z{C>h*fh({r*zi~hzsSL)*VnQO(}Q0IN#BK1AX91DjH^li#=>Z8+d_Kjj{tywR{JEr zLB4n)H~XfPAizB^{pCqVvB-Sc1E17^INH5m+^OPmy6wlrW=3eM>! zyfke)92n+0zY=SnRWb2rdySP=aBJr?x~U0?q+A41zdEIge%Rs!CY^@2w9!E(W0^1fI1mL@&)B?&1O$TSFN&SNq zX=BCVW`RTuB33wwD_PS-wwbZxBFD3koF{@Y3n7K!QpHC2Qq=nnKo1>KNe?5jg%E{3 zLlJ!q(!|0aSLwn1UEnMTUas_6$ftyJ8}0u~WjIq@J_{0So=HYIZyB)2%m=NeM~8Er z9fzlQEy+-ht8`V2=cqF-JZv+>iUdoeW0TBG9Np<@nkWKZi}X3$z0`wYmvX7W{^u|5 z-vIO&0HOGzIM(81M@AEHyi7cZd{(0}%xLC$e3`k;w|(Z13bko_v^UNyq7QfKPyE9_ zu@O-=$2U-%!XV;FcOhpUW~CJWmnx{SG%Q0ZG=skCChZwpo;A324~<1uO6N^Z`oGN^ zW`4<(G|X7@`x~s`5b=wXevB83wc=E0Z1x7r$Mb%vc)oM2#C7<5i0RKM#z}YFNLwhA-Y;z_v z>>vbFz3Y49;BGu!_7R&hIGU8+at~G=N0!tpcIFrXlZ&B)(n*7q504E%8kJ4{-$)Qt za=7!~%8$*I4N9S9Us6!nIW^(42&|8Eoqn4-m~?RU_d`qdZv%h;Et5wNW`*^z4R@>X zxZ1+k&p&lRjUz7r=JBI`Sq7xx=m)UVdpCUVY~y=KHG+`M;a>oqN=bWFR+KTUS?PH= z(I}^`ezbg;F7|xzSD zpXj@`6X5|uZQb*hl7>GMU=1Ej{1>SooO+2D@J#1AQ}5`Hn93OM2y=)Aw}PaGXsdWc zq^Ln7ynZ1o3I#NK8i)aXURf&noIqgN74T#uR73~>1qXFh5AcsfI*Jx16=74P{In4( z7@&@JVuSk)fub9HL)oo_i|}HJ=zMrIi~BW0a`IAn4gG{@%qP9poL681y6QxSVCIV$ z?vVc^#nl%Qr~^(R*Y&Me&-TuMsE~T4^^y4?+ibtzYF%YaS6H?3DuhG4Ts=*I1o=gL zI@CHPepu)8eS5=~?Ii7^mLOhSB{ikXROB?%hj7UZ-6~L}e?RbsN)<}b`1LFNA1V=f zTG~pj{l%i_nNP#fy?@I7ki=wGLMzDxesYxU-jBR}<2%q6*oz{$h)e0(9igM=Tjjk@ z5M}24_{v!*A}~?Be+)X<=Yz&L{B+zf@rFm9NqLD=IBI?A6~Y8ij*c|mGZUlC%SE$iG8 z!Ml39n-c5Ip2?KEUt|U7I8n=v+*W`$`l|bL3**^=m+x=PUTf;D9|A^T?60&WH4CH> zFF7u%7qTr!Dxe`;qG}EAr^&p2V32Zk0EwlLs_tt-OwA{OIYp@t(GhZ+adS_rkV{PZ zN>`J~hpH_vEjYKjYJ#Ypi-!~6&Nzpbr|6mVc*UPrqx)7UfU~7tQ<9CLX5N`Am?IuQ zv`t<Qw&4|FXBF-W`7JS0`B=a+zk@EQ47aYM5$G)p~xeG}KpL z07ij9aNkr(6++!d)?1RU4QY_a&c(EY+;Z}2M1Rp;&!=6h=e#r{dQTDT6(Rxrg~ARJ z>2xf3nR9liv%ap$mhJDu$~`W-q$6d4rNDGo=1?s`7$>X+pnG4>T!|QQ7+c-*P#yot zDqOH4B!?XyVN-8)y&5LqS6D0&OP9F(J&%XT*4=4uNFWirqxCqU^$LtCUE_-BQ&<)4 zX&ZA=Vh#%`{Vf*wwyKMNqXz-2rk{wKhFJCQMz%0g{AZ|IR~7Ng*K_WFouVD9yWG!n zAaV*l4s(lOcy8g2%luvG{>30~1~Mi>0R|K9EE%G64P@*vI2fjE;KSrJY_wcYX_hOW zx_ur?X)?TiWr3aZG^~c$!mFjqNH*Q~HuxIi&+!2)D!@ahQnHN%-Kg58St!NTyTsH9ruV)Y_9PF3owA22z;}bK-;B z(_$Ifh)jG_`AF@?a|ilUUkX>&%fvtrQ1GRPXy6O!{TnEo#BMQQEIH$yt+Lfog+$Sr z31c~F*-7c$DxVFt5HH8j+P>PVxFfQS4Ia!z9Dc?QNT;d35sH67BO=?c;Me-5ww zAv$m<`dfRWxxC`0GTgCoo`G*~4If7+X-jdc74=g4L~GA()<|6fDMZg*l*oTbp!uAZL{yWDeGVOL3)#nH?w1)T*`42@+n1r$-BPDm+KEc( z+mfN(ej=f3S};{(6n-QvcQbE;Vi0!vu7EFqRGh`|LHXV?4mt7+PG^QH`w+rx#^C6k zy>hG-IT;|<0ROXY{NFtub0RjvRCCDQk;4`J6EA1=o8^J!BqH5&K=GHy8+tBE;Hbg-329$bX7|T8id?csPRc4{mlNl9HIfIDhWt~ljr0`2a)_d=*Cvk3I728c8N+3P!>Wd zx6xVAO5(FU@$n)PY?@&r7Muy{466kimw2O&7N&lc^wPvoRs+g4)f9+dt_P{49VU+V z;#rzUzjK-p7RM4A?#C6y)AZdmPQ4e6leR6j|5$eRk~Wdfi|t+f^*SgUr}px*KmBEe z8KjTJxZ@9gRX9}ihtkY>pK}_Ssi<}bIzU#BpXj_lCuPP(`*&<($j_)Z_P&80U;WRk|AAp$9p_U8o?w7LU(e>Z zzsMD^C}bR#GeinL=WH*cQtH|UVrw#wPERG1C2Vsx=x8nzAGCk5ku4jQdTt}uu=ifI z-ib5HBKe0b8sZf6~G#$H>*h@!cB74O3VN=BZW9T&;VNp zDy_I6s+Gw&JVjS08V9sI$kU_`!kFui7gf&P$qTIZf_QI~{oUrU8fi}6YyXK|wN0bo z^(A#$?lRTqFp`BxGqDoxvkHsj2}Drp3crB@XRVD@vHc`zev`X@kGU49)Mh!^0*%`* z>JEivItB{;i%M|(=eOW5$>3UZM+6~25DAHC-h=yIexOQ1AoV6m4-wmB#t9~`9)vHg z1v3xB9qT>85>rB3AhZJXnE^J|5q}UA4@b>GZMk-jwv!#@t=U>s!73DMHus z`XfBpfrKTn%IEn?Jnm(S16D?i|LfGMP{@N6J#9VSN0G;MAWFx{ds{g9Z%>bkJ80K? zxlWsl^<$+>7*ynhld3Ng#kYMB+R&-N!&xXuD+9K2nCOCFo6%zIQ-byg$RpH*lcp5j4u&641=4%M+Qr&0v2tLG3-4`fbMC{sGcju zICEV?7GnjfiI>C@D?1(1~ZOWhs>5-Gv$U;*UCmI1>V`?l8-3as$MKnFxP=*!9?k zCyrd#E`7Pk#NmV>zCT?bo!?)j)7Fvh^lgY`>yBX;f2w^F>-EYv7Ui(UOOl1OWf8*m zrIKsz1Iv(>`F3~|`6qp0V(bhFbjK%V2A{cSGp)v{c~Uvl%WYb!s-#I%K)iGEPv^$#r%7;3E@Jh#KQ(!v0f*{o zcWfdV4+~GkgFf{|Yj^j-AkqfHP)o?;M9syTFb=b$T)&u6Sdd5jjQ@!YSKAMAx<8LL z>a7U0kJvip^h26kg%Ra(FReZA57`gzueu<-S^>qOnjd{qSWun4d`ih_FX55-bOJdY z$rbSZp0o0=0G*HgrlF@+w3GJ4JgL9zFeAA?6xde35=cPN8a?1USJQUBsnY5Jh*hev zlw}3&Sil%FeM)Wa_?4uQm5`NB<-O(potYS3&s-_95BW0EC(f^(hgz@!UM$s_-CnXe z0zte-9a7e2m9Dn1n|K4;EGI`MQOI6U6Vs@UaLq9eha_-A-UbMbz25r8Ph1y;3q+M( zb~lmVfpowqh#Svlm5y;3DxboUKj}I0AzR+=;*?lp;b-YA z5j|f4^#G%kFFC)(T+}aUKBV$ysNe0lV=fY-LpI0f%w_cPWnklz0h)|N&6f_s`T~pNnfSN z@NY-vWN)+Iogx7&{-V6&eojjQsb zEIpp)*x>h@NDt2$2Lk4o!_cgbztKL_fr3@RU45bM-&=p#f)T=`FjVMge~NqI z?OGGz%ii>4z^F6Wuz&t`V`;;`jq$gfw$5?-3Mk_?%BJgYLV`$|UlP|GUarPrme#>M^DeC=rV9j3xkVc@}cm#oHW zr&~>J6ZA9QIy_%k`|YA=9&PcsI{ow5sTQZ14 zK+l#HC^5*tt2l&H&c?)kbg08xI{jT?J{R%qag=d_Z&*WP>ce57`=bO32;xIct^~_V zg%xj^7Xsu&&C{EGy%cHG6?>y%rW(9@#0Do6aq68QyrY7qpinrWM>{^1e;d-;G}C5G zfHaT!>nyJ3pXO#8qJ23*5)vS=PFqr z(z`lden7@_Wc1%f>D1@4b#K+M!sK5aPoPZoJSzzGa5I~Zy#N$ma^z>vMccywxoP`h z>1C#!N4;kCCLmyRqOR&-0{cQle-RLNv&siDaH7%wz_}=&`hNGQm7m5IP&B?+($7S4RPFq%D z(r8@jp@N{>P!-hfj2yldeiQu;;!7Q8aQrmDihLNMk4#3B%_P`)MG#RPO(ES~N;kld zh)02OATAfzexkKQd@CB?;zTUIy8d7?guwZ;fM&Y!7->lzG8kD(LTdwLs9JEYGQ6#S zN=CUnO$Y?HfkQfVX^rqfH%1(1$bzf&`ft~$6UI>6Mk`wF1k0CjY2#$}&PrwLz_}z_ zdUQfBqq6n)bImi?e9q6x;B5HBPNC%8R2lklP;dI&^$J8b-Q%-@+1MS3NtJm+`2#Zq zNA`T)eg%i3>w~*?D z+$dvjLF&X?p;rsJwYdu}LJZT?u!(G{v1SOZbxpGuZNsN1NWQ79;O#S7nu75-As38c zWT>rLhmZu%JH}bBs#uNqN}2*cnueNYgY+$qu5dK?sT<|!=p}BZGZB>6%2E};<13-w zoWeeBX3UngOpur&^*-@3qKHkU40L2#!%>p`{FL*ELOX)qj24z)w8CF2nkpYM3bO8h ze=tF?f-q8`Nj|5)BuQxWmv^3aPo-IfPmR&AraD^94+l2!k;?PsNg09BXk_!vxytA6 za0=5sewvbvzeID%Y^VJ;R2UZDn6#1i9lWlOZoB-Q@E$w|Y8S7a-=YK510iYsH3f2l zD~<4nj(pMcxgQ_V{2n8uj_A$Jra66MMY0T&waLRTSBQEmE zBZrPZl3X-B2}`l=lQy7U-}7H>^)Q6XC#1MDh5cYMv#*Yzs^BviKDJ2cMtbSc-Gq7W z0qTd;aykMsu-V>{JH#9>U4Ps&Y%BeWU{@89aSmmF5vO6CXqZzy(3VA;d)EX+a`d=v z-e^`pV~zkZ?sP0xAGj6C^#z&KB|O}Yg7%Pj-P*z|m| zJJc1xkcbMC>%Iy*?r9S-C9;X*uE#4ub(3pA;jeb&diRdSsA^-RWjBG%0_od~+qcu$ zGl-7zBc6p!X#)SGHcaF0A%h5@ywN+i2q-gpKd8nvv)mOAXnseO&5h)qc5t%4rbe$ijV-=2KR#MnhmNXdsH3lgw%CD*VqrFf8 zxag^9yowaoRHJF1 zM7Iq4Y}q+EyYu3F&ZDzn`>>ZiPU-@>CZMuQdUu!IL-0(2o3alWCUvE}#pyw=Lc}UK z(g%`5LAPAT^~-=&3_$LBs6DK@Q#PA^tT4TR&marWaAJ5Fk8sv+KyNb($98#4C(r!?ciA?$UK_DNO z4^z!sgtZ?2co4IWc+`cWYM}<*I}nxm{}^BnVX_Pk;}={`!;n8sE4R#8$LU&IVqy9T zd7g;U49E5aP7Lp{Aj$^ow;lfR1t$%5;PloUu)obN+3uXOw_2m9J<&ZD$km)3V?Tr_ zJb^j22RdME_KLStwi>FH*Y}WOX=^1X^@eY>3}O?;CG8!!ZlE-qaFOh zlNp!p{M6^zo>yr_y$>t>})@1eT;~W3WpVRRr9*Wl{TeN~GM~Z`7C~T0rtdgJIM)OZ~fR0GhbP^V;!d50D&h#^u?pE{$9R_D^atB~pKDe2z4@IkK zMM&nMzvka}OM)pidE2S3!}0`xt#0ex>hS4*LP$_-(Dzvte!!pr&Jn2Si{EC4WD@L# zw#Dg87YSgUIaIO5Ufoa0O0{c&`#ZVdUzmTIvci`Fp!El=NlW%+y&^?TX;LECW`CcQ`JExE1MK z9aK|>DY|w5pWqK!M(93nSI{&er4P?95No@l)m-v{y)yp6VDMpL-rAZC^2;^Z#kj7k z*P|*AmpFLRCEbpn+S7MJwsi9XQJ5s8ogc?>gz9CwRgHBECf#-~`Wfby%aVx>y55&C zg%51schxbLQzYChbw^I_z;A zW9H+q$gl$46cc48wql{$L=wUov^U5$ofz7XI-yOicIIs-bN45TybRc&|3>>4W8j^9 zm3c9!4LO#S@7D$On|bQB0JW8+JhI@*bgm?5e(0bzVLDWZvb8|oy{$>>w0b!sAMflBAwd)TwIsDvil*a65AYZ^mslX+L~sQKUVY|k;No&16N_zz zfp#N_OCMJq2~2M4Vq#|I*a7z1R7i;|!8F0$GJ&7+>w4vK=#0;-Am`%1XaZ7Ok=4X0b zh?3G+AByW_yj4D*AA5m+A0^rBSvq=*p=dzBw%+_p4niPy8wZo;>BT=SBWvp?Ed=HbvTKU4+Gdbs2zZ*T<~FnAuUg@eDcDA zDV2p*e5s?mw<7rO7mG2-HJdE<-!nD4l3pKV!A~6WC{e<6z+!|j1*bnf%+30 zn4uIkI!(~57xxHqJ^u1oNhITh_#p1t)zq`75 zyH8B4shL5GhgmM*jC=9>{&}2GhR;8vKX~V z<@BA$cJUC^6Zq_t8k8KDyh(A!7%k0JOPRzd(|c*8aOT*3ECLa~7TgQD^Ad7C?-i~L zmK9SSP73H}^nW7A7z$3x5T=&ERq+=j$# zDYRsHAN$=6cWfNWksHY^nvvInvv zEc~K412R|TCz~R2Uj%;6fW$Nm6;4LP*%mzKM+Km9DEP@xX32qxkZY*(DX$E-8b2=S zH!twp^koJ9JHK%a6Jf;d=e$YBvT-UmgCqR#+@1OvPm~Xm81{ZQe_J+bfvec793krY zbW*TL(q%SNTFG?>Gi-=!e_O^Cu(8N~3es_F{LwEEF4V-~;?&0n4SPr7z73=Lo)qXK z7ahA{8$>MvCdepO=SsrIAptW%0qfEwsmW-SB3;auZnQXwEO=wW<8L?8p85M?DHk&| z*S-l^5*_XSu8GH?2DP^b7wRs_KK#emDPb8pu5CC*HooDE`XO(Ym8icf!H(t?%~l3~ zOciLU+eern*9Vgf1jDeSY}gw9hduG3B3wU0-WdhvRxT`Zq+H5UXspZ=l7=NGXdtjl zI%R=JzTjwJ71hU|fOJ08^_)+eg?PjX0M;I`s=y?4k*&OZdplPs|SjV{5@u#QB%G|ifWPO;f?iOj-Y*F&k%|dmJwh&)UXa5`T4bq38JUO zemO#wE1le0|G5j`DCl>5?f23O?_Z)Nku&{g*yuDiUi>n74D@!5lY!*?4p;t;ftNJ3 z7$3`8WEfLS6>{${1;mPpgVG}L70V6J-Ly_5`Xg7-Z9h5+03^}`Ld?5&d`cJMM*cyX zSb3!?m_Q>AhAZ;<*}?DV!glg#Lxh<^t3=4e$1@e2_f>Jv0Zanmyzc#3`raz~aBx;alt;^| zJuc|wfS>aVyjxTHf`np@w6_}lpQk#GH@xoH|m4JNwvbR8|7Z6e$F%$NM zps|+QWc3dsAv%O4b8WGW*n99E=yM`=euUP+Y{`yv)&2$HVpbl}E7c?1U=q*3XyRXx za22UY+LD-`%EfqLe0dL)`uXZ9`)xPW)~f zo+l+3h@Jdbv-kw@?u#%~M%@`LsoBsr5&?B&I~|%_pQ|WS8I!p~rW?13J_?FI2m-vP z5~vMgUVL!l8Bp_N4yOHR3B4}xrZs**H2xIdo-lztM3bK(2$;+H*dUB&}G3LAtbMXPtJ;{Xo9h%4tp{8%0Npc&dK-HB!N@u52e z7b@pp>J69-IF^~7*wb1M;x&=$nsjImJjL^iC|a8kI01@DH=$@w&bq{9@cVB6zLamP zO(j>OM~yYw_@F(doQ|zv|60N~Z=AP|wlH-ISp7}?%Fi2wBSBysKkS0iUafq|TuVy7 z7JF@)8Lw_T&lPwq3d2-wn_gWn#J>jD0WUb-5I#7WYPmoQi`~_{A~VOyL*;6gWtkrU7&%zS{on``=V+)e{7VRYyq8YUpNu|I1b_w`Qni zeT$j>h=5?#e#X+)Cuf^IxZiO0$O4k`&zzT|yb6s%g4aTAI|JN}urgo`LPfZrR7|@$ z`W4{AX@_vul#2Zic3P%hQ3k)_FD_jT!}SNx3^RLt)0XElHyIhT&;%~5yKK<0Q4;i@ z=rQAFCFYry0=?Tx^BN$JuA0StM4ypCJU1t45NGvQM35+RpomHjpl>RDN#*%?&+nn5 z67!2i`EO9hSV!$0?-y_vS8!jD_q)0sIeiY*^dZo=ztA*!&^bo4f)x;!q20nkL?mGN zzfBQ6KMUSyWjR1hm?ejDc4Qtpia7=mpS>Z1=arfd?@6Untw7ani&h$N5D71Qb-#WB zbD%Bcg>~6LOqr6K0gT0S41Z{2+?PssHhR9UyG3NyD9j1kLj=)iGCc_bdl^_zpm24? z{1VOg?aNt$y`g^37O%g5!$;#{e}=Gwc78i?ei3)sxtg{5crBj)al4NtLUJMbnrNk6 zNBPBeX*_@vI31abp9^b-aWNw)&i$7jiczU&ZR=HN;u0MN6DWA4-l2ob0my_;h2j?Y2gGx{X=G)2#Id`_>lc9ud%&UP8LzpRzyR2P4$`jS!BIK z>ld2_B7ed8q2EWP;sc|}w_MkSy}9L(*}omDg$X-d0vgOHJ2AFB%hCBr%=3yQTx3Cf zuAiE@m>@+a2O6*napsx)<_qM7;^HWrU-@@i7Sj?c3K{_2I^5r%h@Z!IH)$0qVLDfI zywi%??~V368wO4?>tTa92@GRfFLx3Cx?XmIVP$Jm*%0D@?4{g#p0`6CbQH7Z;yc^{ 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

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