From 0f225de9bac3559d471add5ef31614592d7340b8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 13:00:34 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 13:00:34. --- .../20260515/20260515130002-Binary.backup | Bin 0 -> 241836 bytes .../20260515/20260515130002-Config.rsc | 3404 +++++++++++++++++ .../20260515/20260515130002-Diff-Config.rsc | 103 + 3 files changed, 3507 insertions(+) create mode 100644 MikroMaster/20260515/20260515130002-Binary.backup create mode 100644 MikroMaster/20260515/20260515130002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515130002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515130002-Binary.backup b/MikroMaster/20260515/20260515130002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..4f7a1f5ab4e9d6faeb58cabe5e9c7d92dbcaf84d GIT binary patch literal 241836 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ര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

G&?>MM^gzg5j83ZV7US|&4 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�pjfQ7Yy@V8NLBjgZGbJm;4fr5R=Ef22Ozx-|m#mBwluE>)M1 z+!qP9)WXUTv_tgpRxUFBp5O>XwJv8B(eU|aNW1?6grP-&nslmkN5#ZSZh+DvURLws zFi{00jLxHar)2kjwQ)tE4WM}~AC5)4>(mRItm}D=aF2(?Y&3&)+I@)I`-I;eW5<0? z_3PJpw~uu2y84SBPFfiaYCF+VY|B`FbQES8|IS?Nx9U86FkEplwNn5mh5x86UXLk~p%o^fuR_X0$A=l;)(khjim#e$!}0hXBcMr61G|V?C>Amr41}xdAa%B82C9kOx4G#sR%lFILh>rUZyc#~;-QEoq>p*G1}i4)6lUtcPDWwm zrOm`ZK5t{~9F?#8s`&4XsGbQ9YO7qp>ryrI6b2n;aww?Dzpl3$D&G4Gbb3?e5%B5*730V?fy z*bX=?zIjk~NO(QGSv)h1ani@Cl;jle0DDF%WFf(=W`Kwr4y|%n9rPznL(Z4t3;lo> zl90yih>F1@N~t(Qg!L-;7BDN@U|N*Bz0QT~);U#>qb}~4MQL{oa>r+4e;VQdmI#k{ zM4;fRC1=31B?Sb7RiVs(n%C!daB6@fWWt5v%U}*jJf!YaE4bTyh5{*WEP?5&+o;2a z^#bV&=kD+{bpHVDRnsZ6>F8$v1+gl_Ce2~^0%3j-rOw*8kF)}Ar=q+<{QJd;y#A4= z?!Gcq_Vf24az--*RS2j82yo;+oPq6zN@>8-;movb5je+cP=QelV4^PU9Gr|2|L>Bl zSOmSc*@JgL_iprZjY5Pe9S0||<|6Y}w74~=ckUKiKcHs%xeeCllxeLxh_5 z%mtmFBa|WSj04IRHhuxR6CitlUD7BXq)v6zD~4FOSk_+30L2I{Xrm;( z=B!u9=i049A|-cp6o(&(P}G9|0%wY8UXC>P$ctQ1_BhzkCaD}(@F&S`k%pJURulCNkCg`aIZ^ zFGR(-OP$p-pg+&CEapFnN7t384jNP>=p07Lfpw_t&JOH{@G-LF;NaUQ^G2+YEMq?X z-zdL#|C!0*yeLaKGJwRT=T@zM%C?d`Nyz54m-_BQ9 z&dW0ynhQwe*akd##4Gm7^rUwswUZYY)0TrSy_{@MSx=;YEb=p2g-J8SDroF_P~ zHQiG?7tm~dBtR>jx1WH%J~)zEK6v^TER~rZ4NPndhh8+4&o)DF<+t0cPIb}WZKH2W znwX`QBmzY1zfP_yV(%b@JO&WroW;CegRB!D?=cE)7{Lky3PRFTQ_G?6_ImGrWTFzk@)yvs`M}Rg%B%Vb) zp!`m#IXr&TBfh2cfwm5{s&JCZTKBky-)Hk^Oruxx18}Q!O%L}3;8f%m5M8vozT1FU zNsKQXuaPY66_O6NNFs2+7a# z4;8>vs)z`NF(E=sNyQ!D{r)(Z6TqviNlmMr#~9|4>#nK>WOfgIjXNx+%+iM17r9uTe7z=PoqLA+(d~rT%~l-YYGRct(^9KtpKZEdcKxPEYg&OZJeZ z;YIFffgFX1{D1QkC7t2GHMjDOy@vR#6Kzk`Pa7|RTzw0(c*CX%H8Xbu`t>`~B%Ll3oJ^6|BNnO*bN8_qQ z5{`&5{%|q<`l5e4+T^{Yw<4W!+@@fx^OV*94i&19CwRj@UH+2uqQqtvx-rY=FQRw1 zhkz>!OitErFSGCZ41ddCy_I+5Q9T6)pR|)9ETqn$ZeQ-G0I6kUv1hbAYOwqf-;WD4W zT|+UY-{^C@u@*bAuIEJt0~2-jTO+@?Hq-6dY89&zWy1YnHJ?F-9lUQ27mvp?oexuy z2GM>msVK5zYc)&K5M{Mwz~S0K>DB_NtZK+=`0&>= zg8NwQ!R$<%yI2mk5*evn7)a_JBQ5wDVT3WZz0EkcnU%15e1ZG@a=R(1pLzRcHDDm4 zr`>C+BOZ`QFOI)MLH*<&Al50@uEai=p`ZzfgcFFL+c}i@BWl=S&@GM?!fAa)z5}~& zn6)Mu1dOlgv37?OgiT4f8qF&`k6ZFp4B|289wCzGy2BOG4+NSHPaHdGVFHPwo6Wki zm3T>l%{eEjM@>dTKz{~REZaW^pH^q;`o^z1KmRFvR$=Z-Yqe6>h?Z2(&D~J-M@mfF zJfioZ;j1*Xmo@kM>=x=5=-Aq7o70NS5Jp%DGxoR!!DLmM=g8;jp*=R2H3YWbZuP%R zB$vMYA_vQ^8@B%4Ug|H|=F{cE1#)#yQuxHw%Z|T$n2|%AIaZf5*~t>*B(gde0NocI zaY|vj6O8#3U=oqH-euz%;ONWOn%#`~_S5PXaq@!XJKS8Z!&Q0j>z#pOWvN6vNk2{* zhs`3Et0$hseUN#%0pq2H7CMZp?W)zHYxZ?#kI?Ud1}h1xWdY%?nfJD)Z>u|0G>G%^ z+D{mT+wFz8vdn#Lu!`@57^&k%BmmA^CL{263DDgyv3d4DL1_g!K6bpAEa=J6$&9QQ_0MdGaz1%d;DGooa!9x?p>f{$7QnX^?XjIV>%M@Ut&4bcgBB7m z#+ERm?n^*D(?2k$N5{+H|d|+LaT5M9q7GA zyKCG_fzbloWYhqecP%!~%f_jDar1+AEjo~`5qm_rXt6k_vmsyFWS&=h6v1VK6GTX3 z#uhD-`T1{=5UnQrtPrP5RLKB-^uL-b@-%l=4&_I9@Qe zoNuVg&3VMZHpZGm9iq$xiV>!|pu>DeQl9qELdMfEqs?%{c-Eoo4Kgtz`jO(bWOn)B z>Oe2ET2WIU$K=j+McLJ#I=Ei9-Of6%8%BO3%gT=H$BP^9^ZgZ5L~S)h{jE`f46lDV zC3Ei@kgErsxdr&j$POJX$iWFNjs}ssYLsZWKYLhD+o2bMrtZ)Hh+c4;B%|8%o zew`PJ5c2}ukV*BeUtTq3jO<|fbF5UN(zpiR6FUIjMauL1cviE;@Ie70rr&-9U)-44 z$nzVl!gRC@Zowcx658l+TM1B$;u>28#l9a&HfLDC^~p3seG-jj*qRu3Aga!-#%nIl zcscwm$YE-hZyWMxcDLS+GE2~vxTJZ?0;FSf1w883rC$aSf*?V?6WzUZHM_Zk8lH$J z%3caYKCVr%L7#lUJIE42hg35G##q0AwV7`9Nb|i8ZxK^DM@Z0{MdlW=R zA?v`T&Ah8K9^qMsoDv%CBj=$7(&-qUKwCm^b&LRjk3qVDu0AgTzGKG?jW%Xd zVS@^GL(sM;d`Mdy!OpxFyUmM(gWnqWlV|&3Bqzq;v}d*E)NKilh8sTQZ{2V$H&pzS z#8DxCaW#KCmq~5#eD;s8-Z8z<_d_0&46*7;`l*D7el4(|Ta^K%9RAHrcZ3PGN`_SK zq+N*DvrC<`Ke4Mlilrb$6C218SvBDeSfLTXQ}OLZ5}U_=`|f(KzE4)LLvn^4BT zr71oMFkezila3G&V(vU_Et++GNoYh-T&8MbFlNY%@=oi0RF@eaee9u?BOr=!R(>f2ua*i_}ygKWe z-0$BEDxOIHjr7m6+O$KM22ZRJoE*$Gvy5&C(Nz}3lle7^!$-QRPSgAo#tq()6A)%5 z-3elQ!Sy^Q@3t2}?->x)U#WbJL^xUL{j93Zl;=p)F6}I_+alhY;yTXsbZQ zm*d|^;CYxPmp_Q`DV&`QJkF6(^M91E>Ocm4mRq2-frT5n?WJHc0>HG?U1y@+=(ge1 z*&uP~XA}>NP7u_U$rwKl7lF#?HC^`~wsI|MV`|@ivU(p=W7cC!GtLz@GevODO5mxm z^mtKvpTGNggKzp!p``ZsVp4}L+Lw;ZMy)dqLE1mXM~fBK2sCSBR(UFzIj2bA1I}>W zM8OpIWE$AV_8FZyHR^&YOhZ1(6g$0rijFk1xsdQq7kg7wex(s8UAPZ&5<@o)P8#$o zf1f^0N0izo=VLab;&!5scQ%nc`EWfn*5l5`qduB00Ml2)@v;)Ioe9b^Z7UTyi*2s) z9i3i6W3S*3Vm+Kfl?*SShP4fb-TRbf#$epTaLvG9S+(M8MdoWjZRE&6a4me)2epz) zDS~l7mX1>?-eT57Qnw0eWMBJpUM@{0w#p` zv-$8m#V2Gnp~8pKsBC^tW$bg5d4R_!oXwKuO> z(A~BJuwBhEM^f=z)>;+FQOx8JX-a;nRbej^)nNpWKv%K_M+2$u8Y`P`A32sV-}^f( zyCi%PiqqBwYY|GX5)}bPn)1Rd>Y#%qKD&o3Pp1>2mR~m|l+>B}d^a(1?6PHmv9tt_ z-%n^Zi&#pq;YSKO(c7y8qdnV;>%N_c>Zs3!%5798pc?|cJj}3q!sGQdloiSS8h!)H zZ(5{+CbEnn9iuY=rB3v@3Py%YjigH= zl88jiXJS1CbjKz|Cz1;q+2=LM4s6q7*tE4D0GA8=e+ShWk6ri4DS)iAM83?kP|?2# zzvP9s-_$+Ys5+G%ganTn6ASGkJuN0Obq^+F+qb*5qc=t}1&4H49LY!+UtGiSf4!cZ zYYI%-x=a0P#7`FUKrOb*i7qp%W{9scw!X7bxx^L?h>rmXiHW@hm!uUiED`x76qiQv zXO3tQ%UNmmVA7iG7K@ygp|HuMHccNAfh<5~K%qQ)lT2B*%e!4ujZ*=7<^6lTe4c7N zj_ojlXj{FZitg@w7i)aLrBwy5oXH#}zZF+92?vxdq3AGOWZQdSTnLz-O0ic(AESKJbjvilFBn8O{SA$UWN!saH@r4Cz9zYnY z*_&4C@H4HxR_)p?sgl3~JfN`|WZ~}VnUyg#Pqe|`$B&6WGV+M=Ale0Y*@}o6>~Om; zeE#vtT7311xjtEAiR?Uf(|ob#7R>hQ={8nz@0hsjaxP$_xD}P7Q$p1 zp}YNshW4(On!HYvzFD(Sv?BV=8@#bD0>j7u%CDQA3{YadaZcoJ*j}uSFF=m%e*f_`#KQ9_lF#tR=Ezr{^jTopu@i=V$s65;KxbQ z<^XcwM$TEmKGMSYxDqKcqpfDxR9h4gX28_jt4SVmeV;!#mDuke-{6TM0yO5Y6QZ4x zq58i25+{3>(C=`vce(-iiHO zXQ{s6XGBVCZn`{vnY@QFh1tw0kVA`SST9#e*otEjB~eu_Gm9%+CqTZF$0N%71L`hp z8@O{0bm;c_G&<=~qid!-+a4z4*a6C#F~e8O7X!7cmZr&5dR@zoj#XR~?Mb7zant^& z%7|v4U`mz}tXh3Z(4<;|;UQ^f)^vt&da7pxJ}A$let)StU*ccks~E(V4><}dD5kOl zN*-FLa(As0vZ!DQKaHn^`Tc5j>OY_;6B;;~%f$hcy{Nc*8rmZlZr(cMpA&h=Y$WpOO4<{%-D6Jto?*FJLsH{jN-j(5&71If`I1IlY zvAbp7`1r&M$B0gIeoQ3@R(oF9Pz+|TvcX8gHnK1Vz;Z1rOsKI8gT}}|(p}}ZSgJke zT|B0*I6_}%WlKJ!H$wb zsKQQy?GucW(hE6NA7&iNQEwYP3j~f%g`Ord_kzu(l3wnYmSq0?>t*%&q$QjgRig-iZ#gq$z{JWsvaY*=^-1;k~#FZ59@&uC$=~a}&8V(tieL_>i3rSF8Q(D32~F zRluF}RVyO+{ea16ooYY0 z&s;tE`_!mazh#Wd=b!^laE+*o)O`o#)G}F*vlS_Fz8pZc&*X@&_~k#{7goaKo~ZjD zsKA5y$FvT!mSZf~+l$A&)*Zi_PbOrYMtBx?RsjhXh;xxNM#2i~I_($P{0?GaCb4He zIl;qpPbh0^dEl=IFMQX0dg?4)M|o;0bT!1D2spX<_}W}IVi2EC)j$oF^8O9~S3zPJ z#e#W7RE|Wwg93sOym&-v$SJd*#H7;H-aU?fZ+?M_P9z*aZ@OwgfEM%^e96jsY>J;5 zHJa{o;aRb;MjumgOQ$GQ`UtyH*cB7yM(C(uL`NglFbSiiKywxoFNXM7jA6;dAhd2#srEl`ig$^bWy>lRl@!#EATL{g# zqA3lu&vSWn-(?$awk`@J#s?eAp9)06O%a@|cM!iQPMG%VOd{)(`L&q1kQY*QfVc!8 z&NbAeBP!!Nx3&aOIn?BCt%!I1Z=Xc#eZzK`P5es)RabaF)5J{;uO`SqA0CtYtvbNA zX{eg}t=!Q`g_W9QJu8#O2Npz|0^`lK%D`MH3&VlsUNvYRp?qWAAVVN?+6;4m^Jr%| zNB1$ip6?kk!z#q#RW`ENdOcY`b2A;v%`y8qSMlcPPlyCmcVpvY?sSu}0$lV=z``hy zjN~&$O7s%|D0$*v333(?k$<~?muS_%Tid2Ven0jUe^Es28Sabh^9y~abr=FhWY*Mv z0FXLNLHdYcUO_c^-VPv=<%}KbKypaWBzYZ?tLlE!pF4(L#^)ov3DogHHk{PU$|SnK zYR_mIUHU-|D!T-3Y^L}B=e>fuNu4G+I{{28VR zuH?wPL%YrO^>S;@0(r4V^f|$idG{XyLAW->hGyx?KRRh9hsg@4I|qMgok6AaDqb6_ zu-crwIoD_bp6x_WYM;>(`jgdan~gDv2|sPvKsC~zTM2017H0m3WZw(9OseGk+TTz3 z)-EE092Cl8!&{CtO9)!Zea+^6v5t#r!uAJ!cr!xgt~lht7-$}BHATAX4JPVYS*RKa zFXukEqI|xmH=Xt3eaP9x_zlTa-VDH2YpcEIp#!>;ctdB=%r?QA%elxta?4b8U#~U~ zYkx5FUa_uc&4=5s2L~YL3^I9%Q2D$((Evw`LRwns0oixsH?!d;wNtq6a?&1GFg~j) z=j}sYF2i!;_@N+Zmh2fSM{n!oz^{3b3wq@pn@=J`8?=47uA6HX^jubxY!rNdi5u1% zz>#!53@~6xmBK9@-fw!r4#8ar=#BsUfh@`ab zMs4u{Iv@L;YL1-S;_CMD2qa`*8e{ot=W>Aa?nu8%Q><3rg&H+xss>h_4q3F7dXx|r zxS7?dPNCz7Z0gSVtEr(8uIAg{y--V8d&Piz8xRRlkYyogIll{q>_>aa*F&mkrA$x-QJ4-hz zZuxn4Wk=98$__pL#VJ-u_(uLw&i?-=3+R$J`<)n}as!U5HUl-tFz;0QJr1?HSfxKT zRkkh_c8k$CeIY$+@6qLcBs)J20>!!PA>YGczn;xC70u9HWMA(0uOCy1dPp&wGX3eh@ z;x^=F;tnb1ksR)JV*$4?NY8Q5z%n~_Zz)`G{5_QxmF%4Zf=u`RP$Q(uMI#N)6G6m{ z7UvRk7PJnpZrD4VuGq!NbQEk(oI}?U-fuW&&Z8f}Dz7JQ!hk<8o?DXy@td+lkiqL- z39H&!9hZ}IP&N_eCwi?Ps?$4d+pAtMb(iaH{%I&jc7JcyRb}( zsw44by1au;oGl5L5wJ8@!X_!29Qjw}AT8Mnm+v%Uc_B4@ceaW`A}`y&v8HF1u{bRb zzF`q<8e3dL!-*ePlRXW>?)qp`ibgJ-zX3`{ZEqOqUBX*`t@PykEi|je1ijVIL{$+_cBNo*pcF-K zR-)w3KE=^Jny#ZC+=oW_>(d%x`AdAK1_%-*=be6y9s2^u1fvX|W(T@NhJ<#{2mj$j&nzgUv1!9atvgYl7-$+{ytWD} z%=e+Xe19rD3f;h}Dcj=fk!x6Z*JB~JJxddpRP5?7DP#fRxqW=?NcxgPuw;SZqq;>s zt$o&YoL$^Vwh~sSKI{r3{v5W@XW)};GbIPu(fM^~mP375zrr^!(2P%^TyzJoHH3_Y z;9ftDh7=4o?rx=1$8yRiWOswqy5Vr@i&X*;$X(v;mkE2cI$5z+KL+P6f)gq zc5VLpf3neIo$Sdul)CQy;bW3_%lI4?VRojCd=G~PU1Pr_E7WsXnw20-r1 z`HrvXKBhPogM#|dt*EiCD3wTG-n;gYP!R!g7AgP*P$mha65@{q5zvRO=RDfsacVH( zgJ3=z0(7Klx2rrW$fPpPCb)j|L&vUOcjkI+o zHwK~1_8@KMA4|E2WYJa%Af-Jn&kb10Hq=*a?sRei7C{k=coB!8sE^sx_fR&FNzJWJ^!g^b#u7xCqpy2SAx|zlQ--I5_B-J}hzc4<5go-YZxzakYp9IqeO)$5gBL!fK+2i@r zUXojCg%TraGU@!ss-IrtR;$$XajFGB}Z- zaHZ%3 zvmfI0wkGw9{Fmx>Wl}gAqoo@^=x{B0-})WuIeC2rU*sHKk`9myAlbB&8SBL)liRkP z!R#rFwNJGYhG9xKBT<-$E|F3}8^O7PIHu@&0z7#YFs?t|TK^cIMKt<}q(2-{;n660 zhcB?d<7`FmilSiQucb=n%(t9})8AHb6cg|O*Hb5$P9EgzJ6rk)aMJ{YTS+eXoV6r(oS=w5%#;e1bXeVSx=KCm&>h9JF@^T z1Vd^XDy+Qjb$(tuum3w&Z7-J#-NxB_(+(Y)cjc(rAp~Y_aC?Ui(O5$)-WaBSodXz| z%248v(G1zp(sUo7nk@Bs4-DdL>m4-)xg&{=89$hdsWg@|Q>ZmhG9;@Yy_^U$DSeEt z;1K)>!iB3s>ejCA$IA%Vl!z|oz!a~=!IiyZGE85z?uth8$!|Qy<~+MUdAS=)ctT}- zu1g_G)w*$pl8ag6&(ecvIX-&)pcCqd#?=DE3sKiD~TtVkXq~Do^ERG!mch`zDv_zO#R`ezLg$0ya->4zA=>J|csE--%H z!SIz2l7E1G#E9?3WO6G!_{m;yGy?CI>^bRMR_upaI3G->rDL`4PbNKqt3?6#sI13p z6kz>$M`%Q*7+TH>9AgGOjKH?(=ghg2TY%|Bhc`X9MIs z9f+HFqXZi3rfe0}O6qEl7a%|x$U!^J4!nF;6&thHX-EOjKy^=V7V7u>qcAL?RjXW> zN>2c$VcrWA<}TB~{7J+ORc8n{NTPcCK_9@XNDkyzKu?N*>|;^;8ok5WuG>26QdggM zNRTLvJ%z$Pc^nlrZ?+;O#vz;=Z)1?)bA5|71q_!!W4<;4G#leV1aftyR#-SY#TS65 z7w=g4%M1o0crj*9qeyNBC`~pV4&bo3>yP`ozH$4A4bPZ3*ilqP^suL%3}^pA z<|}+=F&VqKEW6a9Pl4W=t3l07Lq3{Bi^jo94Ti<7#?X|RN&tEJA$@*o=ylIVLQ-Vj zqVPF&5a|_@d)tbb2|X1q6+_>6c7(P~Ie!ylgjbL5&oUwlRHjfIM(igTSRQODi;$Wl zn9vP~n2szSg+E^C)Zrylyr7Ht*?MhO`4AGY9LucNQ`qQLV?CGiL58cEQ^}L)7V_Ry zp1=MunV6kHdV)h_dsT>SH8Zw>1fHT*^y7k218Fl(NL3IBcFDY&OP~BN7i5K}z2lHc zzQ5xa+6@XPc3L+{{w@Q-7Mo0W(~46dp_LmC4@kI@;yOwf^uiA#tq-lj2GTvFgp5`+ zoPJAi;sULVG#N4u#oiPtW%wwbq7s~P9KOPr}+uJ_WVrwW8 zogZvlf2aUGaX9{mZ83-`d0E_^qwt+qI=EA(lFUFW<<-*@bGS=xaHT$E`W8A>fvJYJ z|57%^T9F?|UJ$2M@#mn4_fTuxtt8{R>&mVKm5nJs9OKwUtz-Hx>jdwMX*0_R9lRhV zp|Xq;)*w-39nk8xo|`MCui;`G_QNUth%oVn+fgzBr36w!jq$=)oGo)#wnB~(N*_P1 z$g>CgofT1~?tseulrzB`7YyB#yUT8S6sq;lePMYq0qz-vJma9$V`xfU?Zxw=A##qf zL@jlk)WJMN=}0$<0hp4rN{FW9Y~*=h9CXJAP?ozafEEWQcZ;Ecp}w9ZV;kmzI;xJ! zB}8BgC4Yrc=MX`Y@t8=caL2U3Xi(bee`TBsVldhPUYKtzrY6h}=2Sj$$~X`@20IpQ60fydX;eXxOV^%dbe~H9 zO~73h7FO&SXj=yf`QLb*Lwn-|(I60(cGW9Kq$TZ*Ux2`wN^?Sg?>qhRt&B+EGu<@miKW zsJ=HzXn#%0A+qcS%qRPHEe;VGqrKra?EmYu<(3nLy^Kx!(GPo%m;TDz{1$cSgM~om=~91y_QhPz z4@W++TOiFzHpv0?qiYEI>oarx2u{KaQ=4G>0)>0QMZTy^5=zAYkS2%Z&Q7@ibysYQ z2tfj3SN1X6C00ZUCq3Qs4D#Obi*?!#KO!8DY4w0PdiqjRYrq6VPQ}<>ow9b#pJpx7 zoN(;8*wh?C2#~iBFMHZn^A|yN+90<>d7nHn% z1h3!}UK7lfzY%`1&(%P~3?KfMib=5dlPaOj-1-5MCDqYjMiqXJs3{7Yu?491f{ z^;Qd;y5^FQ3e=%LdR)2W)nvlX=-31Q#l#87qz-<++f#9f>J|?{i%!q$?&b-9lGOsp z^tjXTr?PNIZ%Mu-lN`v32D;&di)8G93z`5n-+>)H+z4k`F_CpUdz=PKo9@xM}uc=j(~hm8@QeyC{RXcAfSgAkCR=m za?*!|A~CM6Q5-*OI~Qc76lS7AiH`R^AK=A+;)1F=W;ZJevBzy|=dC)dxw|*wGx5j> zvPKaN{j!mHc6<@5MZ2gh(vxAsLgS$G?+?P}4j8-!jL0o)M_|^l zS_tj~r>JxlN>;tn$yP}Iivai-BgL_8F5VdAnqy=y09?ljP(WswY5O!fpp4NfqDWtp zjb#-=vN; z9l*SdDobtn;up`B?hGzZJ=2}?D%dQhClPkSB7VnnszH{OK|6*;ku*P~o|{Pu%7{lC zb#Fra)I8eTYlv!w5tX#pJh3`6#xb6f%RQl$`Mym{8o5~nFoW!V1$m;c!U@4Wr2o2? zM|;C)o@^}S-pEw9SuK8$dE(HouOi-!3_x#5uY_Uum6Sx0b$N-h4MweVrL_?h&;E;C z`3;V;i+hN&>}r?ugVMX4O2x)cWUhmPZBz%oQ&+)Bh3I+H{)MY_86>oFEG_)lbBli9 zoq;-Z8KKJi>?B+nZdIrpvP6=o)Y!tjhfL!Sx9oy%fGL;8*sId%R23=zQgTQSm}uKI zsF@GyS^{JNH3&HjmD3<0)EPl?9><%kz$*vj6Wg{oElD%Bx~_uXev6=b$6fWoX5sQ# zdTN)W&Tnnw#FxW5q$T5;x@x8o%N5dBm5AtRZ1s~H}ZTtk6aC2;BUS$ zL&IUMEf;?jyE&CTyKoLrjltvJN!NrD+p?uKPcSdY9OW+RTEt$&ZC$-}@Q?(on20Z_ zWc%?mVSVnO2?^>0^>HDQ$L}w*+iTgbw^8-pU&}s_Z5)%ta8*W9M8eWE=X_|~JyaHW zdyVO@uKYmInz2tN4;{GMUNE%ZaS@K!X!+y>GPWNU9xtO24Jk&1@=2|NOA){5P#}W5 z;;Ef83@fGCGe)@nn(68#VC6G*#%h(g2uH^ltp{N|_(sej~n2T(J>?_ZV~QiCE?y1UCsE12FkyUtx6dh zsDQv?A=Djxf93-4na^C;F~=+zfuUxXwwuG2_p*x00Hx_7uT7cxzjF`O1s$A+XXfqN(g_B>;3n{;a z2b8907ww#V$e3^fDFTA;w|v2rSj9rE#DAMyL^T*7w^zd;gD}nPXAxMd^o=T$a6#h+ z67=oJoqfm8^Gk>l1aac{=UM4R+j7e>F^cB-5gh?_)Td9(E=^zihQx%ntOg;_JC}cn z({!X+N8H#g3^|0}ox;PYq+xoeuWv65J{ICXiJ1Nyd*YQq3T4bik`mVAt5nnrF~p-; z+sLD4RkcuW8FooPqiD&CF}iMG_8u%n%2mLc;|H^opyOxY*f|j!iE`y=9zNH;&9L3p zEtlpXVVW<6lYu~*u(o;hHH34>1}tMv;f846@5^EHiu=~PY%t?zC9jms(U^XKm>y8M z^4St1{Cd$n*Qrm4e39TG?2HX}GOm{mm(|l6lxtt7srxowgI^VHwj^){rPNhE)6-^8 z7l9-VOr_&zjM2J2#W*$Og&h)jwzuvKkK^*jD=Q%-qm+ZM%%#VCA=W|D6XM0TiVz=I z+{w6sg{Jd^mo5nn@lwSQxC(csXWx8Mj6|YCiQeMa5@*!^T9$aM;J@p#;y05iU^BC* zL(JhA7CP4v$n29@^t(HeVm8eQTm+CS#hRkhfGEa5hud0x!+VCTo%Fn#0Xc=4<)p72 zPp*6OKl7{B|LDKZUVWRBJO=85JY_uyy5gU9>(VL#6tUxnn6OcFVf2tcKz6poRER%H z>Pn)CgNv10q&~u$xUCh=;+=5>IN2X@`GRI!!iF4?%&6|@e{tehle3CF8>4mXI{Fy> zwb2Qq|4kT<03tzaWFr~-4+niV&=e6#fK5A?^_UdA$;z97IKd-4M(#;&D5-n0R>~9} z@)F)d$L1U~`GWn#T#+Vm10imf18D0d9?*c^@p}*v1aUA{U4JB%e{Z}Y_O1*jqS(;g z{rHJz&-;_^KHuB*mrOLSMqhRl0Nx{J3%(h7&;r_6%^H``wF5~c7}TFs|AM=B-?)zr zG8h(+o%lZ}r&%oM&i>-A`d>)8mHI@$Zsd6iwD%Ena1lGIs?@7}K&1Ccj(~O>-_c4^}*v z`$K{6R$ezAh0AkW7SMnYc*xa;`AvG3^KCi7%xr{%ud+s%q_PRgfgo$@Q`;jC2L^aL z%_Z|f*}nyFGaeSLc{sc#7@mdiFTR7_bit)M$Meq0K#rsani1C6=FnFzUwZQLih&5l zvlQ(59_g0vvDZ(XgmYFhn>550oD^f;4%Ano#xr3u#Y|9v=bIhNR*~chRFO{~B1{n5 z`2kBxrr&MNFN?R|fqS6d)tF(t^*LIZdD-yH9JHW?xiYY*wsJzJ-Vr+zBWwa9M4)d= zMZtciKkYJVWJZNFCn`QvYG5b6J7-#r6}Jwl@v9Z7U(^QNPpeMJES;mE)YJc5)OOBs z*bML0Un16>cUC77()18o1m{>SH+igIIT@<}o+_-6!}rCnfvdOj&@O`T(L(&W%f}so zw=y?olYekU-6y%a&za$aw)}or{n(o(p(+z+=N!IKjvJOm=k_;(>noa1 z7(KQDm6(<6C%g0}C@S#N7^v&rbAs#c3i$N7+s;yf6xyt`iB$Cm>f3fFnTgvJ%M_Ib zS)I`8q0HWk)T&@zEqlGblqXBmR)VNt{QBm2#o}A@P8nd1{91sGMmXpJaN8LIiTTON=@NXH_HvmR)HzsXjMh*L8QKnEuXtE}*gogg zOw&#WFeYWJE2M{&Ay?Lzg9!Br|F3P!(}zXW(Ss3A@5YikCAwz0ft_Esh2}<4>G}V$ z4nZy}na^6sph75=cXJess!HgrueWm>8fqsNe?8%Um_TVQU}@IpDYs@p0 zFoA9$mYBC=!jDn}MG>J*>cv~iis2BeaLZrQWQqJ6?eC@N61t@-24L0X}C zPrHxkob)d$UnWnHLF0)niJ@0tXdGTI>`~cmBQy;JrWubC37&N`G{149yU|F;#3CVg zyAObej5nPcLAH8T>U(4|Xa9lh_<7G-i}Im2yo4cWWyD9rMYP$xH48i~k$IH50rpO0_+hJwCg_7~+v659ADZ?7$Kfz;=F_RbyF1)0O}g;dQ#xSvJT8N3+Xp%Sj%bm z8b@6CRM;_&L<-Fm%Gcg834mV2jd_BHQl`W6V>l9c7&{ijvW=yp9ND8wfF`R(nIy{z z7kLDEc*>Ukj$RH32j>@Hgz^uAr7GNFvA?HZb^loIwI_;-MN#D49xDXjv%noW^hV)2 z1klKWW|5?f6`^}!b(z3yBTZ!bTXwFYoQ`y(GB>-@TT~WY!-BI|ru_9B zHFprXRH3-O2o_3)+Gm<)bt|4kx28GEjHJD42~Ibht+)3P(DE6xefV^!AB8ZNn;H5D zwL^e@QoO|rklhc^y9t0w5P?C!s$TmK6w#J<4!2ck13rJ(Q%b&i%F-AbJ!OKxMJT2# zqxIX8Zi+V&Y=l$u(KB{sjyW7VTSpDbTspklvBePkHY7-Pv+mPsTRhZPS05su^9cr& z(&G7@W6!y-Ecvqv|8Fx&b;Q0YNW_r$uv0yacgjzf9CVgmnM#Pv1!1O7oXgM^MIOwx z?9(et|13vY0DH7Z0WGjCm}&7qyzGI$> z#%tq`vvA@a(x>M#D$S{*%V5AVy_NuBHI?}yB&b@_iNvGiO6H7kd+QrM=PzKLwxs$Ht0B5%;F*!byQS%Hv^>)U5A|HYgoSmjv_nca#nTNI6=a{fb zkocXYi2hATQ_evR9(kb7YpoqPT@noo<3Pa&dkJ`!hLO}q)`M1xs)q~_$ZHI2^*tqo zl6TFK+6cgy@#PS2!OTOI_r@6|fm@1LP$Z(n=fUfgQ65Nr<7zmAuPIg%ZtL-XNw zmRBat1>29vw1y+M^#)#!L1MSI83~`71>A_C`@D3^^-SyqUmO1UEO>qDG{8SCVnZ3vZa@_kgP?hO;Y56#m&VzP| zFF};yFBFwBo)(ym#@xt$3847Sp2Ft?(u7REopl(Puy|!F_I5o4b>L{$&ULhQl{l%n z)zIVz94U2~k~`nw>V8Qvm(6WRxgtai53X@SZRRMaAl~f3Dg7bVTJ-Q;K1i?C;6}NQ z=+~WyL*%eo{y4>eW?=#7bl6D|izfx^ zox$!NfWgS^6P70x@tU81g%KxKm>r`uu@NA(GuBZ{TOsMJs=7I8^j7-1nyMxksLY4` z6P~Xkr5WC(RgsJKsjnNDAxmA%Tkk1xlL$>NSeNkSk+44YjD@DymF83Iu{478(@B>! z%@ObK^^&T;MW*(&9}TM6U)oTVfm@~q$2CL7W8K>~EkV{-uDl*{l!$Us7||`4H(p0G zU-loK4cwcWu>*8Jh&L4@t{|D1{A>p^ZBPBYXZ;hcoRIq0S|Ud zwft|kmJRSb75@0&8H_QF=dy`e0c5dA^M^l)Z)XiE+U|d0wmJSNoP<8C9uW<^kYLi6`NWl!Xw!wp1N|R^@7X#O)HQdbIbINiSvJUr>zjI zd*tCAkkoE);)iu#>H`WrMu@oH$O@=V*01nEZ_4l|dIA0=v?|3_FG(m&$MZK<{gQ^g z2B5L{X3ONI{G}Cll|9a?iIM~*x1TXspytT5A?`sw$n-E^hr;ps6_f{IhWS zQ?GtD_PE?!sj6Vn_c?T4c8|P53Z>IQC^hJ+hPt`_o+OxLPTrc4sC=BtnteZR`^SGK z4g2|X1yiA{_X*u7EjwfYdGFJKyBKchH6Jdks}B#xSW3VETLf+`=10BzRb5LiIXK|> zhvv@VxX|7)$b=dP)WxgCyXL(tOxr0Z$q$9)Z)MIjuMS~s9J#J)-Ob1xzG^0TY!Tz& zb$HcHNkwaPfkkj8a`AHBM7ax=N=#g!3`EQicEWb+rmq|AgPqhoieLl2-1Glt^`%5w z%OsCBuZk-k@6S_S!V`nX)Zb|9!85SCQFQ)TN;qT>O2JG-T6hzEl>|`cEL(ai?ZjlP zFM%J@IC4JweZe3kvYVFcW=o1f4Ma(B^FRrhz?!flNqGd5FwmW2h5A?y74`h-?e}zB z3b!>NV8g1=1lq@nW_uQ^vnL=;I{98;;&})QB2$sKlYBCz0ke2 z@%0&t0EbDQ(lmIR0q~g<_&CaBa5WC!_8rROV3w-qf3<~|xNjMkZ^@~{@U!x?%#~N8 z?){hUloaN*kWsxLznlF1pf@QKcuMH#)(tsDNdnbqDy-Ol{`TXV@%GYiz!1}wHR{D1 z_~zL|qVv(!zO3axZH)|U!cuqjq!v+W|LE#ZC$&==S#5zzoDLL|lwLbsZ@G+KEmODP z|DX>|XID3*b!r~X!sr|IEuJD&{Udc~$0uRdQ%3=@SfD0Yg9w{2y z*@O6}q2Pt#&b|C{I~(Zc+7-m)X$e0Sr!C_-Itv|*&Z5*bj-))N```k77AByFh=GOe zeG|{#8T_bVi}z~FxyN(km03_Z54243x&S@W?vjdh6P=#d{L~ivsfXs zs`q>pDqV-TDQk5eiB2>8AV|8b=qC#eeg+1{5TeMffaB#ry-Z&^E`*__Oj&7tab@A? zlvi>Dnl7^djDcn!Qy3q~d@|HDQMuMxKV@m`7&s8}iL~%&u5cvvKhyvqO*$1(E;QP< zFFvau7mjrpsj8@Wix8=$BydgJiKG#tE_PmLsVwsOB{QDzFNF8QVHu0e`*rX0VAG%t zf~Z08hc`^w==i;a+-P!nk%-R+sexQK{r3j+X7;Wq+7@#~j|=b|8h#_({FBV%h9%KT zLeF*)-4NjQt3lv1{@gShd+6xyrw|W_N>?en1;qI}uft;L-uT7_=EYtMpjJafB%d%% zaf{g{EYyioNYOH@r1!TP-mZM>J#~OZ@zZNAF8CP#YVZPGe;1jA&?}}t8|q_0tJjzD z@7ngwi~LQn>?@aQo+iR13pEsiJ7Z8@((5Ate>3Aa2Dp0ooTxBnzfe?=udppuX*m5b zF>)|_Z3y>Jop>%<1Aq)|w+h7VGrmA?sWHitNAz%SDrUJ@D$IRJ&8*-Lm#oiYD=HJ9 z#;*$Fkm&w+Dz6m3K%0k~%G3h;vKnzB;!*ATv#=Gsv7aet!}4sE<2#0xBL2YAiF_*i zc6xEuk+3#k*CN%qql*sX7ICCsxZgl~_!))H4hP5P2#C2%PO;~~cqE9qxzq$x#pzS%>>ra-iotQ0|@zAvY z0U@y&{NR_CE`l!3&O~VCb8xsC_IkF~pDcdtF}ACXPMjjBYXk1e1&B?i=Ud0=Jhvo> zo3K*ATv@`vH}CzC!{i14&{{2dpWbIAVQFK_3k++1W&<;tWyiQ+m;e=~35Io*U1{4Q zcL-{B2RAYU|17=qF2VIK6kvL#BF}V%9nkikx>Qb&6Xa02tY-l-llhM2hn6@6at={+ zr(n8A6_#7L>(^jGbzH+eilaHk^KFch`^Tq&VK9|1`ol?~O51Z8oT~XjHdJ+AN^q zNL9$(A^|<*855NBHZ!j{%uX*8lkI}%TU7dY`_9XubM71upM`Mxc$;t?P5UZ)Q*G2E zFgKBba4<_h?-Q(@2@lhT!^}RhP`0K3UOpjytrF?@V<5^{)K03*suNSE${=;j=&m~5 z0fgI&G&6fOg1t&ddq8))V~P`9tZHU^5AEV4vl&sT$$MR*xqy(wN7B=n0t2cQ9-*B~ zX^Vterhy`z!;b@}BOOW#{OvaaFtVpcK!y{FZMpWZ=l?_-!&cVQZm0tV!5f)a4pO5D z4(5-%u&j)ANwD^cG_k62|FZrV- zdJ34#kPqo?EjjGLXQsz=b!HZ;N>_sh!-(~=!EK@|{eftPW%4dPpIJ7ajZv|G`w;J+ zUter0*J=mDO#qlJ6j&j|dYG5to^S@eyzk)*C%lHzkpS`#dMh=|W>^T)cVnb+tXB9i zcAcILaDxG!NiFPnFnHk>m^j#lhs#UT(UFWF>;8m&%X%Bwc_ufJX3j|Btp<\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \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\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/651/c95dd067\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 12:40:03 15.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 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=\ + "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 \"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 \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\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 :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - 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 A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\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 :local cnameAddress;\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 :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\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 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/interface bridge port +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether3 +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=Bridge-LAN list=LAN +add interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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=Bridge-LAN enabled=yes 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 interface="ether1 - Unet" name=client1 +/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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru 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=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.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" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS 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 +/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=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=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=smtp.mail.me.com comment=smtp.mail.me.com list=iCloud-Mail +add address=smtp.mail.me.com.akadns.net comment=smtp.mail.me.com.akadns.net \ + list=iCloud-Mail +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=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +add address=8.47.69.6 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=142.251.1.136 comment=youtu.be list=RKN-dnsLookup +add address=142.251.1.91 comment=youtu.be list=RKN-dnsLookup +add address=142.251.1.93 comment=youtu.be list=RKN-dnsLookup +add address=142.251.1.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.147 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.163.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.163.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.163.105 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.163.103 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.163.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ + new-routing-mark=main src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +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="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 passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes 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 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="vk.com raw" \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="ok.ru raw" \ + content=ok.ru +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" 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 raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "comp-lenta.ru raw" 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 raw" 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 raw" \ + 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 raw" 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 raw" content=api.db-ip.com +/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 ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main 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 graphs-plain=no rest-plain=no webfig-plain=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 disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/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 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="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="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260515/20260515130002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515130002-Diff-Config.rsc new file mode 100644 index 0000000..87be5ba --- /dev/null +++ b/MikroMaster/history/20260515/20260515130002-Diff-Config.rsc @@ -0,0 +1,103 @@ +348c348 +< \n:global CommitId \"main/651/c95dd067\";\r\ +--- +> \n:global CommitId \"main/649/998f9ca0\";\r\ +351c351 +< r: root, in 12:40:03 15.05.2026.\";\r\ +--- +> r: root, in 12:10:03 15.05.2026.\";\r\ +2300a2301 +> \n \"telegram.me\"\r\ +2312d2312 +< \n \"telegram.me\"\r\ +2337,2338c2337,2338 +< \n :log error \"error when adding ip to list A record: \$dn\ +< sRecord, address: \$newAddress domain: \$aItem\";\r\ +--- +> \n :log error \"error when adding ip to list A record: \$aR\ +> ecord, address: \$newAddress domain: \$aItem\";\r\ +3059d3058 +< add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +3061c3060 +< add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +--- +> add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +3063,3065c3062,3064 +< add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +< add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +< add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +--- +> add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +> add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +> add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +3066a3066 +> add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +3068,3069c3068,3069 +< add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +< add address=8.47.69.6 comment=dou.ua list=RKN-dnsLookup +--- +> add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +> add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +3071d3070 +< add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +3073c3072 +< add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +--- +> add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +3074a3074 +> add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +3077c3077 +< add address=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +--- +> add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +3079,3102c3079,3103 +< add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +< add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +< add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +< add address=142.251.1.136 comment=youtu.be list=RKN-dnsLookup +< add address=142.251.1.91 comment=youtu.be list=RKN-dnsLookup +< add address=142.251.1.93 comment=youtu.be list=RKN-dnsLookup +< add address=142.251.1.190 comment=youtu.be list=RKN-dnsLookup +< add address=64.233.163.147 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.163.99 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.163.106 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.163.105 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.163.103 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.163.104 comment=googlevideo.com list=RKN-dnsLookup +< add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +< add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +< add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +--- +> add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +> add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +> add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +> add address=142.250.150.99 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.104 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.147 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.103 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.105 comment=googleapis.com list=RKN-dnsLookup +> add address=142.250.150.106 comment=googleapis.com list=RKN-dnsLookup +> add address=209.85.233.91 comment=youtu.be list=RKN-dnsLookup +> add address=209.85.233.190 comment=youtu.be list=RKN-dnsLookup +> add address=209.85.233.136 comment=youtu.be list=RKN-dnsLookup +> add address=209.85.233.93 comment=youtu.be list=RKN-dnsLookup +> add address=64.233.164.104 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.103 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.106 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.99 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.105 comment=googlevideo.com list=RKN-dnsLookup +> add address=64.233.164.147 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.73.120 comment=gstatic.com list=RKN-dnsLookup +> add address=173.194.73.94 comment=gstatic.com list=RKN-dnsLookup +> add address=64.233.161.132 comment=googleusercontent.com list=RKN-dnsLookup -- 2.52.0