From 5d2a0c2006fbc903f1f46c565e20a6076cf3a89b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 30 May 2026 18:00:40 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 30 18:00:40. --- .../20260530/20260530180002-Binary.backup | Bin 0 -> 259477 bytes .../20260530/20260530180002-Config.rsc | 3462 +++++++++++++++++ .../20260530/20260530180002-Diff-Config.rsc | 6 + 3 files changed, 3468 insertions(+) create mode 100644 MikroMaster/20260530/20260530180002-Binary.backup create mode 100644 MikroMaster/20260530/20260530180002-Config.rsc create mode 100644 MikroMaster/history/20260530/20260530180002-Diff-Config.rsc diff --git a/MikroMaster/20260530/20260530180002-Binary.backup b/MikroMaster/20260530/20260530180002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7d80f699d3f1c3bd251e2710d463db27ba9210d4 GIT binary patch literal 259477 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
    DVo<9?Bk#FG{K7SZ4?szN!JC_`3I zFnt+xUW;K!-{<*1T_KQcUkp@s=@&f-&w4VsYX-f=4z6nx z=OJls6Q8p`-|bT)gA?!*if2?T+$Qh8d2H=WtRTvuo>w2TCdGYhLQ9!4fo%rbg7Qu} zQch$~ygqmT)XK!G(4T^%CeM2{&(W33{QpwqudN(Me<`_e%RNKd2XI3p3T-VosYXZh zVH$g;h%dFWfcBK5n5rF%A)}DsX06u{1r<^NesP|^xYFKjw>`;m|17M_=GHo1&U^VDJ3TV`h0 zAXCh%5Dor~UXj~lwXHCp%eXve%`u1B@&enCXaPi2Yz%`vI0Nt!J#%D1A2mDR(xb` z^RM>;6dU4k7ASY1K6ram;RGeizzkgejTjcKxK!um!JVLSot|#!3I;=0bp!=211k(M z!T>a*-2>49#+asxxIbBdqm)1leQvd_z1E18UEz*MDooRCM5K$w4Vcng!`@I|7w-|@ zUiDKp>QgRuO~M(Z%iRRNTcX1`iJHPZAbPt0#Z?i^ z@2Vy9H6cSY{!+i>E$6Ou^c}$ah4h9EhHasCnH3~@gEYu5c+<{Yj^f2wF28z=lbjxP zBa2xM`T$x-G4&F8_IbhX&vXJFDsnnD&Y<2qcLAnzX?f+Vo!dejp5au0#<^ zDLwHbi(ISu;rOuCi`c+Ls3FSVn-Xy;_k*-KB52X$E3A;J3nuJMeTV2Ff16|^OO1^_ zS6M2m>v9}-2L(7xI7zMmE-;v$Rt)7Lbcg>W^qKSO{7PhI1qyb>NS(KFUVzvlqf^f| zqG;>*z0H+I>f(e5f#(~G0{{Fy`^Bf!9Wdt@zXlJ60E*V_?3F7pF={!Vl9zFXT%(}H z3@6eN9m2N@Gp^)VNnnYIJsXYrH?f$3topgGG4;o~bI-ui!C3A|3TrkV2loxlGbvty z-$av!j{f6?7)uRFoJC&5tlVDRC{-xXxQp~VLy*zJLa-fYb@rauoGC}^~Q#ShXo-g$t@1<6up&>clpe*+ohLv&Of*2~W1z)=|LN8S+0fAmnnN`W}W~cGQJF ztPn_ZC-c`|z0o3DPEV_Lg(-D4h5%mb?4KQp%+sk!F<Qre2p|%uLzf{%Puft~+~(!C?XVv2iv26iny$5*4knq+>63zje-e8`dYMMgSvr9Y-dNy7P~KXb}c%?BV>hk)NF?EgM~ z^w>Vpg9L1ga%)N8VtW?6ayy3Er_szHBGp-=+Yj$*B z8_!UtAV>9oLB_QXgCN+%#ya5bps8SQf$dhX)m=3fOhcZyqW*9{D`8^DIAFDC(Igyx zmoIN1QtrXneR8}mz=!cfI-)<=56Bk-amo{_x7dS6smN-LcCz~`3#B`o`LrTDfmcLG z94$Bra^SKndb5C6(^jq&RkaSWmm{zHl#DZzEWeq^AWqZ=QXeE6Vn)eaM8BL?EG<0? z{_5ifMe;41{+p0nnJ?2!p3LfQ!&rtNy?mZ2tSKng0A+cb>QqE)^c7%apSodc@&_8Y z*<7adI9jCI@?MQpVhy+nUU5|e>HVCE;A4n4JSg^ZG5N^ORH;^KBnNi7fF?AcSh+JR zYc>p>w~d2G#5aEJiu8c#HgS0sWxci`(-5Q1etnRrFEi#A5XKv@j@uB)$o}cDVBe=d z&$Wi@4Wc)YNG!`C#o={;xM|4|>uWn+bR-Aut9@d*tvjB`szoUc6N+dCV4;Bo0=LnI&vGIcS^<$IWZwly zDULQ8$vR$m*3S#m=)dC?hb~Q6V~5!DM-dF(3Jlt%dA>}r3G)3c0)4MU3FF-In|T_l zuK8t{r_QN^m7r*oBNVq9F8Pn;Ahy=9S(P!ta?_ZyHzfX6-LlCRy6Yov`a=Qv2S`9K z8F;75%qhuJLDYWPBle-;Ug~rvU}{lDz=>{z0-&y~D(*Xxm!0gwN|YbkYxw*>SYQTw zF?%UO<)#5PPhr^|KC`Nt-)Z>9ss@PB(J0%NB?dAivNc|{HO|?^g1eYDmBKmQ?c!p> zl?8e(ala5wV%gu~=AX)w^|_XPrzimMe^U;z2rm}>F#ibIN2f}E3p>L%c>!`+H-?UA zm-HhUQxdtgA00AUY1#b8dqGZ_k9;5$`?^Xe z+>sSUiblIcm(qPo(=Y?|=?eJ?d0@1{70 zWv{YHFt;xtE+U%R*B+r7-5t+l(+i#g%cu!ZrM*jn0>`yGrI-j{bLOlqei29En;gur zFQ1`6Y(oIxDgY>~lSu7FB&hL-KLQ&pee*~g;#7VmDFIs&ik%FTxs=f5koHE7>122R zN`n1lk%s(>7XwFho&&xRgaGA>MF8>@VJ@%{vFeyg`3AdqOnbWf;+M0F#mb-D&%7=e z4CjMEP*(A<7w{;R5r8cKu2H@$?zk)kDaIHwMGEG=M)ac;`mNc0DCBF;Ry3nVLS*^> ze;32>WUr`JMs&00hz)A{3sLCYZ#mSYEP4S>73z1frEoxydIyo?s-+*KUi|+hDE6K1 z2q#i=Cdm~d*y)&=*Lj?V?YtGoF^;ip*ivPTSldqO#;AVG^4c=&2CFi3x+=ja!gLls z7t&5j>QW&|mJX^D(j8kUY)P@LsW^(Mj<+}kO|NjJ!QfGzoY=Gp>R919UGQeG&t~nr zE#+UvZ_qt|_a0j*+Bpcbhoa7E$R#~X+>1_U@Pcc=6HMn1iGr2js0BlwfrIf^eW5|v zhnAl`fRiX)gY*tiIXnYVDUcCN5K|KH)l>giVuEqJ;>lAFm#wqJPuOI!4zYeILV(+a z1(>OC?=0vmph|z16va08BTf7>!t36cthF2&ImNvl6lywJ$)?*Xo8{=_&l*yg^~$Lp z*s5#A47sWF)|GCxR*{*u?|+ab?s}RL*Sgdr@-AD8ICjnTUPj^5(ogu4C}v;sF$yt7 zm{EwYx`%eSK?E}#uz4p6U4c5ggwqF6*Z>G^XiM04fnF@^IYOzNlBUWrkS zGO=w#N{VNmRI9hmgIRJ;c%!t}`MkRBaGnK5c$d88 z508NLjWWF-@mk&2DVpP+We7NoUy!OhDfkz98Dk@ug38A(1{Zcms#5jAoX`vE)RPDu z$lb?bnN!`p+eMw9zZ*b(8oXNkpEr4p$z&^3hs|9W{i;E0QF<1+>9PwO<;|yltE04V z-KU7|2d$JOLkKXnvSOSRF4`NUzt9HTp|X>|5l#YeZ8rq-K+M(gu*z9Wbd8{tmGUHm ziwC;zSs;MUuLpV}cS$*5;PX+V(TCy5uQ270P>Z?E&yq;wy@G9xcBdLHu|vB&C-|^N ztBBQCIduKx^|+ml;G!1ChbJ*~_E&J7%4hCo$X1`8hC^hPZ}D3T6xZHk3h;H8ei#X?D{UaT!L#tayTk_EZB&Q)r87_2J6l_3Vjx^NcCJ z{CaTHU-I^4*E}5;J>q43_wm@DLJ(E2phGB&S;6mk5qHJCtw*(mI&qn^H!(`E5Sq=s zKB#RtofoqT3YrH(C~j21R@~>alrYkb#WCt{WfN@ZiVe7EDLbTn%(N;!oUF0qiZXfQUOp=z0l>Fh?S79a<;5cLRdojy=&0Ryzv*@T_1+WPraIH^n z_k3<6J1p=HENQ}<8u^sc1njrruuO_QSlpCN#f6*l^$l>X#d7R&T2`^nM>Pxk+4nHq zK*~8+uy7q?t9{Vu^>uFzJ8EBRLyA`qaLZRKO%b7k3oegh%`cQO{Lyx}%^R@%=_iaJ1QS8gpie*W;1# zi{ufir>6FE6lke}LexAo>|1OD2B;CG#AuKYsVn6kl+)_qMqDl+-WI15QQra87~Ni0 zc^w@B$w@G_KzMllcHx7K$a$G7yl06?ASYJOkh#4>cZg8^rp^Q(9-KG8m6AfEG4%eo z4sy}~$c(_-8sO8A;4LEN)wcqrGc87})`0yHcWDLxpYQ}oHYr5jmHgk`?s8M-MFbEM_H(Tp*cB?*WAL5Bg!eVN4vgu31kqdW{CJUdt+#!f)e9~-3vfDZt->BS zMJZV==6()`@4L)ymw~nJuoI8uc8XD-v3V&nX&i=L1Bvm#B~db^j0v@GJ=@wERgYi< zAVs-VEC2zi+`pU-G`Xid&~Kp+__3wQfL_S~(Wr&-&+>z;;GC3>Rx=iXX4ktj29Ptmo2Qqb3YH@4ZBYVumOxq1d0A?M;PQlvtsR>QioIEisl3U1p98b1SY6!{d&K@28kWkT`R zaG3fnrdH~3lLdIR9vuC4rzuS1V|mQ30buwpUE$X)X+5yM#CFbrIQ zFHSOXsi3=q5fL`dKy6dKir^+3NeA^G`6({ILSPIps4M-omlMI_5rZEI3*4HYfq=%% zU#!-l`UoZRB|1(L`nWyViUQSEX_u44$$hME+<|}vlPZy~!xXqqR%MC_F+S$rr8Y)! ze`2I+zd?Ur)XC!${F32uDvonwve-_!uBh>)!bwL~FBLZxtxXXj)%bX;b|YQ`+mE^B z13$EVJj!|V1wHSQ5-Kc1uLmj3#$p@!d#cks7fMkQ#jfD(GQ~qG2n-!@iz%f=2#fKBl|sxa)vCap zi+Zw6xxZY#Y%Pf}?~w&~&QEzn9}#7QIHMv`OxVkbl+{FLj-C@VpD|TgXv10*714A@ ziKEE|s;40;=tnm*omHd`MO#ooVnd6Qm)RL0)S$U%TaA&9uz25@emF`H1(Dbde=2o9+`g`o zUCBb_CE)ZTd`IB7ea-53@0Z4{xlw-_{&KbQ@;@?0n1QkS^^dd$r6xU%NNL_4_sHm) zWSQ1aOgEkMrqQ?FwDjnGL0=!YI`$W25a;^U=-aH2YorOcw?hxl?fkoE5gLyv<$Etc zJ>UJ7jX>w#sxRIc5@!qDlau~Jc{i5-BJ5SPvX)Crrl%%w9$P(~tT9GQkB-2J<55g~ zk5*9MW4vq4!yOdj!6fxxu6KxACWk7r^T#Joc7RVX+ST@|SZY^dbL8IC&wq7n>WDl2S{M1>)U<)Xh*jI)FYZBL3&X;Pc6B5^OUpG4<7@lZ^;v`<9mFgfa;212oM_p8Jm`+#wUm`SoI7I zS#(X4XyfcUJM?SS;RTwWHj6&Z+1nvO%9Yl7zvNl!>7D4|$& zuV|ouOaS;?NEb#5CZKVVLnqh$)*dWM{MuqmAR;N>%u${25 z+ez(~1-gx$pIkQGC`=eS__Mnj8^&p@{H_#4)*{MQB4y!=N6sCbgAo258MW>d>c~O5 zR%R!h?qquS%T#cPZz4ZD+C~e>T5)>XYm(|Ic;aY~EUJt$buFejh_|V-A~(6sXxcFn znS)vAd`C${S0d7!&n;Sn@j_h}yviJ}Zm!#wL~+#tp9Ys!cP5paIM| zPi9+o+8N2oFpwI2F->>k9iZHhOE-PES{3T8E+W>1VNCU}xb<+>C33Q|hI96vrOQXF zwlY(RqqFGY9<$-a%W$k~dh(B*ykOQV{KTmF9fiwCs!Zv zz#cK>4U%{S>`juFGN~v=;W+Kza*Df1$uS~Ti@QL1#h(G0{?aFURvlsB!P*1<(%QiA@Py;Hj-*n@O;^Y~vJEOmlB4Y1(q z=g9C*U(3Kxkplf(K(SG0gg&rE3!5ZcH3PGlAo}YatnG$z*QueVo|^b?7jUsn($Jux z^mw4_oHn(KCoF{IAM{&4d4xwmW^QwZ6$_%)w$Fa!8Q6k)f=@rZmSL5dlz#r|YCd`2 zv+YyJmZf5UoA_(m^)G*eE|=#Cq1)7(!q>X}MF0;*zG(OKBfiqV{X%<;B=HV#*_6ui zJ?mNe_FQ#7zIhrC7QOlv%vdMHeKW zq1+jUo>@sORj~ncZpED#RyMmt1*20{Et5<0Nl|og0!B&z!s==i( z#-u2I-f0|3pfXk@9fE-N0VyVNfUfxIxoTqTyDgkEbe0JuVr^kk=~{#cxbZ1Iz|f#q zK3@p<;s_wnuH;q5GO@QKW(K9#Ta3g&T?5+)kPCHrHv5cMN{jI!vP=o-C3E1$W}hp{ zM==kCT{u~S@_j!-{_|%t61fQ@ffI|gPGV4fVS9g=4FN8!?+5WjSJUx;dX7ot;<87W4Em~L?H@8nDz|f+l0van;?-|R&1UsIccFjfN9Tg zs9^2yHk|*#x-6<>^i!%N|EY5DM+HvsZLPdAxm!sHZY8 zO-e^Ms7e@q6R!O9EP8~rWYLP28F$<~Yow-RBzd{PCWgM!{69ZM2hi2!A!Z-pn^p!b z3`>FKe#c4JeDK7Zq+-p5v~~Z%85|!w{2iF)gz)6+%G`{2arf@CqtRzio*;Xsi_(y< zw{qXuPDiZADXkZAMdoGtuDg)m>JLFIszacb zPw)n?<-l7T zL-n8GfahJqd2T?pTBFq+V(8ga|2W-lqgED)0sMK&8e}APONfZu2Z>kOk~}G*!<=6? z%2UvPgs3GPIel-DjIi#Y=Z$xS`@WRs6sSc=%@AFZAL`;fNM~w2{}ciae1B6=KYXdf z==v3;DnD+$aiYIAXt2MNNG+?oU_on8 zdotLKr_k}9BnJ|Z-+2W!ELW{%`&N>3v7 zO6zV2Q^YlIt7ayB_fRCj)os)_Cp!|M3)F6G2iS%afZTN$Jl3g>dYw$k3%^g2>UY`d zthR0whgsF2V>A>mvvB3G@*|90i&~B{iuk%Rosr<-<^j77*$sri(*SiA>+)r)18XA`8manF~C!avCD$w;Me<=FQ!IP`sV7~|sd5{NJcy%Oe2J0qE zhxV!Z#lw`Rs~#gLL`mJ>BHZTh-6(4Fq6&4fsZ8Hq*wV9Z?!_5kUurODAyFvA9_{R` zjcNSKutrW`KK(CscD9?nbA|evXGp83rm5_8%F#H19h}-^M!td-%oXk~CT(sD$t8CC z&2;&C(iPr@o$qH<~Mr zY(ZSm0}6Nu>-kavK?H1mgUYD*S0E1{tU7jXNV1h^v(v0u>Nih3tZ!yK~hm6YfStp+l`$3a(+r2#w&X%GPp7TEd^$ zmstaLKgJ&Osq`=VSFjq}!Mz^M9z7A$uv=IY?N&Uq8J7HTU`Zmzjk`V# zsl;+Ex4uq^_$DcU{7Dkj&4N12!PCzqN9!yc;%I=)Y-pWdET>sJ;MvoODgtfXN2Gk` zT@E72>t%CTntqy*YiE0*BY^kXG-Ly(_N2tnihFFy$EFq;PQ0UBXgK}CsyC@`=A`;e z$TMkN($X`=X3ma5e@T1SXsfc946#y_oV`sEER$#dFBX9Kn-~otQIK=@XgTdf==wz3 zCbDh8^`7>)kCK0?b8doyR4@z49x<%vv#ynp!LF(vXy_xCWcLstCZn!IPE-~;04@*p zj0q+dVSJCd_+9mBk-IoaI+Bek8n3*F(~UwlH3qfwQDP5<1POnx8<-t~PBiKjey;Wq z6P6LWSQTUlYwg7&5{yP4(QQLq^UAY}9)?Oryy)t%Nf?oz`YR9#^D=GApTiG!eX=$u ziDNsfEqmHM$Mb54A9Cvz!BeoffYaM->uz2sP55%Y4JdF_P3^j7l}fW(0WQPjTdj@5 z`*nYT1x-3i&c0B%FvBQ(ksQ>{}J;Ck=R74MZWw(h<3j`tgFc|Y274d1{V;#V4=>v&+6D4tYGp@ zRZ|>!|EdF>8P>hJmDtR1_M*XNLy$jtQZwTNFtXC8nqcaV9J1Jw46zrN+JGRBin#mU z@6}O2#qgNpeqWqE`V)64i`}RtUejjFH+(L#!2@)|bs&}}4{rAg_b3)9et$^bd!>$L z&BLVyx8(DUj*5zM5;e9{tA3CnsKJn?Y4po<##khIEeau)4Lme73o_YK58#B)Ks=<8VCQ2#bO zSPkEjZ0s6rh^x?Z=kqfiWXvP@qS74L{dZuZe5FL*i|vR4YRjlbpqy^|@Hmv$`PG15??o3m`ZTum2?&`Eiq?+^>= z-Z}i3U##YU-sc`BR;~%gwZg%i4Zn?TcX5%uCU(WFBnnc|)@v7D3rC5#bctb#Rac6? zr7JrWzz^J`<(dgT3mgOjhgbUa_{P=)q3nV`u@{42Dq>^Ain=53X|w<^(hTwm^|)lk zWB9dN1%^5#qIcYhbFxn#nyyY;-AvG>r3;hHf1gOmV$O!`X1=x};~kpPbq)y|Pm2Z2 zyKM$@+jo0!HAK(ef%ing3KSWV_7boasiui$UclDtOzks7$&`(~7uJa8joq5r#GBDW zLT9y+WDsj{tm&7aneE1^0>6nl(B=$I^Fe~Ot)Wn@SA0QjHztx}jq90?gpUG?XeXaW z%N4mQIgwu9nkgoHdImX~thJ?j*2@c);*Lh6OhEZvi;B^6o3em8BO?qsn8J^+s8v`? zq1#KLT7YYND}j>4f~q)YUd1U{U1a29?5pzCRtwdnZcqS%S|5=V!2GoT-r-Mms02&@ zBRrC5N;pdhGKv+TXsTl~0r)x(eg=GN3{Q;imXQHsippbng##}KAlusgyM9V z(e!&UfIqPUnJg*})_cv^Np3Z&|B=?L0og@b^kzTxD~O@;A$AY$V`5aJv+2R+s&_HC zIrq3RVNZmXQFBCpn-D_R{sfx=^=K-cRxfzN;248~kcoL@g4_7UW3syu2<}KLoq``C z8TDZ4pdUAY3nCMADnBDMODt|5IE%g*7WB(`s3`>4Xm@PK?2?02fRn$%R2pz*RTq*L z9D)LeJ_=ecn?vZ_g_GNk+!(iod`aYnp?AhC*&ex2x?oh(my$&lR+<$+pLRvHej3l` zCh!lzgzGU;%_1c;{KX+M{6@|9EH+lq;SrC|Nh)|kGiw??; zq*AHxQivgQiBt6^p03u#n$!ohM^4%iX{W}9$|>36M3Z-&SyDodRJYL8(o+*c;$k^4DC*ly4O4psUaV(T zhZpSn>A4&=t4lbF__@^-H4V^g6Gi1gaP;~lWN7>K8>VN&Ab%X2Q>x43O8ZYZ_NMmg zrs4PrZt~l-eyc-qiVbYgSZ|~-{=SW77@Cagc*l1-B^J4=Je0sD0JF}k7DuLG`lj*} z;N#>~##ov!%;yH^gRMJU?J8x7C2KbUL)1ciw%!L}_XPWcpf89o>3?Ii)ga0@xa|QL z=iHpR2qZ6^tP`h*%sJl3SX|`^AMs3;I!!b~pAk+0ZyFN{o+uZ^JeSx%)H+@3*M^PB z{MhPJ7sUF{PIz)kLc`4Rvv)UJJRNB1Lgg#qw19N(XO$;0OMPD~4L`_Q#~1wrG}qCi zoI7x4{AV;gCFq6Ci&s88lL~LCR1Ub$NM&Op_(M-U)FEV!E2%@mXpo1af~|CaecAPt zdYTfMKCLC^UKRXQmJDZ$Zn#Usju|D{Qr#K9+Y@x+abmV%O``#PsAJUYZCA2eJV z>2S;)^DIiW1$yR9W zR!;bHEEuiAV`d;ST&_haZaL=lVeAl!xfXURo=>+h)jJsbn%AvNi#TxL8>`Ms`NzA4 zA)#Ka@%WF9RGLTMp(T|NijG{>=s$pRY80O(uZr*`e(NUgb67t&rpW1HyL0cw$c#y4 zLd=(Od{0c%@cQJY$j3wV86*U+Uga#Sb&W}*^*wn5>0o(>+q&;z5sosytQ+qSj5 zZ+)Ef>{zanKL>5>yr5&-i0ko4c#+!pCS}x(PBuOCs{asv?0F;r)J6t}Mm;k#^W#4_ z>pb-<4{b&6e6<$7z7h7hJYkj<)~*WIQbg$p7a!dCaPcL0Y!N ztVwSph)HLj9AI{?-{ssuj;b9?R9zh808pwUwnyY7_Wu@^sqLJp#irFf z662)uj?X{@?|3Hn#}A4m={bDEgya?%UdVvjXFB8p)S=?<3E?N+g?4zvZPqcBEhR#T zma7G8p16wQLPkkO#|J&1>kVp70GUSWEol#*%Vv0}>0QK0>>lR=^c2ru_HR7r;s3f& zZ@wFDFQ6fqG|Y6)aDVhwmr@!&d)>}r=x}AVo5$Xj&R(xHhkx+sGd#9h&j#_$HA|7h zA%2JDs#>L>zLHRRl^n`V;tTW%H9C=Qpt8CB>DZ$FAHl_oMr0(#*)A1JK4q2Cks(S* zRCg9f>@XH!pN?F%6BdH~e<*m|v2#$9P4GJJ))A9*@^w0{7yH3w0(-74 zEb9A)@VX5wNBJo7rX1y#U<1yyVWgUseB*V8WtZ5*bV7U^5ay`oh^44g~vb< znPa(OT~R^^^|RfU>CAR8tFgzFS1f7JFS3dPcBU8+z-=h_Mh<`ACNmvF6ZI`}5v;CT6;t})+#k?t`vcg)SG*1s#19JN1TU%*e2UH!Dq8|u2k>oGY zy>W$$!bTBk^M4zBCyFoD$J!3T_cM~@B7RD3h*UmjAub-eJ~uo=uV0K|m55fC|Hl@yISe%#&@H zOSytBuMd<16)kMWC|LM1GC>reDC22hH(X3;;3$6UZ;kNncx%P~f^>f-DuDuxu2RPO*uq5?ir1>BxD zIpM830rJ+n->L*!r^59{J=Vgam1@tR(wF4E<~>j!Bd8cBfNUl9+(1#wO%g}T2Ywpt zhKU(ZBoWIxIjosQK|n)!0+o6tfO%UE&v}OCl0DVcNyts3Us)&r(Br})?fi7bmDf>! zX+~3x@6`cG{|~P)^G_FAO5y2~@V%3%R{#*%t@`x(?ynCJ(cHoC<_Ysb?O z_CO55AnV0e$TvKu%uGt_RT*4!y@7eYzEEy#c1$c=T(4Q_Sq}dTj}%Ou{BmOI6PXZ&~>idR!!21aupCXl{DAeIgV$ zZ&L7nMfKDLKq{-yBp(y(z2-#@tWqL9Te$G)$6S~NUh1*QXq4)A38Ss;ee1FF2#2-% zBn9suu^zqaPml>F3GbBJ9idztA!^(TqNo9w^Q`>!<=#2y2nV{xE46=!7n^?8_W2yY zh3FM0`&EAJ_&X3Rjb}pZXhv&B8Mf#6&?EzB-)6Q&o1yQsvKQ$~5_J03RZZ#?7FLn6 zj>}V-mv@3;(MpMSmDA3N!eYugwx#DSxL&jKm}*xv36kS32CR4~Q8Gfi81tg?*=LE+ zK#j{^87@n+ySG1&?cmB)c1J~XI+kGyRuh~9M#Y1ot}-z+VDx=vCM|B0>XJk~xngBl zB&pbfM~i)HE1}L!ePigVP0?kL+~4Wun3X5c^2|ZO2%)$~?G39mO+|6GV^;Hd%3hEZ zGG?h~d73n;n`?N6YM%JGEtIQ2guMNaZv}y7cy%EweNKERNXAD8)w27&g$WU3BZDQ^ z#+&_l3TmR>+OS%F1s)PcNez#37@W8*LI`9CT+oY!s+!)L&|HVzbc}lrSj)g2n5OPr z1ja;=gNBJ<&98Z^j8^8>RM%U^=4S{?Qxf{|J(O)M&ri8&X^)BrzZ>MV_;eh&J)ah* z4@_icCOX{%UO%8|mA(<>a+Cd;fQck;B!}GM#30KQRjtE*=jiXf!=5DI;xb>8f^Z%c zpPsL1aJUU1P-e-Re?!|lRq^Ryj$*VsuuM5Xpt)$R=7>!WLspike+X>dw#01MRnHUM z4^|VfQzxaw|Dr_=HW;E+`C%}JrYB3G;-pRrID4n57MZ(Jj2N|glbb8s zU543ZdTgyTq3*cl-q*acM530h)CiMGmoii!9{}u@PYIst(N}A-oq7c$&wSS z*MOq6IoK-Xw&G=BgXIO50&iiZf3Xd9Vo^aSq8MELx&RSEiTHpP7meYGQ=``6%9}PM-v~;;f0i)_3VBk$2qBC;5pUy7xiUSCvHD;oibH4^u{9pqA{adyoHEXwILh3Kn8s zt2s->gNIed9SaIq=<>fUUW3qJ&Kn0C3t$|y^m|4)+=1EHq6)WJv4_MYdYR9<6khSV z<^G_i5wXZ_zV~X{QkV4qtA^V7dz_;5lmb>YyEE@p!eDbaVFmR|Z>0nzTDQ`O|8a?c zY|GR3S;iJs4>h(mB|``A5rE4HfT^oZ|LzZ1u94i>&WcfA$Fo*LGz>wJ?>U4C$`&*^ zh}zrQs?dK9C`&M7ehO(pQ>++5Z7Ld&m7b}3(2_49AyVi8?|h;rGkM5c>9@uL~gN~f7Uo$GGo=z z-xs&^a)J;!{uw*a#N_8S%sGDl+I10WzAjDYKDDAHCvTv7_baxS>a1U7pF zG(h21{7-?uiWBM8*AxcCpnV|Ywd;7S$0X3trGhr2soc5MZg}+rqK0r zX$rnBR=i*A9*F_MgE<@-TTCv4qxsKw3EwTNN)L8f1O{Cb>puqi{AhF&1+i+7Pop~& z>(tsQj1BT?_~)FTa)Su8!ZDH=96vzhtQ4s#t@Iac$klk~UVBSM-<+DVv33g#Kcct_ z*e8vgwR04FeK)*Tr!~+!b<-?;fn-rLG3UO^lmf^cEm?qylRK2Yhr3u^i`lo0@)_`i z_bT_sZl-&Z&4NCCYhG32KGG@;z(aRTaCij0E2`p<_x3Z#%*pLj>cim>{be7xG(6>k zyw^nu{g(0K2yij6f%a9!*r*O+)6#C*2Ho+)I=25aRZ5X<>P%koN?4$DU)?-Ma=EZ= z*Yz3RDXJ%>B6wuUlUsyjjnifT$fWf5PPJI0IIykqeop|@k-}%kBRg;u^`y$C3luHWqN#qOCmc3hZc|5zQ_DBJu-A<;L@BBFEVxX;{R^veT ziRi%#dGm-COvGjdNxC5|H?!t^l_%`sZ=)3w_L}xjyY-OA@wG7TVtetYB5VW?i^&Gq zWf3xoTe5Aj`~&%9VM6sqTFb-l|1wT&(UU5PKeq_DOX~)+jRTz(=cjbz6dO$&+jK89 zzM>^| z(BMdl;Q)!bwfU7jl>;Ys(!Scnw025cndzz!s=Ql(rpPdY&$sVpgu9fp!>Bausj4IY zVi)oUT88#i1!2AjycI#5(Iu_y4Fo%-g|rDqulW&U-6Bq1&iq?YvB~<12FK~iTnDRC z3X5ZesVVynayroPSK8}1H6EV$g3rPs7!78OB0}qDjQy_!##x8Wd6Tal5MFfYoFQw6 z2>H_fp^2+8@Vu!t@laHmwy4Vey9AF{{1B*d9xPzsP)Yt_;iE%F5rRjVDQGYO@on+X zU;chZi|u8bN_S%D^92CaLGFoR{{M@iLGqKBOvl5tXGt~%7IrlDmX;r8eI1~-@6QBsleurhbVH3C55~RMuzkdt2AHp4cdbB1@D>n} zxCnp_a{!zPy0^7jO~7gncgI^U2^?5(ktDBgVYL4canjpc&$1)EG7NnQ8vn zMmw0dv)FX@t69Oiu*RD~`BJEoTCn+x9=z)-G}J@(wZCkqGGSZCa3Zo8xsrbzoTR&E zr%uZm7>zB*@~T`7R^@(!+%VWWV31zI60Ki$4p<*B>7i!m?V|f;pnm1RLWHLmxJ4~{ z7Mira@|Sy7EQCnuNCMwb%UZ;(C>qeVAdL$qRELx6?_WZdj!>v>2Ku*GbQzn>p!#@` zLs7}T*LDJt88~6)tgGB?s!0f)y!rifm^({9rC;$I9no#` zGz2Q;bhZ!^cx>=d{IcnGIENgbMEo`BG-vc0RB#h@GB@W|2i#Wz&FW_Z0M+~2(FKu{!Q3Z?`-K+ua`@f09-mmf>?AdW9qM<94q4BZP(QV=`W zI&Nll1mlBEn+uP)J+ZN8F+CTQ52N(D$hgUDcu5js{2boK(fRl(4pb4Ag%)tr_{zZ) z4jDu-YZTQir;L5h6(!?#^+XUq^nc3ubw%N}Q(~SS6jM`z9rkO&x^mLJkYC z6O_*+uZIV26X6Y}*7C`5Fty5o#%^4t;KDxdH68r=NwP)SrxWeE1*K@fm7IGZ1f>K+ z!qaonveZ6b{Vu7|PYn=<3?(b3Q4XMYWl1R$ba3X5wUe#73!bj1-4yB;qxinZQ(~=ICCJYN_x(~oVvxnq0J`WPEF`PQbxqWU0{{k4 zY`dUQb4WM=+Sva{e}Aw>r|&i4ugfLDO!Giem$y$Sx)TcR5|bGFR&Ws8>;j%031%Oa zrB_4avD#mu!-+rM*o5mPgLVAse8qzWNuv^20wf3BH5r0L?Ys*fkX|;<(K&i|bNhJG zFE68s-e#VNHg^hV6j5v$_qhrZu3;!c&R{1BV)EcBK)P#koVW?^t6GVb`fkEt=|rh5 z8+)|g!uKKV;pj5;)3?j=QcWRzGu3LxZm2O?`3U?U{-N*LXpA)Q}Yi5_R$CsE=DW^bbch#Uzfy=i~W~aVTBu^ zvROQ}82!W<@eBxyr3Yav!yhpAZ$ktPpFa=2PWFWXFvciP2_c7@9jpRVhof6e<%N8uTPy=%eEX_u=T^BYPHubVgVVe{L4JUUT&vQj5Swo$i1X@!+rUnp)70 zm@<=A@0in0QDDa6NdE`A*(y_M?iFPR-)E-MJt&8V&79yv z7cSwzKuHB(WO>OsPRPCaj_iS>!GKYC6i?;wA4?S##a4IRSQN1B`7z$LER7Enn*U%CBC>gt zv$Pb1ItaR1olYa**G;X$%VP0(B`WjQ@D&1=U0S=fddjNxi&~h0BiED3F zERM1{7asyt)8hs}S4gCKEFz$omEpJ_{6I>W-(o8md%fEer3!dr*@eDIii Id)>P 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%0D=1 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

    KY5=e(j#^>{=%P#Fj<^gK5 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¥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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260530/20260530180002-Config.rsc b/MikroMaster/20260530/20260530180002-Config.rsc new file mode 100644 index 0000000..266a9bd --- /dev/null +++ b/MikroMaster/20260530/20260530180002-Config.rsc @@ -0,0 +1,3462 @@ +# 2026-05-30 18:00:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(18dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1420 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \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\ + \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/663/fee06fc8\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 02:10:03 30.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=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$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 :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$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:30: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" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \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 trusted=yes trusted-dhcpv6=yes +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 +/interface bridge settings +set use-ip-firewall=yes +/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 comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=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=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-IP +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-IP +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=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=VDSina +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!!!" 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=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +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=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 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.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.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=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 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=209.85.233.190 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.91 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.93 comment=youtube.com list=RKN-dnsLookup +add address=209.85.233.136 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=173.194.221.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.190 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.91 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.221.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.221.104 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 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-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-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-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" \ + disabled=yes dst-address-list=Trusted-NTP dst-port=123 \ + out-interface-list=WAN protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +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" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes 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" src-address-list=\ + !VDSina +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + new-routing-mark=main passthrough=no 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 new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ + VPN_No_FastTrack +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" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" routing-mark=!To-VPN src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" dst-port=2904 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru dst-port=5000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" dst-port=2377 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +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=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +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=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +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 disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +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 disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/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=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 certificate=Root-YE port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/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" disabled=yes 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/20260530/20260530180002-Diff-Config.rsc b/MikroMaster/history/20260530/20260530180002-Diff-Config.rsc new file mode 100644 index 0000000..212fcf4 --- /dev/null +++ b/MikroMaster/history/20260530/20260530180002-Diff-Config.rsc @@ -0,0 +1,6 @@ +3228,3229c3228,3229 +< dst-address=!10.30.30.0/24 new-routing-mark=To-VPN src-address=\ +< 10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes dst-address=!10.30.30.0/24 new-routing-mark=To-VPN \ +> src-address=10.30.30.0/24 src-address-list=!NoWG -- 2.52.0