From 4ac3c4b340ccb9f38565a5195be38ee9729c61e8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 3 Jul 2026 06:40:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 03 06:40:03. --- .../20260703/20260703064001-Binary.backup | Bin 0 -> 382117 bytes MikroNUC/20260703/20260703064001-Config.rsc | 5446 +++++++++++++++++ .../20260703/20260703064001-Diff-Config.rsc | 90 + 3 files changed, 5536 insertions(+) create mode 100644 MikroNUC/20260703/20260703064001-Binary.backup create mode 100644 MikroNUC/20260703/20260703064001-Config.rsc create mode 100644 MikroNUC/history/20260703/20260703064001-Diff-Config.rsc diff --git a/MikroNUC/20260703/20260703064001-Binary.backup b/MikroNUC/20260703/20260703064001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..f2aef502ca1ab18aa9a1b41e44de80df554e355a GIT binary patch literal 382117 zcmV(fK>EM$sF8D})CB-eB-(Zzjx=Qkv_vfjYfTaW000000000800008;0FkSW4h~Bn3B#)q*hY0Pk!H+v(CM4d(<8|5STxt#TXp!nQzX$_^Tls zk7D%Fd4J{ed&?>jyfF7yLQZ`jg3%gB#zUIiu##Y7kC6k4e6iIzQ0y%e;}v+%>y&kj zNI1bA+(3rjUQpw0Ei$6yZoL+~8Ir=ijb64+|NM>FiOxZlFB}*?1iw1IRwTgdZlNq)@>1u^gr$;_ z6PyjV4rKk2*JA^W3;Z5bVi#drl>hxOYX7b1VERWF#1(WrC8BQw1q&5bC854&N7iF7 zhUp36AJ@`|lz-0P*2U<)h($I<;KmJpAsY!0lvp8XsA>B~@+>@mBj2s&SaLnp;i)nu z)rNUi5$2{Lx&Bhl-FB+cKBG9|ZF{|Cd5QjvHB;7ZSqJ*HU?wx-c$NPCu+4=dpl>1b zf|e2cBS>pOhIW$<%d8rbEg!vy)qQc3Ze^zz*A|;*)q%|Ps}^*}u##AjPuRM1t(yt% zua~r_ng?G4`LB%4+bN~>U;STmR~i0E#k6V&oDOSm)g!WJuRAjSwVFI5RokJirPsmx z+pPCkqYr>_eds+{!IOv;T0-GegY6q(|I zSMiPyo*;=clF4t^wD>rqcD|17tE5tAf+Sh<>IueWZ;^L9zz${Y>mAjTUb&ubFvS-s zB49YP(%lGM;i__b#16U%D>JI7$&A8awL~`S?olISDUFItSmJuX6Y+migEGira(bJH zvJFA=Rb&gXa7_vXI!_$9%bf+kBOPO~HcGwoZtBAq>zUc5t5BI0ApKxe4C_D*QPs8m zhtb>;q6afiHab42q~^Vl#GQVWx}}a=*svbJR{QW6)0QusBHc{Bpo^`lfY7XLu;TS^ z^TF-%1Cr(gcs!EpLs)Sr`s@3Ce?#>{dM*-j1H0^`S^pGZBAXG}t6Fz~37S!gaKWJqKLUg=Ga;Jc<#JAW_p#L#H?Qk z9qo3Q8e+l$fU#}A@VCCDgK?AfdI5?SCz0wzfpf*?>%=`~bn94*tSWYe{&nPg2W2YT z;Z@wlFZFJAl%){Gj3Jjyy_D}s#1HgCavdXgH}HQIf;T*&<`>_f286jRxx;PkAHS>5 zamP3~V%h=4t4Gr1?IDk5MN7vX!zoXEH3&&cI^<+G*}mQPz>bJPbg7B7*9TW#$}~wB z<%|)u$d;V5W|o%XF#O%tMWmV#GoC*lnf=mhbNNOtA#KGG9m&;O`lWiC2?>48kw4Fd zOcuUECrlR+pm5U~6-$!fbH=3#p@|TZjB2CECBSht7usG*1F6ya`Qg zJyfty(HG-AZEJZq@rZA37u@%x%wguWU$6!s?Yp;z?h2Sn=Wwj-#Md`S)ja+Wc3Kj| z6N@#n?3iaV8SAYI5d^S({Lok-?Ag( z)T?r;X>)1LqM<1%4n$J0+)SoIHV(@+RdrHW;XTmQJn-E{od1t-G5!|jo6iP0wdPivqN@eJFPTr*->JRJD%B~CjN2~GIb`giffk9)z#=ZR zG=lZuZB@7&)gLqdhUJpJ)+l{X7QXSj-Ub&B)2Vgfd}ZtUc{egmpI1gV)!vCzOeLx% z)5vaBkYIAH=6(HQoP9~6RO(@R=@k^zQ_3RwK3O2>&}EepLdpR}SZ1U&POJd1SBUBV zPNNz=I#!MWVHa+vJ5j{7BDX^eAvPfPDvb*2wIV;eAsLE}s3XzIn%gMs&Tn9V%%|u% zcG2X&x(N_vb9hJRWp4q{qtj43xD_W=1^CnfJXPsT30)wpw7ih4Xp_1Kn267Y1&(Y- z|GGPkk)rG^P2(w8|(;y9s$)J2EW~IrFY{GHX?p47CPTH*XU})k%+GQTQ!c z(6lCdwP*o^v*kqG;TZf)tUoW4QBhguYsJu0PYm9l$S z)%N(N9;^_+6to>1c4`ABvj1kXzq&_++gMiWp<_1t#7A>d7CXRwgQadC^9^*I0ov7d z46V9LhRjVA769a2=_M|xLd15!oOpgB_bM}5n1G%DGMcX=T$D`}`gAH9aOFtB|2|ZZ zS2Z)aZU8-V!ttZih1q|p%Vr0;b{&+Ej}VC9gYNT;+B$HsiRo$Cq;~7+)Pia$*UVYY zi7E!alcHSMp)ax{ELbTvVnO>|qrC%1dpj~gsZxSD0P$*ZWP{tJLFD($Zbb^7aM@kxzEGfs4pqzG?5jv)YY4O>KieMwBv%EriGry!<^%~+#GTG07a zA&f09N(8u^<0eVg<#fd#aJgi^SgV~~LREdxiq2tRybJ?xQ7POE6JPZu z6Ab|(7oVh^@-z`+Jt129{uR*8WO5fp0^yL!Ha7^9f?ad^kEt!*HeFSoqE4(4Ch_hp z=8_mg!mK`^zxec86tOF|EQv+WY6X1Dkw1)vW{3E080qWPYt;{HyZAGxCpd5O!y%3r62%sG`%_1$B6jb=K7u=1 z<9qC~4+;+}4_#%PlcHC1-_DJLPmH>L`HM*v_)~ZXtXUyahGsVfIHu*>Qelpg>*htb z-ljIpkDPPXMWhB`vt!KZbL1Fm(cKs0d=J}21_`XD6?}_Ch`l_g&W;tPMgEx3n$k&y z_UML>wzM(>!nfC5V4RMVdrVQ4fX%a}6h)x(Y&3<=`|RI(EZn)c+sFmrH&W;!m#XzJIE6+k*HO9 zEv=rv@0N~$%~EBgZq+2Gqt~f5$1pP@-}@dr`s>I2#W{q6UPITTQN!{A^i>7wO`nei z7YiuR#+9otb#^fsZAEU-(-!FAeNDkXRLgNE9`rao;I&5}nb-{!7(->UJj2%uD_t;g z`THeCd?RDq6uUX1CBt-GXZiQDX z42(O(hm>?g3KG5om7_S^$cZ;)e8El#J_B8mv?_qHT?FUAV= zc8z~deL%`>4}`DbEF>Z3kO8{B@^fZeew(VXF1O*Z$(9nK(P>>qz4k#)_m=B&xgOos zf{HF8nbxfEyd<(`NDCmb9EyYUR|9 zH0gM?d+2p*pGSd@tANYr9R&J1UI&Ne9u2;i`o#2U-2)=T|I@gM1zN{uyaivU5ycUG zH*ENu{C;}IFE)NuBta{zgi&gQRqS$Bw&yw|N`k&D&q*rkj=!ctDCF3>U}qp^2WH^R zZ7KHrsHtBAPSk(-WWshEOxtJa`?Nz?I>R{lA3}y? z#Y{IqdU(}5XO*uxnx=z!jFU`5*PoauP^;0r>&n%aw)SJbmCz7*Q|X<*g%4=^`s;HBb696U(+r+K zD_wvdCA90W@8&}E1`4q>^>8+v+HTrl7Gfb!SG3&}{mW4E!vSvX`~(F}LgYu^7SJ{> z8d@5RuFsJzg~1t?4z82rZtKxi8(=Y}qv) z*TlumLbViL5R0z?ix(onlOp}Y6TtQpU$3he$JpLd)G&x8k}BJ50Do@0lgq_pdkN0> z7nq-a=1INI%D2yphj(ZDsOJr41+f^t*!o+6m{md^Bsj1)h(s{t!d^UsT>7SodB8LT z_Qh24{5s74&jYNT*F3F@IoihJL*WXCvKQ(^H@wgxAV&7j5YkgbI5DX%w}#Cl50`47 z7iDNeH$%lVi`TZ`JAnc#XXKz$ZKugK&l&jOVW*dk(;Z;YeeG`Ag|wr*J`s=d-ZWR2?XBskgK?Q?r6JIQ>nc5CZa@&lPU$U9I*n@_;}@~swwCLHL=~$Tw{iI z5mX`G|{VaK5SrC>|YrFhcMOEXWrn<|IPp}N#qK7VjOGuFKWXnk?`K|8yKFKQ$} zF;pD4^S$pnp)`(>7-;f9uA95}Ljxw!YV7BL?k9qwnsnQp&@M%ndH?6L8!(UEh{`Mp z!+Dxo(0sDlaLKz|Blto_I{Lo$?1H2yttu@dZSIqA( zk{Jn6zh<{70a<7W{(S1hKfkOZ$2mi9ko#yW7OQgs3Zj=_cLT8HcQg$*ga)jV#T)tWnxs2|#80 z(!h2j*n_oHh@V1eGZ@l!#!Je+K5Xm2i@wJp%_*It3{hSz^M;9&O!=`v&BQ`5CN}HI3K7dX-5x`;;t2kN4N+O9){B4{|0tG z_$UH*cA)P9{_3k|FNC*8MVZ5-oJz3=<1W}k`}th`k4U%(s5X4^B8n2sn`MLl^CSIe zNboGsk3mKY(^KyVP^?ih6o3}e{W9+{$FpBJ61pZ%hYVgV$)KqHb zmc@cVURUn+x@xNJ)VUh3NaA68HT9f*X7Ztkx$f;#5V_82E`(6^oBeKk$!as3A!t(X zQFF<0k28(zF7IwNomsSRJQD?8tg3eg{|q;S3mx+_qPP_#8RXj->)2x;Iuy7W(g#8# zej*U9-Yv+dM5|?dTcZ|_3FbKO{mf3ZT!i6uE&Ljb2lA=Pz4!3)Q2D!v^}dmN-9X0v zBu6+6ZOK?3=N6QGZ3$3zhb^JSYxgGRcP-$)f*kY6rU(8O2Z0&8{_P<-NBIpZXlGtv z8E4`)V?&VNReeuoh$bN3oU~ZjV;J0K{C3>J5a%jbz6>}@Gf&yIz_U08oEGB)ry;|iT8~X#;xfvBr!k7=RG6fOAn7&*<-S(B zux=HzdO|a6oBCID`1ys1Ui&yE3y#9d{WefwEyyS9YfO7pT-6~1=}Y?u9m3aJ@P=8p zU>L^Uw{gc`n7fCmDpO}T0saDk_%?Aww4rZ(O~qVmcF*qXk!;q%3M_)f0*e|sbcHDdND;bRmgD39Ul-<{ zJ@fG9XGO~R^G5scLIQX<(V>tre=ZMr0H zshn&b90f+!7USmn*JSRJjbx|BbvvzS8F(~lVnPqZm|65Rn5hyIQ`QCl`iALY8dDV5 zNB)Fh{$qSbIXwO_$p&f2bJdM^HMU|zh5?eR_q0AjKZ2fvW8-3(;z|PNX1R7SU8>^W zETa+9f^ifW@(0B_(hmFqbXvhRga|`3seEDscVwWi#XJru30@#607x|Tnh;?}kO8)> zv=s#Mho3`3>ttvwXuNi$c3?+Jqh%&guK|Tb>I5o{I!KJ=2kkZ3>sL=5TIpC;rmX_= z>z`k^Ted;#=hh9Paik7c+7paRRYoOwg+!U3&^Xl%61*z?HA1*4_UBy|s_1ri?{D-p zw3-c=kU*3xcuuQ;c*J1TN+!THujhR3fl57o(OLk{qy< zJ9W)!*OsAVNJ5*se?XtRyijyQT4(wFh4cJWk|G*FOj6ZoMJ*nq(YVObOpvW;qsXEi z@k2Wia#CJ=`_Hpbn_MGmjLBRtM=-Gov3{A>(O~8}pX2`M+!@($iBQ8bWm=dt36Qyf zs;FC0l;s$Lxy8sUs%hfQH>$~Fozr=+)H+qS=_dmasFT00QF`yMixBvQz9RF(jOzkPkiT}iZGJC*4s@Oko%6C-` zD4v2zCD2Q5_RhfZM(awCmyoVyclP}$7kE+ z9XWniu+RvN%S&q2P<6!{2z8IHKBdkwHGr3Xp@U4nYm@@)aJ#!)>TCYg#sfF~kj|4# z;E9n$NRh*_2l4ti(D6yg<`ufqf#8BbBnThG=ZF0i9G~8`QLPFk5jrV-v!_WbGBxhW z@ibQh$9&6NVIS6X)CwM>uW89BFv$lZ|Hy?Fz52SPUMVyjaynOM90O#@aWfq<-INC?H=g3^ zLiPb(8w@xdH{OCITk2-!q=Kj}2{3bMrWC#_t@TBN<)&v{s;brZ@J}s|x`_0bNV@h? zI`~yB7o86#*1aG!)zZ4fFfw9ih=N_>Hit1GDJc+!^aiZQ?}O~*cdzHdJD7{WxaPQT zPygAZg{obz2JhibUu=4VG@+bw(2`JG_Za7I{AYMOFtc9}PPpqZ2dRJVC?FOhmJgs* z*RHJhhoZ5Nx{&v@-m9zvPb#ZxJB-XfSxL>|s~S}v%DqQ2YZCIOtQ@hco?i2^8r;2w z;<9v{u|$dKbBtmNW9~n|z(A*4XGdo8uE9t&{;;f`o89j3N;E(q9bZ>tUs^wAst{++ zLy08VP>n+DnEg1o;RZBCD`uuW13= z;b8r_@(roE{0YrPehxwIR1&S!#^aXCL#%aNk`IP9!~PiOR8qb*e5^hpWDPgx9T(j~ z2Y;3{XSP5DZ01u;sdJl~5B*ax`l3#+J?3jPtY}TK|C0-W!wsCE%m&4UygnhgIV=Jd z)0RrMM18B5!B!FawmTh@tbt`Cbn>af&j(?1a$k_;lvxrOfX3}yVVYYCTWZ-H8a$Pk zEzXjCEn$hbr#m1bq=V``Y>L^NN1Q9-50v+Po*?-O?YB4i{P)%tk{2dsjL7CWzB0iF z0SAF4Ufo)V$z@!Rz?I^!HB1&eSip|JPHO1JQlMwzgUe1)3C=V50!He zp?}5pYTw_w;!+5{W0#w=%lV_`kC(~AaL~IfSpf%jZEYy47cVB7G8-g%ZLNYjFDQO5w*QE2_{ncPMhWzwK`NmFhhdA!X2w+ z-KjZ0SB8xbJqwhZLmWQyD@>*Mpm%-x-q3kw-EEYA!hCAE#U(@85h`%zGD)CJuf6c4 z)MQW80_wthofQr6AZ;FR(D5x-t}n<;;ko+DR1gdUuuC~>kq@PYAo+JAeukH}x3 z72~Z!Z-U>9s8pqX&x9AQt=10L*{|q?JQNt^Qw|d9p;2#q+*H6W8^|fvu456VJEz|% z7G%)uq9LEWd7m@8{Y&{vDKT@v<6yAanzzN-=+DPl4V$^IzD!N2q|SK$h`d>Y9=Y8y z8u>N1Qk0)4Wus8HH@oLh;GwEuCjJ%~Kz3N~Up)o5Nrq2!X13X*(mDtahm$Oq3;i-% z2l`jCJEhlD+r9Kr9tBv@BznLJGTOm@0swx+k9%5|(CB*-1Iw&YBp5S!=JQrflCdE zA@$B+6Yy)1%rT<0-jeX8m(PVz2=7G-hG_Pl?ds(Tzq)Mv|KFxkyp;$Bnd?KM`$Cx8$`>0kCUvwR20J0 zGfGT?KOQmerjqm0@m#T+UX-aO8rin_+pew)0JIb#D7s6iDb%0?dg-+A9kLV&^sSVB1kfnX=)AAX>-RLda`CY>r_VXZk z#|}|5I9MpO6R<_weY>XT$-!Re%#D55V%)B$N7Rlnp0{!)MWP-GwJO|mg)PRr57qKC z&jD;$C3_IH<~d)Ba{i>tqDzMZagR+H2y<d| zSacAY_#a`7AudM27g(h6uPrT+lkMFSND5%SS!Sfzz@7pMVDk zt!p;lGI6g`m4SXrr=tC+hkC@hZe_xc<^UMc-q*P&4UNB+u_c>kSKgcb1%m#N08+VN zYdfymA7ytJw%m-i)Zu9rYwVPafadNAXtb)bw+Q$Xr~YybE8w3mEgiHDI8YM;4c<5m zo>P++T0?ZOAqK_rAJjdrW#n>##iaK$NH*4Vi3>K zqM4yFp`MEwY@V;l+s?6MfWY@EsV<{FB84Sh1*Vwf=$(?~X2Y&WdB>m3YWiRqksap^ zj!{fE*Lig*w_*5#AEpgO<(i99Z+kvU-FxI7GhVumRVAV7H4KiNjQ?vDO>^}9Nl486 zd{XiIO{@HjV7)8r-S)j`f`Hd{v?d493s){p)AN0`yciJqZ?*k?J9TVW(Cxw=yh9(` zht~DQ5b_7cXD!gSZp`(dXbq4YVP) z8i)`27G(?`%oSJxC(7l>1?b6m^S>(pqZ8h5h>ar(u%JjWrRB)8o^6h2@Yw6!>q=Kz zQ%Ow$NF^Q6bq1^`BZvZ*^fW#t<8 zz8;U-oe>}O_a+ju0&GrY+!(V^1utSt1(*;;XYnjGq0fqO?K!p#QPz2gB(jI<^A)?D<{! z3(Dnlb+KGFfnFBw7>Y1~O1a*SU&H#Po!d_qRx!{S@MuR1Zf{3xxM&hE0C3N#aDw;u zbpoBIyAow)B=Z+{U%y#fq7PnGa>{WyVFF}dlc$4lX&l%L8S6lIzI>7@II%4E32Np^ zhN*B`gP)|u9WQCr5K?kv?#d4@>R-DQ-3tus6T(rTkGuw^vxMqx_AfGuJQb(|slQ{& zGS#p~_b=GfGYg2JyYr;x>oN<{C89>PA(0X0Xst+*6akugrVqUd;MXc|+PSQj`tkq? zK0i9}%6{{{`rG#@&c?78oa;f}s^Nz)u!&iPFZP-zWk5L*X}VcJJD6BTiMB7i>h#X`cq zk~H3Z0X`ZGa60dLH5DHE1p67(4k^+)b>hHRl)#AC;GYQug`Z-Rl+&{TiU!7Fu4KRe z5>z{NXUDsDqT}GB#gjt%ki2!oa_Qw17~TKg+QCMTZ{5A|$7 z8(2}585;>Fu%3RqH@urUGine)xG}cO@WuLe?(yi-fi@+s!b)O&Mt*%k zX(1pD8_Y-Cy7g(SUB^4Yi5cE`P=p}%|8k!OowtXW({^>@vMp%8GtL{xpT)gE^X+R` z$)Fa_*NWz3YP&{oONkkZZKGk=iw1G<8ZXaKeB@ONdZZynRyE8g z)>$E09en!8;zg&j_&Y%0{x69lag1igKEcl;vI=uhQq6d3r)sj}hDmFfO3!i-IlE#Z zn6{$#Fe%$vS0?>cR&2X-Qx)^PhiiFvyIF<~%(2c-QO$!bDQ~CCa>E6tkYp(#l;VU2!RC_^50GNL$4WXL)Hh4UxX@hl5YV0eN zck&pDI8yQYoRhG3zv)@DGiGNCIwSBt%JccZ-GQiNNb!s-@3fbB4Uo8$CrS)zi#=J! zIYmQfE4|F!OrASS1@E{k(YZnU!+?WH;hZ6Wod0SeF$Z^A1yj->n(MuF)g)n7TpquK zf$nT>gQWO@5Jw1Z!aXj!X`efYi#++>S!^p;2^1Fbo+MSwY@gZ@X&tueUMK*pIk(0n z9Qk>cyR*iC36jXvtGql1KUvmfU5KZmtVp?|A(LTyj;R9YsA;caJwiyM?bkY}+6Cntw763h_AKT}dj(aogKfBN?cw+}> zWJ3--bR19YlNbPiA}LJ)(v;9l#be?9S>PDkq2q(M^1%&wl1rg(eG)iL88X*kS6N5h z=E>I%Ea>ksVK-<`Sxty*tG8?kc*!Y<^8iiSr`-Dh41+x?`L6q^l+22QFU*a8H=KC< zTSCjdM8nGlv15euy8OHq5d}6xU>Ri4K{WB0bR3+iGdl#sfRD^~utHb~_c)KC61+G8 zgpo?sp#hN=EOm>Z;cTfOUU6bvuI$r3JfvW}5vlE{UqXN!ZwF}DPlQb+ z&8UnER!nhjL+()0q`EAm5&f57N&xD{oJ?~(p!(d2b^?Cg;VXwgRlbjR=JI)QHMi@7 z9M^ruTJN<8Dm_WNEgnhy+0d9%;0YZX_j0mp(^>ES63a%2@P1=^-Xy1;z(tqhY_vuB z80qL4*JJrNItGK@@#OI5`XiBoZb!u{o>Bodl5^b_H8G4dgth0Wl{F*Uhhz~|=q7fB z7Du)Ry)vzwX6zh$)WAQe_J9?aDY3qLUOa}v$oIMXb-rU^-nKIoFj)$xsDIl-QMz=T zMm=LPX->a3ted4<1H+A4fzwtKw@d5Q)SEkLAw<5S;@Z1o;6fHS$`I;3ke8InS%135Xa4*^kr6!O@I!!+rm4X744hMG zyQ$oK=iB4Hqv>>2KOA}q^9J15c>N_!omWg-(2l{QW-K7f?X$(kbdBc$i>_eCElJ6% z*qEik<@nyX(Ge`BWouS$S4~R!dx)f;$@Rv%m#6_`ECnR(sViQ+vwNyL&haencWtMZ zVgIIE<&Wt#Yy=l61i4Abm#@a(LmME)6c4nZXVM-eP@X@~lW-J4J(f^KO9$UHB{|wA$Q(KLQm=3Clv!(2h`6 zG%X-ng0SBa?fW{-Q2GE9c|uu9@~1;m-8nVUK1Z)bi;6J+%Gj+dp~6t6Dvf3scDXC++2^Bp`rF)f*;cExJEv3`YuBNnmu4*~&x09i zR|RP=CGy{nu(})E5azC1nRdTd@TU^BswhGhm>j}LLDG2=Zft_>JeiRE)K0;Q05@*` zc~2`cVWy3eH+>_+43mnH_Z4)D2Hc?ROlV-M4*vQD{291fiCf+u;BQSL-)yyR+Qq}E z5g*osh<+nmd6PuGorbk4$Vz#kfN5~N&xL4 zrbQjHum-y<9mpBb{UqYes4^_eW_;ohAwQB7&r2GjaYcM1gN$kcbTl+Iv zM`4Yi0i4{L$i@kr4L81CgVmSuXZGmCmaHC2qV2U@db`RGov-1Ax*VEpCh>}qz$rmr z*)?ZG-;2kr4fHG2?h0BfQg$@wL=vGmz9o7c6T{+gP z)tBHUY$Y2y%pW)Mgk0g4B^85Hs*|`v87sAPOGhV2L~;87AxHU+O8|aFv&R#I<72?d z)>A3XH}Tb8dFS}cp6{KO~a zTxWR^Zuhop@4v(3op`>1(RcIy)r;20eLA{bPhqq4^NM0LZ9|zpB80fBBezS(OQhtB zemN-=7U(i?UgAd#eHeL>fGW^ntyc5j($MlF=01eQobEn#y7ekXsA#_*J7Z&)s`o^b zS>hE*WnTkXLZHBD<1XXwQ(P}OBV^4RinS~kxk4EOFc%<)OTBq|DrIzXYoB0mlv3^$ z>D+8t3-ghi1mb3qssk42D)4y_&t*@Ha%%SRw_&uz+16t6K3l-KjGed}lzt@D zIf7qkbCX`32Vk<7INg#zUE|y1{46s{OD~=V|Fu7N%&Hev!#W)-k>R6y7w(3Lu{MI@ z-$+#CEs>!*LX!yGyD4yDM_HRUqsr>bnm9)_NLwD4K)q6lvXsS@@V6!syQZvvv27(d zZIBCBw2j#CgzZbFq<%ypKQW(bH-?`;i!b^-R3aLdN@S!imkm znNV4xAaL%Kv_2s&c@rv|HDP~r66h9DC{S8 zg?D==Z>6m>BqF;s7d_porK8+EBXQF~SwX8B&Au>jBL6p9$fl7$>xh0Hn*NZjJIm6L zY~7nbEO5)kzS|4^nTVo|&Vkm4o2OmF z9xx=WEN^TLmI_$KrJ+Jrh=@7$s%6|YB4z$*O zmKQlLJ`48>Dd~D>)4PG4>AYagvjfR4JA^d2 z2f_V1fw#1WcFb2mlGzi@r(=YKz_ns)oWI>Ztf2{^=o$nFvoM>5Vj5l~(C94;? zb+`hEbR|6dHlG}V@3!qzJvV9el(jg3Cssrb5vsu=w<7i{YF%AxBf*V9&w@G)L)5wf z!YRuRx6Zo?m9)9I$UqBUM)eHy8GH|@@^^%QICvN+QB;7qk+~Zg*xK-g9YgAQHMGD& zrn>AsE1v0!m3u%w={-?Ypdcv?l*g}Awj!MtI$|X@PTV7a{{~H-CsqLM9R5Zmf@#AP zBE?%)&GFR5CmDpCao|`Ybrw9eGa6jc)^`8*Lk}QFh~gbqG% zy(sxd;Hnqe4$Af;H2t%|?eL6POR98M8mMc)%kZeO!I&(ic2F!(j)#9#tHT##n6KW~^KN|sRObr7u% z=Eo{jk#bW!6?KJ17lMSqYCkA8F_cl`;vP)~Jxnh-gZM=XIQOKol zX$EPEbeB%p+<|ZqK?u@O*B96vi~ML4D~Os6^aLA93f;hA>2Rw&=U)kMeH;jZWMSYn z*$w9a0&-dn00s7Z+VE*Po}0musO#1uDGS!yNnZ+u9(&Ldhwu|vR5u`mFZ;j#&HbI6 zi-Ryyl$U@RJOwy9dB&)(zLMu6glx*U#hBw&i!$&|oDDjDZ0$RHF%!__-LoE24`Lhf|&LURQQZEQw$^p>-0(IsF0LN zNoGuHJX!20=M_UN-vCA&RZp$GED`fC7YSo!^4S8FTsSG9v8}rjVJ#k-eVz09Cjm$( zyniXdq7<(1z7J)5g|+dH#cD?_PM= z!gcDY#tvkslZ#O2Z&+o730-Jk(iLvBWi$7@o=ghUr6XICCGwH-WtP}X7Ea5?OQ(Oh z>E>pQqHuImiN?~Ym@lSTc;mOw^-gKb*^TzD0tBy;4b5JV|eZrmg0vf_)3O3hU}i@ zFb;>1@fT{QALm)Vx77s0pw@SqNw)%XytVvnm%?gp7Chc9VK9MDZH&Xfjv%A`URPCK z)42Pnj7Z#9rqkEL%6=mQ)=qj&tl<#RBta({;!z3D+ERDvpu%rPxb1$)H;%x-#5D$W z3bG7L!BA;w?5Sc1_#u0z6WUucn|BhOc?|C3&k~e!v;#76fR>`LV-}u`)E9msx3^}H zF>r|HcE&dHL4O@bu8hrFAe4)(-=n;|6pFc{*~SAWCa2r$2qhDGeHzj{fZkiC6GHOd^YJibCGI|1B;}&wJaqIo$bBCG(Z{=t^ZU)A}GselFy^`Knh#6}4iL zKKyd{#RgSs*TFUEzmA5RUkXSJ&e3A5s`cbf?}>G~TdoM`vvTpk;Vg|7VXb)<6t4J% zAm=v$rf`{8RAS+)`LJb6>;QhyxL<%|$YZZThh>-PnZVF>GRK!)ei` zPbdPbTMIQ*o$RJ97ms{4QA4ywLAbgfP?<||Jm@C>&0Sn2Jh(fLmG8pfSZ|%yTtiQJ zz>WD01wwUj-SgJ0FN9v7z?|IU*;iu-C|+MLTErjurB=ca*$8s#%lzubl!5kG+AWaZ zXSxQ?0b_p)=H;m(Bu2j0*^r|Z?Dl;b=4!P2$No@@)8cR|zbZNc8bqD_c86WrP%PZ> zt2o{f44}{wokVIC2lc`JPUFe8(xLipJzwP~)F)zi#ES)^;|~yC0Wv%x0-a$&+(>q~ z+8MNaBOn$?2dD|uAO$*30;B={JQ-mLYlNRdB^sPLY}?<3@QINV9Jh^*Y`cnCsWWMl z&ngST^vDVp)uLd95k<6P_d(P0*Nv6tD320KQqgQJKZVOHX|5^(gf0I&*}8jiRRmD^ zJ}e$&XM{{PqP5%?SI${6#UfKaYH8kHXcJ#YA+|k4Z;8GU0vIeRA>lM#LHu|i6)A;W zQuDxUD&L`ha?h4vQoKiR#|YuN5F$Jh0Ev#*M&0^HKTm;T{o1~O0%w}7Q0aJY+lUA~ z{b!@L1T>A6`G@uqFvtro$=JL#d9nLwc5ATM^nWBu(QcI!<+-KSo=M?`UZB*{uXT8D zDAIy$@J6-Hsm~cspG0T&jfGJA(TxMPNhWLKCJ8G0wML0aecRZ1VjiP;6nG0e#Z&GA z8rwQee{viBi-2y#o1oCJ7RzSF++(35UFRL*gC`_YZn4&Or>N%3C${a%K1?PO8x71G z;uG*YdGx2P6L)L&A-@y`(Ro;Sj$Qs&q3})1q6w94KSEU2{aYyOD5@*GKanoCj?J=b zT^lBDP2e`Bv>K^;RLKox6T{!FEOHP(j{bj!$X_9CY1?hoxjLksqIhQV){4d!$I~Nf z!8kv(S!rd;IxSFgyF1hBiCuxRA=qqAgj@md=vV>*sHHuN0>c)Z)(jCz2>gu0RKM#z!88|{q~P5mM1XmW5|SqEpnSg_UwmHnNbQcV{s=< ztjY-Q;@iG6Y5P>JYS9Su5LIoW)obU+67F&kd%MakZ%=BrvHd9oZ-KhNOgt6AHZEMV z7WM|vOXn=V6C534Bwh04B3an>7}1%;s|X#Xq-r1YB5d7qIgl@Ks}SjaSt@+~4;_<2 z7|*j_Dqe8EcSSV_^28n9t1x=DAV~^IIQ@Xl-5Zz&26c?&RI zUVLh+sB!JMDmraOnTs#=ro}0q4Z}7-@byFzeA_#R8MvV-EC{k!c!%t zu@^aCw2L$Z)ztBM**LY1;BrL!UzsR(Xzi`nb?tn>vrY6pFfDDU6EuvPRNki+D$v>N z0RzvgFKW)=t*E*rr}8vRb%Q1dnUqE+Kc zSIaWgl9}IxQjSU>Ll)^Cb-Yj~kruTgrn*d5X7%}7YOwz<_&S25Ruo))68F$bn)O{I z{&Cye-!SO+bix0GPmy6^@!B()_RSU;mY(rIjP8QjOsXTKqqt#(x+py!K*1J960uQu z)}vi0%YC=rhBFj!FJ*ZZ%)c*!DaQtcm=Nc_rUo1xGx*P&fP=uUIg%xTS9h@R`+N)` zGDbPwtVoz)+>vn`+^T-g{F>RTA;*?!!%FP5ApxQ&TVe)E+!5Qe^_#YIF$Z==H{zFw zl*~JWC;4_XQGz3X$&(Yfn5griWd-t!5Ee?b^D1W-O+J|K3A)!O9anRwvo1Pejs#>h9GK(VH!;)A>T_}#-0HEz|0II{SK zE2EotH@kvHd<*PjZ}x)z_+z5O_G>L@3H&$aGjYd5cc1!7zu)1Sq4=t6+NPbzD0kUf zyXH;ofipO123_zi5Hr6hJ;S>Bx0KN%Q_BO**0}(=_zqVus!~EITXQqvdelA@nwB{M z1>QbiT)m~2t^7ocp^2ejzw=S**w-3Nbk~*613*wI)R?NxhS9b2HUGg^FJNONY8S$i z%XbH(v-I@QOT?x#*N~vC1cL@@l1S}*(dUj;yW`J)C#nFN(i?V06n(G59hIUP>rw6+ ze9t zdhv(hLS7j#96+bY-4S05x`o|8CP1TYuFC#%P-6 z_oJ4O0wP&}orUCck5?ZUnFp3%@9HWw6N0W~NW80$k?<4`5UVhv4B1(*t(H8K5q0CJ z$;So&UOjC^BBtGc<^+Z1jIcErfEzTe*GNfuYcppI&bcWT?ZfcS!HouYs(X1zAkPc? zuj2DFJ~ds{I2-!RFf%#&7wqe>Gzw7y(UOR0X?Y z#xn-cDO|Q(d*Z2?_kK_7P&4?N5IU8c^<(7r>+_ZS_x9cuANhT`0Fg8=4s$DDd6CM8 zM-OESS?Hv$GhSig&%`_;nKS!&hx`N9?J*2@iuUReAxPU2U#g5-5x!n)+5L{ZsPet$ zvY)W#cxAK`5he}1>^+su3PG)h!;WkA2s#K@Sh4n+5EdMK@!(wmBzrL-IuQ2v=0@$#Fp0M#MV zzQk~|VUj5rWr94BV$^eH3SiEWkizx+k_CHJ`YgV{H>x%Vj`?hvX!xpiF7rz*s&cCSuz%GlTuO(h9Z1bqy z_zAQN zG^vIz6H<&LNS>nP<{3Zv()F$^Tt9m)@CE{)lL;e4dNo81*9rx7u0`R$bKga&k5E|O zBoBBqN?20bOxdJT`kwjIG>VdA=A=4NOx>KE4!l~8t`y2Cv=fl`YWLG0U06azK2!23 zTMAHGiW6uKOtZ$1wQ&4J0KmaG|GZJNdHBSQl~|TV$#W452x%(zG@OYW9LQVIIZBRF zA{wNMp3~{Utffj(H}p|f5=VPs`hLpaq9SorJlW3>r&E)&FnMOzJZkXH> z7upzwJZdMV@aZm3-8eWWh`_pKh(!A+g2V@-=biu-uW2WYBCQDtGBwxZTC50JBaN?n81 z;01SGlZ2WyHSL(s?@KMLslTFBu$6413laa6H#I580H?&hnkNi_7|?S?jCUOV!_uQ}pD&d!J&WHLt`MaI z1_w^g3015fu{2F?82DLIP5^L$P(`Z5dEp%Woma3q*zbo~UWskEGCnok6VXd7$Ki`U zU0VCU1rjj0+_9n$;0r9qGtO3WAN_u`+>Lk@RK}?o(l5Dh_G87iJViIl=lM@L6Ow0E z+&5Pl7dR-$Hl4}Qr=`~SLqQY^#%CaE!x(V5O0hLddov-P!9thveFFO}t-HyE8Lgjm z4xAisAD-lfSn4NnQq&9$N!;Es#`?;+DFK8so>nD~ zVqa61x1h~aT;~lvb-#%Ce_fB!1|^A5R?g}`pM-ttj2U98CtnftH&c68TWthMJp2E^ z1fh)HTecs>AfIhHR~vniK`HADSi}#}~#B#v|X($vE#dTypz2 z@>|R#jngn3VvD*?o2r~RIBHU3Oqn+Z$DyTQh6R)irn4INA9r@_mlqiFJw4?IBl(X> z(QB!O^7e%(9{_=88HRX{?KGW*DCT3rSTYx`1MVaSmJ?HTHKfiUn)$U#=I?dL4s#N~ zI}!nrYB2+loOctMmNMIA<(XF+2jey85!GAjYH}iQJ)M8{AR=7HP?@ zs#^3pl+zJ|-HZc9ggAoJMbe%}*;=da$^5}e9yH98{W8JqmHqw_JvGTdUTSaL#8J}4 z;a!nt>Fsvr22X}Q%seS(VrPWe;9@JHSUGCk^)^M!N$iw#cZk+hN-b;s?WwRcq35=f zZOEiI30uM2Poz0sbG4x@zaFoOj}wTNx|X@h(3=%TxK877@2XmoBY&+HllZ;sV07KV z6RkGzME=*SM`+3AXfRK%9=slYH>1)|unq+x@t%Fcy0$&YsK=zz4!(e}+zD;_b9UD4 zwaAY+y@O>JP`)SI0W(rnZmiQ{XG`7w4$2I9x6VQ%!A+IR(3%^MLP_^8h(78Q@Fj2Q zik9fC&Z7!;8c&e`I6Uaqy+?tE)!#9?uurdKHoK#p+Ru^%^Ani2VJJ{ zE9|qsY%2c8qinOLI_Z@%m==%gN<igc91YOlXW zgolrhxff$8AM5;qf-c;af-<*7tNj*V@Hn-O-)Y@Pd8E>^_M9_&9+Y_(u&H@PhwG|1 zPSrcunH67NS!i!2wk7C^J#5j}0N2L7i4VHI3M`XkCoZa&|f!CU9~ ztS_@JhiH5xO)^ex>NNpLMsgv+*WdenV+t$xVWeGkU>~@SD$f9@MJ}(ZWE~sQz8uJL zP2Q_LW)gisOt?I>`zDP-M1KMQPrBVGNx|cZT_oZ;;NJ zyC0Z+C7I&A-9seNylK|l;!hvC7Ggvv7rGyBSL9916 zXu8mZ1+R)43;rg5g0OkHafug~GQ*2;)M1j6i=q{zXPuz>r8sr;M!?XL^ibWV4E=tL zN225z6EO|jz66(QVdE&>FRFpuT(k0{CVNfj#! ztLp4&<9eB^2cb5W8=!0)SZ4Hv~3_nrGgf|n0z(P{QM}dKY<_llNIeKGRFbWfi2Aq1zWyeDSChVDz8VC>DRf8^vx{h1R^Wm=G#{AF2eYogS{}dU zWQqMavSpJ0y?VT-zFU6BarTz@qHSbf7U=t zLI!P#5f)04@P=hVEIUb!%OH8Uhm3F7+xGzxai@mFjl z%%PPa+_>s);?pol=c%PrCPKnK%JJ@Z5u_D8tXgK*t2vsotXqHvKH-D|an zc4h?gO<)}KYvl5+5E&d2W*UXHxLdpwj#NSXuda8`noG6cQI5=EnvY=67oL=wA~wCr zoHc4RMMyh}HP;0st)~K4Dz;j&x8xX4L_z76l!Z)zJLm{*Xa#gEBeLFJTIUKC&? zS(YAd8CUCvVRQSqAHC|C;hi8{Z1GxpaYhqF1~2mBB{PUh$W=ChyWBxa*bZ zEFkVVx!7MSY5h!2N#&DJ8}P$tz97bH14k{86$}>a&jJ1<9He&g0Ez;jst)Ykq`jFq zFaBura9RgdBfAa9a2*r3Ccu{N)kZZ(=Cz+<*$qe`bE+=BleSZ6*!o{`^CR8TzTi;6 zJ}GbzlF#|iNa3J&kAKSGA|dP`$MsMDYVe6yl{#R@%PVhP3-FO5*K>Z~48uz8^{ws1 zt_<#+?2zu)Z(UyQ)dKKd;Rc#P#v*ye2*XnBe3^E1&-APIDttcFFt`4Uu{QvhrWYZn z@fDchvX5Na+0pfGIwh=em;x`gQzqhYjCHwoKXW~H|JR~|T;D;R^yVZAT(1{&`1nfo zKYvSuF&__^0!VV9$ljAQ*$n<8uXb4zE~-XglXx!;`ut39kZGe>q{UbcaB#urAl2=g zrXgfccB?<5H9kr_@#~)XR^|spjIngHUfJrV0aGci!^mu}@0_pK8sFt8FXVD&wBy;I zdgT;|&$AjhviroaKmjmtrksNBmlt45#Y=|ZixR>@YDX&~2k-_=fz^Q23$n<`lzXg# zSharXf!C)-@M=_?d)*@3n21LLBqmZ;%Ff^n7C)r@R2?NbK~5d9$LuGcjru;L6aNt` z_?R=UT~S(??&!~>$hEb}XJN)AhtDc^dh-=Q6MSH00K{Np!9&3|uv~RejvcC;_Y&Kx z+aYcO3ig|oZu(9=W(gSzdEI~}t_S9`Ia6hsCCJT(?;?fBE+#C#8Cg49Cq{q|;#;po zLRViSKLr6p*M5x>Hn{C48}35d9IKU>?R(Yyt1c1++=c$8F*!>E>s}CDqvCysG!?eDs^C6Yv}ZeZs)l)+QQN=OdTtMc7!ml1}ij=4FDOq zX@jl@N7AUClc*CJ{R>kIzlGCY30AWib?tlEUfxD#@=G-ID9Xa33`Nl68x8$%4!2r? z4lDQ!kd#()E>4e4#l2{!Tym?IFc{_N**PdeAtA@S%;ipFUa5b>9QkdyrecBd_X3bR`Qd#q zminxoK|!%~io0?ASp&tzQlQro{u3v+P!IdE-uqZ&uQ-x06pAq_5;&x1_M`{0h3ULo`rLb|Gu zd-_ZM#4tFxF5ImG27@ehKzd|E3JF^u?XjK6A>;qQs~BO;{p%|50L}=*~ffj@ZsrwA09sl_~@u zrvB|yr}A*R#-o+MbXCm|jY+yr;c#t~w^2^S5PQW4f`@z!m%VimYPzhI_P7H~XMpp7 z_V^SPN9W>cw$AyD_GP?CK8pNi;o>y&)_?foUs{wp#hSgWZWgWto=!VZE3CRSm&h$e zzfrMm2Q_tA^n3=aZArmQI`$@nBy^ToPAdm1ks0)Z()^vnNNC+;b0@+u+YcK|B}>>Q z+HZ^(lH7PY3Fbqez8Q9lPs~0~1{u*rv!_+YqwpOV3F=Yrwv+TH5bOlMf>&jSx!>ct zA)Yqp3C0NKcf3Q9HdoUQPCzaWm|K6!r<&DF8J}win*6-*ulAMnV~2C@HFCv+{au3V?sVxh1plE#YFCUvJ^HFN8?m$i)&x-_(YWo}*NSYE2ezp=GoN$g_ww9XKNM;o$ zC$u7F*=_F}5z^6pxb#3dL~DM9n*$G;M#G_5n2QrrGoTT{5t%?83rL<`J2NhPm^ zqQI^-R}Eg>t^KnPrI^Ru^?5A)SWr(g=G5e_R;(D)Xca|Vuep|+ZM(}nx3*VIlrD1E z8mvTN--6pd#~GzBw13tCudt#VaKz|td=kaspwhrI@WFzIn=!=H)+p{~jqoy<8Dd`c zNkkLx`J_N~s>Vd+03rL>!b?e;Z&q=!17UM zv_?$fM8lS#l+AriLTswdyBhW*wuq+SkH9sXa_~Thayd=o=-lWL)5upxSF%~w)qm3d zNwQ%|02T5W)v7*3WUJCXM2(@0#;^ik?1QhxK(cXJ7|sdP3A~+P_=Kf%y#QF>q-z~u zI{Y4~Gh-sNK9C7Ov!}aWYmX^0QwKX;WIQz&4C;r>X;4@5Cnh(fh3A3wB+m74HIt`A zL!!{tcY^8$%9_Y++|{T1K6!7?Cn-y885|QvMo)%6+e$f8xOR3o%|bC1rd*f{7L&#h zWqSMi@K4!eN`XoYD1f`1ZxS5}osE4qsfR0fE<_E&yU6OG1Y(V9eYOD&Ea%o_S2?5L zDn&@1dj%oS*)nTO&I|P@V&qA6Nx~}4EW_3~{RFLLX5kMM_p!PU5h3x2*vIT9W#!js zy5=vAM~q`pxb3XPs@Kpoy4DmvrAq(iBsSv%9%*qK@y{NZr>jHgiR)a&k_imu$n6j7i6f&Kj zgKenbeWFm4D5;KEj1=E^a$t!mWL%SLu%_>N+sk+-lW9`gpNGJFvPsX#pEF7uhZ6PnlU z_ZrWDYg4hWZymCuuZ=e%7O-zTV@+m~CBvAU7x2!;MT-zj#ch+7id>iePlgJlfAKm^ zlXO3XfLfaLm{3mzgHM8<0SI726h&a zn|uT6#yw{Qg(2b&Bd?y9J1k)L+-TD&bttQ8t?coSOIp_pz8#EHqqkGgZXVY>4uNZ| zqUl2qw0**!YLcD86?qQOr*NhFLYZ;m(otjv&@l7~TdyJB)70tNq#%zTV`3lNZ9R#62nZRLoxBvw@t*{mRKs$f5pBN!sBqfw48-qcH~e0*0bzFK}p;QuR-P z=;A$5b?Cy1j0gIx!P#?w;IEy3wRvI8d5rJy2ktnn()nn2pq0L)2Ms)PM-Tzx7ENX6 z#t@q{$BX!fOYInTME-h3R+2?20K=pSF1J-{E7bq7iaV^}DTU)rqK3auG(pZ$-Bji& zkWTj0d$&ayXL0s9+ug~&TaMW2>&3lARkQ>Pt9#BfJ{s-4_~HxeH>6fH6q4ZRaj%uS zR}4B(_{KI}w4JhZ4!_)*PC-q^uZ!8;mrLfM-h^<^%W8<<*g&$XU9> zHTXrsB%K}jb$kPq&z_TRC2?!E2C$01^|vU#33u^>&%#;gy(S-p$LLR56MN)M1z5vXXB z7FSqhIDFn1J}%n8)t7djD(H6}_`vf3DCD|N%Lq}x{anFB;)sndp+RCe zukx=NZ2fM>+3wrXZffp*9tO#9?KT#h@;x?tTxzF5KMrvjKJ{6Fj!}Q^gjf>GghhRy zF+%S%4@QQnnUG~*HM1$y(cezbFd4bT)E_zmPVT644A3q3Qx5y5^BcG}g{d>ihx2Fd zRK286CJfets4D=(~e_6pEe0)o|Xf?LKuhIE%>a-5)+j`3pi~%0Dy`2j_G4(8a5K@ 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 z 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�e)!X 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%0A_Pe)>9&J{KKpb8T}8QjNmY# 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 literal 0 HcmV?d00001 diff --git a/MikroNUC/20260703/20260703064001-Config.rsc b/MikroNUC/20260703/20260703064001-Config.rsc new file mode 100644 index 0000000..6b9b1e1 --- /dev/null +++ b/MikroNUC/20260703/20260703064001-Config.rsc @@ -0,0 +1,5446 @@ +# 2026-07-03 06:40:03 by RouterOS 7.23.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=BridgeLAN +add name=bridge1 +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no +/interface wireguard +add comment="Interface for Master Connection" listen-port=22022 mtu=1360 \ + name=MASTER +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/disk +add slot=ram tmpfs-max-size=100000000 type=tmpfs +/interface list +add include=dynamic,static name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/iot wiliot servers +set *1 address=mqtt.us-east-2.prod.wiliot.cloud name="Wiliot US East" +/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=P1505n 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 +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/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=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\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\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:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/729/f42d43ae\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:05:03 01.07.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 dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Manager@id_rsa.pub\ + \n:local localDir \"/\";\ + \n\ + \n\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\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:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\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 :local 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\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$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:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=awg-env owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/envs/add list=awg-proxy-env key=AWG_LISTEN value=\":55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_REMOTE value=\"109.107.17\ + 7.79:55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H1 value=\"472437748-4724\ + 38637\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H2 value=\"707808381-7078\ + 09250\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H3 value=\"1609078552-160\ + 9079495\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H4 value=\"1012329484-101\ + 2329741\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I5 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_SERVER_PUB value=\"o5IgCl\ + 1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_CLIENT_PUB value=[/interf\ + ace/wireguard/get [find name=wg-awg-proxy] public-key]" +add dont-require-permissions=no name=awg-container-add owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/add file=sata1/tmp/awg-proxy-amd64.tar.gz interface=veth-awg-pro\ + xy envlist=awg-proxy-env \\\ + \n hostname=awg-proxy root-dir=sata1/awg-proxy logging=yes shm-size=4M \ + start-on-boot=yes\ + \n/container/start [find where tag~\"awg-proxy\"]" +add dont-require-permissions=yes name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + put \"Download image, and save him to usb1/tmp\"\ + \n/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-chr.tar\" dst-p\ + ath=sata1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 action=dst-n\ + at to-addresses=10.9.9.2 to-ports=55055 in-interface=ether1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 action=dst-\ + nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=sata1/tmp/awg2-webui.tar interface=veth-awg hostname\ + =awg2-webui \\\ + \nroot-dir=sata1/awg2-webui layer-dir=sata1/docker/awg2-webu/ envlist=awgu\ + i-env start-on-boot=yes logging=yes shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +add dont-require-permissions=no name=awg-proxy-go-Client owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:put \"[::::::::::::::: START :::::::::::::::]\"\ + \n:put \"\"\ + \n:put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n:put \"veth and network:\"\ + \n /interface/bridge add name=docker port-cost-mode=short\ + \n /ip/address/add address=192.168.100.1/24 interface=docker\ + \n\ + \n /interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n /interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n:put \"add config-client.json\"\ + \n/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json d\ + st=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n:put \"Add container\"\ + \n/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interface\ + =awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-proxy\ + -client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pro\ + xy-go-client\" mountlists=awgcfg-client\ + \n\ + \n:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n:put \"Add user:\"\ + \n /user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n:put \"Add forwarding port web-ui\"\ + \n /ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n /interface/wireguard/add name=wg-awg-client\ + \n /ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +add comment=awg2wg dont-require-permissions=no name=awg2wg-uninstall owner=\ + Manager policy=ftp,read,write,policy source="\r\ + \n :put \"Uninstalling AmneziaWG...\"\r\ + \n :log info \"Uninstalling AmneziaWG...\"\r\ + \n /ip/route/remove [find where comment=awg2wg-tunnel]\r\ + \n :do { /tool/netwatch/remove [find where comment=Monitor-AWG2WG] } on-e\ + rror={}\r\ + \n :do { /ip/route/remove [find where comment=Monitor-AWG2WG] } on-error=\ + {}\r\ + \n /container/stop [find where interface=veth-awg2wg]\r\ + \n :delay 7s\r\ + \n /interface/list/member/remove [find where interface=wg-awg2wg]\r\ + \n /container/remove [find where interface=veth-awg2wg]\r\ + \n /container/envs/remove [find where list=\"awg2wg-env\"]\r\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg2wg\"]\r\ + \n /ip/address/remove [find where address=\"172.20.0.1/30\"]\r\ + \n /interface/veth/remove [find where name=\"veth-awg2wg\"]\r\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg2wg\"]\ + \r\ + \n /ip/address/remove [find where interface=\"wg-awg2wg\"]\r\ + \n /interface/wireguard/remove [find where name=\"wg-awg2wg\"]\r\ + \n :do { /file/remove [find where name~\"awg2wg.+tar\"] } on-error={}\r\ + \n :do { /file/remove [find where name=\"disk1/awg2wg\"] } on-error={}\r\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n /system/script/remove [find where name=awg2wg-uninstall]\r\ + \n" +add dont-require-permissions=no name=amneziawg-mikrotik-c owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global imagesPath \"amneziawg/img/\";\ + \n:local Image \"awg-proxy-amd64-7.20-Docker.tar.gz\";\ + \n\ + \n:global DstDir \"sata1/dst/\";\ + \n\ + \n:local Url=(\$GlobalScriptsUrl . \$ImagesPath . \$Image);\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n" +add comment=Generator dont-require-permissions=no name=awg-VDSina owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# ============================================================\ + \n# AWG Proxy -- MikroTik RouterOS (protocol: v2)\ + \n# 2026-06-30 22:08:12\ + \n# ============================================================\ + \n\ + \n# 0. Check prerequisites\ + \n:if ([:len [/system/package/find where name=\"container\" disabled=no]] \ + = 0) do={\ + \n :put \"Container package is not installed or disabled. Install it and \ + reboot.\"\ + \n :error \"Usage: /system/device-mode/update container=yes\"\ + \n}\ + \n\ + \n# Auto-detect storage\ + \n:global awgDisk \"disk1\"\ + \n{\ + \n :local usbFree 0\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] free] \ + } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n :put (\"Using USB: usb1 (\" . (\$usbFree / 1048576) . \" MB free)\")\ + \n } else={\ + \n :if ([:len [/disk/find where slot=\"usb1\"]] > 0) do={\ + \n :put \"USB found but not mounted. Format as ext4\?\"\ + \n :put \"Press 'y' to confirm:\"\ + \n :local key [/terminal/inkey timeout=30]\ + \n :if (\$key = 121 || \$key = 89) do={\ + \n /disk/format-drive usb1 file-system=ext4 label=usb1\ + \n :delay 3s\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] \ + free] } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n } else={ :put \"Format failed, using disk1\" }\ + \n } else={ :put \"Using disk1\" }\ + \n } else={ :put \"No USB, using disk1\" }\ + \n }\ + \n}\ + \n\ + \n# 1. Uninstall script\ + \n/system/script/add name=awg-VDSina-uninstall comment=awg-VDSina source={\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n}\ + \n\ + \n# 2. Network infrastructure\ + \n/interface/veth/add name=veth-awg-VDSina address=172.19.75.210/30 gatewa\ + y=172.19.75.209\ + \n/ip/address/add address=172.19.75.209/30 interface=veth-awg-VDSina\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.19.7\ + 5.208/30\ + \n\ + \n# 3. WireGuard interface (MikroTik derives the public key automatically)\ + \n/interface/wireguard/add name=wg-awg-VDSina private-key=\"4CHyNhbOs923/E\ + yNDguMXJXdghL2I3UyzXPwrANVgHs=\" listen-port=14710 disabled=yes\ + \n/interface/wireguard/peers/add interface=wg-awg-VDSina public-key=\"o5Ig\ + Cl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\" preshared-key=\"RNvF7T1cg5tyXcY\ + QnD9N5BEp6e20vVJQTv0GMjyvHU0=\" endpoint-address=172.19.75.210 endpoint-po\ + rt=51820 allowed-address=0.0.0.0/0 persistent-keepalive=10\ + \n/ip/address/add address=10.9.0.3/32 interface=wg-awg-VDSina\ + \n\ + \n# 4. Container environment variables\ + \n/container/envs/add list=awg-VDSina-env key=AWG_LISTEN value=\":51820\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_REMOTE value=\"109.107.1\ + 77.79:55055\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H1 value=\"472437748-472\ + 438637\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H2 value=\"707808381-707\ + 809250\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H3 value=\"1609078552-16\ + 09079495\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H4 value=\"1012329484-10\ + 12329741\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_SERVER_PUB value=\"o5IgC\ + l1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_CLIENT_PUB value=[/inter\ + face/wireguard/get [find name=wg-awg-VDSina] public-key]\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I5 value=\"\"\ + \n\ + \n# 5. DNS\ + \n{ :local rawDNS [/ip/dns/get servers]; :local prevDNS \"\"; :foreach s i\ + n=[:toarray \$rawDNS] do={ :if ([:len \$prevDNS] > 0) do={ :set prevDNS \"\ + \$prevDNS,\$s\" } else={ :set prevDNS \$s } }; /container/envs/add list=aw\ + g-VDSina-env key=AWG_PREV_DNS value=\"\$prevDNS\" }\ + \n# NOTE: replaces existing DNS configuration\ + \n/ip/dns/set servers=109.107.177.79\ + \n/ip/route/add dst-address=109.107.177.79/32 gateway=wg-awg-VDSina distan\ + ce=1 comment=awg-VDSina-dns\ + \n\ + \n# 6. Download, create and start container\ + \n/container/envs/add list=awg-VDSina-env key=AWG_STORAGE value=\$awgDisk\ + \n:if (\$awgDisk != \"disk1\") do={\ + \n :local tmpPath (\$awgDisk . \"/pull\")\ + \n /container/envs/add list=awg-VDSina-env key=AWG_PREV_TMPDIR value=[/co\ + ntainer/config/get tmpdir]\ + \n /container/config set tmpdir=\$tmpPath memory-high=200M\ + \n}\ + \n{\ + \n :local arch [/system/resource/get architecture-name]\ + \n :local ver [/system/resource/get version]\ + \n :local dotPos [:find \$ver \".\"]\ + \n :local rest [:pick \$ver (\$dotPos + 1) [:len \$ver]]\ + \n :local endPos [:find \$rest \".\"]\ + \n :if ([:typeof \$endPos] = \"nil\") do={ :set endPos [:find \$rest \" \ + \"] }\ + \n :local minor [:tonum [:pick \$rest 0 \$endPos]]\ + \n :local suffix \"\"\ + \n :if (\$minor <= 20) do={ :set suffix \"-7.20-Docker\" }\ + \n :local file \"\"\ + \n :if (\$arch = \"arm64\") do={ :set file (\"awg-proxy-arm64\" . \$suffi\ + x . \".tar.gz\") }\ + \n :if (\$arch = \"arm\") do={ :set file (\"awg-proxy-arm\" . \$suffix . \ + \".tar.gz\") }\ + \n :if (\$arch ~ \"x86\") do={ :set file (\"awg-proxy-amd64\" . \$suffix \ + . \".tar.gz\") }\ + \n :if (\$file = \"\") do={ :error \"Unsupported architecture: \$arch\" }\ + \n :local url \"https://github.com/timbrs/amneziawg-mikrotik-c/releases/l\ + atest/download/\$file\"\ + \n :local filePath \$file\ + \n :if (\$awgDisk != \"disk1\") do={\ + \n :set filePath (\$awgDisk . \"/pull/\" . \$file)\ + \n :do { /file/make-directory (\$awgDisk . \"/pull\") } on-error={}\ + \n }\ + \n :if ([:len [/file/find where name=\$filePath]] = 0) do={\ + \n :local freeStorage 0\ + \n :if (\$awgDisk = \"disk1\") do={\ + \n :set freeStorage [/system/resource/get free-hdd-space]\ + \n } else={\ + \n :do { :set freeStorage [/disk/get [find where mount-point=\$awgDis\ + k] free] } on-error={}\ + \n }\ + \n :if (\$freeStorage < 262144) do={\ + \n :put (\"WARNING: Low disk space (\" . (\$freeStorage / 1024) . \"K\ + B free). Need at least 256KB.\")\ + \n :put \"See: https://github.com/timbrs/amneziawg-mikrotik-c#insuffi\ + cient-disk-space\"\ + \n :error \"Insufficient disk space\"\ + \n }\ + \n :put (\"Fetching: \$url -> \" . \$filePath)\ + \n /tool/fetch url=\$url dst-path=\$filePath http-max-redirect-count=10\ + \n } else={\ + \n :put (\"File already exists: \" . \$filePath)\ + \n }\ + \n :local rootDir (\$awgDisk . \"/awg-VDSina\")\ + \n /container/add file=\$filePath interface=veth-awg-VDSina envlist=awg-V\ + DSina-env hostname=awg-VDSina root-dir=\$rootDir logging=no start-on-boot=\ + yes comment=awg-VDSina\ + \n :if (\$minor > 20) do={ [:parse \"/container/set [find where interface\ + =veth-awg-VDSina] shm-size=4M\"] }\ + \n /file/remove \$filePath\ + \n :local freeMem [/system/resource/get free-memory]\ + \n :if (\$freeMem < 16777216) do={\ + \n :put (\"WARNING: Low memory (\" . (\$freeMem / 1048576) . \"MB free)\ + . 16MB+ recommended.\")\ + \n }\ + \n /container/start [find where interface=veth-awg-VDSina]\ + \n :do { /file/remove [find where name=\"console-dump.txt\"] } on-error={\ + }\ + \n :put \"Waiting for container to start...\"\ + \n :delay 5s\ + \n /interface/wireguard/enable wg-awg-VDSina\ + \n :put \"WireGuard interface enabled\"\ + \n :put \"Installation complete!\"\ + \n :put \"Ping test: 109.107.177.79 via AmneziaWG tunnel. repeat 10 times\ + \"\ + \n /ping 109.107.177.79 count=10 interval=1\ + \n :put \"\"\ + \n :put \"======= NEXT STEPS =======\"\ + \n :put \"\"\ + \n :put \"Route specific traffic through the AmneziaWG tunnel:\"\ + \n :put \"\"\ + \n :put \" Route a single host:\"\ + \n :put \" /ip/route/add dst-address=8.8.8.8/32 gateway=wg-awg-VDSina \ + comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Route a subnet:\"\ + \n :put \" /ip/route/add dst-address=100.0.0.0/8 gateway=wg-awg-VDSina\ + \_comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Remove a route:\"\ + \n :put \" /ip/route/remove [find where comment=awg-VDSina-tunnel dst-\ + address=8.8.8.8/32]\"\ + \n :put \"\"\ + \n :put \" Show all tunnel routes:\"\ + \n :put \" /ip/route/print where comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Uninstall:\"\ + \n :put \" /system/script/run awg-VDSina-uninstall\"\ + \n :put \"=========================\"\ + \n}\ + \n\ + \n# 7. Verification\ + \n# /container/print\ + \n# /interface/wireguard/print\ + \n# /interface/wireguard/peers/print\ + \n" +add comment="wg2awg GH repo in client mode" dont-require-permissions=no name=\ + "wg2awg client" owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:local Arch \"amd64\";\ + \n:local Version \"v0.0.1\";\ + \n:local WorkDisk \"sata1\";\ + \n:local Name wg2awg;\ + \n:local Bridge (\"Bridge-\" . \$Name);\ + \n:local VetchMTU \"1280\";\ + \n:local Vetch (\"vetch-\" . \$Name);\ + \n:local VetchNet \"10.9.0.0\";\ + \n:local VetchGate \"10.9.0.1\";\ + \n:local VetchAddr \"10.9.0.3/32\";\ + \n:local Env (\$Name . \"-env\");\ + \n:local ConfDir (\"/etc/\" . \$Name . \"/\");\ + \n:local ConfFile (\$Name . \".conf\");\ + \n:local Mounts (\$WorkDisk . \"/mounts/\" . \$Name . \"/\");\ + \n:local RootDir (\$WorkDisk . \"/\" . \$Name);\ + \n:local Registry \"https://registry-1.docker.io\";\ + \n:local FetchFile (\$Name . \"-\" . \$Arch . \"-oci.tar\");\ + \n:local FetchUrl (\"https://github.com/vados-dev/wg2awg/releases/download\ + /\" . \$Version . \"/\" . \$FetchFile);\ + \n:local FetchDir (\$WorkDisk . \"/dst/\");\ + \n:local AwgListen \":44044\";\ + \n:local AwgRemote \"109.107.177.79\";\ + \n\ + \n#:put \"\"\ + \n#put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n\ + \n:log warning \"[::::::::::::::: START :::::::::::::::]\"\ + \n:log warning \"Add veth and nat...\";\ + \n:do {\ + \n:log warning (\"Remove interface: name=\" . \$Vetch . \", address=\" . \ + \$VetchAddr . \", gateway=\" . \$VetchGate);\ + \n/interface/veth/remove [find name=\$Vetch];\ + \n:log warning (\"Add interface: name=\" . \$Vetch . \", address=\" . \$Ve\ + tchAddr . \", gateway=\" . \$VetchGate);\ + \n/interface/veth/add name=\$Vetch address=\$VetchAddr gateway=\$VetchGate\ + ;\ + \n:log warning (\"Remove ip address: address=\" . \$VetchGate . \", interf\ + ace=\" . \$Vetch);\ + \n/ip/address/remove [find address=\$VetchGate interface=\$Vetch];\ + \n:log warning (\"Add ip address: address=\" . \$VetchGate . \", interface\ + =\" . \$Vetch);\ + \n/ip/address/add address=\$VetchGate interface=\$Vetch;\ + \n:log warning (\"Remove firewall nat rule: chain=srcnat action=masquerade\ + \_src-address=\" . \$VetchNet . \"/24\");\ + \n/ip/firewall/nat/remove [find chain=srcnat action=masquerade src-address\ + =(\$VetchNet . \"/24\")];\ + \n:log warning (\"Add firewall nat rule: chain=srcnat action=masquerade sr\ + c-address=\" . \$VetchNet . \"/24\");\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=(\$VethN\ + et . \"/24\");\ + \n} on-error={}\ + \n\ + \n#:do {\ + \n#/file add type=directory name=\$Mounts\ + \n#} on-error={}\ + \n\ + \n\ + \n:do {\ + \n:log warning (\"Remove config file \" . \$Mounts . \$ConfFile . \"...\")\ + ;\ + \n/file remove [find name=(\$Mounts . \$ConfFile)];\ + \n:log warning (\"Add config file \" . \$Mounts . \$ConfFile . \"...\");\ + \n/file add type=file name=(\$Mounts . \$ConfFile) contents=\"[Interface]\ + \nPrivateKey = 4CHyNhbOs923/EyNDguMXJXdghL2I3UyzXPwrANVgHs=\ + \nAddress = \$VetchAddr\ + \nMTU = \$VetchMTU\ + \nDNS = 109.107.177.79\ + \nPreUp = ip route add 109.107.177.79/32 via \$VetchGate dev \$Vetch\ + \nPostDown = ip route del 109.107.177.79/32 via \$VetchGate dev \$Vetch\ + \nJc = 9\ + \nJmin = 105\ + \nJmax = 920\ + \nS1 = 90\ + \nS2 = 136\ + \nS3 = 45\ + \nS4 = 27\ + \nH1 = 472437748-472438637\ + \nH2 = 707808381-707809250\ + \nH3 = 1609078552-1609079495\ + \nH4 = 1012329484-1012329741\ + \nI1 = <\ + r 4>\ + \nI2 = \ + \nI3 = \ + \nI4 = \ + \nI5 = \ + \n\ + \n[Peer]\ + \nPublicKey = o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\ + \nAllowedIPs = 0.0.0.0/0\ + \nEndpoint = \$AwgRemote\ + \nPersistentKeepalive = 10\ + \nPresharedKey = RNvF7T1cg5tyXcYQnD9N5BEp6e20vVJQTv0GMjyvHU0=\";\ + \n} on-error={}\ + \n\ + \n\ + \n:do {\ + \n:log warning (\"Remove mounts list \$Env...\");\ + \n/container/mounts/remove [find list=\$Env];\ + \n:log warning (\"Add mounts list \$Env...\");\ + \n/container/mounts/add src=(\$Mounts . \$ConfFile) dst=(\$ConfDir . \$Con\ + fFile) list=\$Env mode=ro;\ + \n:log warning (\"Remove Environment keys.\");\ + \n/container/envs/remove [find list=\$Env];\ + \n:log warning (\"Add Environment keys.\");\ + \n/container/envs/add list=\$Env key=AWG_CONFIG value=(\$ConfDir . \$ConfF\ + ile);\ + \n/container/envs/add list=\$Env key=AWG_LISTEN value=\$AwgListen\ + \n/container/envs/add list=\$Env key=AWG_REMOTE value=\$AwgRemote\ + \n/container/envs/add list=\$Env key=AWG_MODE value=client\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove \" . \$WorkDisk . \"/tmp\");\ + \n/file remove [find name=(\$WorkDisk . \"/tmp\")];\ + \n:log warning (\"Add \" . \$WorkDisk . \"/tmp\");\ + \n/file add type=directory name=(\$WorkDisk . \"/tmp\");\ + \n:log warning (\"Container add tmpdir \" . \$WorkDisk . \"/tmp\");\ + \n/container config set tmpdir=(\$WorkDisk . \"/tmp\");\ + \n} on-error={}\ + \n\ + \n:do {\ + \n:log warning (\"Remove \" . \$FetchDir . \$FetchFile . \".\");\ + \n/file remove [find name=(\$FetchDir . \$FetchFile)];\ + \n:log warning (\"Download image from \" . \$FetchUrl . \" and save him to\ + \_\" . \$FetchDir . \$FetchFile . \".\");\ + \n/tool/fetch url=\$FetchUrl dst-path=(\$FetchDir . \$FetchFile);\ + \n} on-error={}\ + \n\ + \n#:log warning (\"Container set registry \" . \$Registry . \" tmpdir= \" \ + . \$WorkDisk . \"/tmp\");\ + \n#/container/config/set registry-url=\$Registry tmpdir=(\$WorkDisk . \"/t\ + mp\");\ + \n\ + \n:do {\ + \n:log warning (\"Container add width: hostname=\" . \$Name . \", mountlis\ + ts=\" . \$Env . \", file=\" . \$FetchDir . \$FetchFile . \", envlist=\" .\ + \_\$Env . \", root-dir=\" . \$RootDir . \", logging=yes, start-on-boot=yes\ + \");\ + \n/container/add hostname=\$Name mountlists=\$Env file=(\$FetchDir . \$Fet\ + chFile) interface=\$Vetch envlist=\$Env root-dir=\$RootDir logging=yes sta\ + rt-on-boot=yes;\ + \n} on-error={}\ + \n\ + \n\ + \n#/container/start [find where interface=\$Vetch];\ + \n\ + \n#/interface/bridge add name=\$Bridge port-cost-mode=short;\ + \n#/ip/address/add address=192.168.100.1/24 interface=\$Bridge;\ + \n\ + \n#/interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n#/interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n#:put \"add config-client.json\"\ + \n#/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n#/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json \ + dst=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n#:put \"Add container\"\ + \n#/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interfac\ + e=awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-prox\ + y-client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pr\ + oxy-go-client\" mountlists=awgcfg-client\ + \n\ + \n#:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n#:put \"Add user:\"\ + \n#/user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n#:put \"Add forwarding port web-ui\"\ + \n#/ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n#:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n#/interface/wireguard/add name=wg-awg-client\ + \n#/ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \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" +add name=manager policy="local,ssh,ftp,read,write,policy,api,rest-api,!telnet,\ + !reboot,!test,!winbox,!password,!web,!sniff,!sensitive,!romon" +/app +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=*3 registry-mirrors="https://reg.vados.\ + ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/caps-man datapath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + xs-DataPath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + DataPath +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=BridgeLAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set crl-store=system +/container config +set layer-dir=/sata1/docker/layers memory-high=200.0MiB memory-max=4096.0MiB \ + registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ + amsternl +/container envs +add key=AWG_CONFIG list=wg2awg-env value=/etc/wg2awg/wg2awg.conf +add key=AWG_LISTEN list=wg2awg-env value=:44044 +add key=AWG_MODE list=wg2awg-env value=client +add key=AWG_REMOTE list=wg2awg-env value=109.107.177.79 +/container mounts +add dst=/etc/wg2awg/wg2awg.conf list=wg2awg-env mode=ro src=\ + /sata1/mounts/wg2awg/wg2awg.conf +/ip smb +set enabled=no +/interface bridge port +add bridge=BridgeLAN interface=*136 +add bridge=BridgeLAN interface=*137 +add bridge=bridge1 interface=ether1 +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +add interface=BridgeLAN list=LAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 comment=\ + "Peer for MikroMaster connection" endpoint-address=10.30.30.81 \ + endpoint-port=33033 interface=MASTER name=MASTER persistent-keepalive=10s \ + public-key="zuRsO+dL/j6awaBWZ/NgnHR+bCNUjRWbaHFpdzkNnw4=" +/ip address +add address=10.30.30.10/24 interface=ether1 network=10.30.30.0 +add address=10.10.0.2 interface=MASTER network=10.10.0.0 +/ip dhcp-client +add disabled=yes interface=ether1 name=client1 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=*3 lease-script=\ + lease-script lease-time=10m name=nucDHCP server-address=10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.33,109.107.177.79 \ + verify-doh-cert=yes +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + 10.30.30.81 routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set reverse-proxy disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=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=*3 type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/special-login +add port=serial0 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +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 +/system scheduler +add comment="Every Day Set Global Environment Variables" disabled=yes 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" disabled=yes 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="Every Day Check For Fake Bridges" disabled=yes interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" disabled=yes interval=30s name=mod/AM-TG-Bot \ + on-event="/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + disabled=yes interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260703/20260703064001-Diff-Config.rsc b/MikroNUC/history/20260703/20260703064001-Diff-Config.rsc new file mode 100644 index 0000000..2ec3361 --- /dev/null +++ b/MikroNUC/history/20260703/20260703064001-Diff-Config.rsc @@ -0,0 +1,90 @@ +27a28,30 +> /interface veth +> add address=172.18.0.2/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ +> gateway=172.18.0.1 gateway6="" name=vetch-wg2awg +35a39,44 +> /container +> # download/extract error: no manifest.json in archive +> add envlists=wg2awg-env file=sata1/dst/wg2awg-amd64-oci.tar.gz hostname=\ +> wg2awg interface=vetch-wg2awg layer-dir=/sata1/docker/layers logging=yes \ +> mountlists=wg2awg-env name=wg2awg-amd64-oci root-dir=/sata1wg2awg \ +> start-on-boot=yes +5058d5066 +< \n:local VetchMTU \"1280\";\ +5060,5062d5067 +< \n:local VetchNet \"10.9.0.0\";\ +< \n:local VetchGate \"10.9.0.1\";\ +< \n:local VetchAddr \"10.9.0.3/32\";\ +5067c5072 +< \n:local RootDir (\$WorkDisk . \"/\" . \$Name);\ +--- +> \n:local RootDir (\$WorkDisk . \$Name);\ +5073,5074d5077 +< \n:local AwgListen \":44044\";\ +< \n:local AwgRemote \"109.107.177.79\";\ +5084,5104c5087,5091 +< \n:log warning (\"Remove interface: name=\" . \$Vetch . \", address=\" . \ +< \$VetchAddr . \", gateway=\" . \$VetchGate);\ +< \n/interface/veth/remove [find name=\$Vetch];\ +< \n:log warning (\"Add interface: name=\" . \$Vetch . \", address=\" . \$Ve\ +< tchAddr . \", gateway=\" . \$VetchGate);\ +< \n/interface/veth/add name=\$Vetch address=\$VetchAddr gateway=\$VetchGate\ +< ;\ +< \n:log warning (\"Remove ip address: address=\" . \$VetchGate . \", interf\ +< ace=\" . \$Vetch);\ +< \n/ip/address/remove [find address=\$VetchGate interface=\$Vetch];\ +< \n:log warning (\"Add ip address: address=\" . \$VetchGate . \", interface\ +< =\" . \$Vetch);\ +< \n/ip/address/add address=\$VetchGate interface=\$Vetch;\ +< \n:log warning (\"Remove firewall nat rule: chain=srcnat action=masquerade\ +< \_src-address=\" . \$VetchNet . \"/24\");\ +< \n/ip/firewall/nat/remove [find chain=srcnat action=masquerade src-address\ +< =(\$VetchNet . \"/24\")];\ +< \n:log warning (\"Add firewall nat rule: chain=srcnat action=masquerade sr\ +< c-address=\" . \$VetchNet . \"/24\");\ +< \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=(\$VethN\ +< et . \"/24\");\ +--- +> \n/interface/veth/add name=\$Vetch address=172.18.0.2/30 gateway=172.18.0.\ +> 1;\ +> \n/ip/address/add address=172.18.0.1/30 interface=\$Vetch;\ +> \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.18.0\ +> .0/30;\ +5111,5112d5097 +< \n\ +< \n:do {\ +5115a5101,5102 +> \n\ +> \n:do {\ +5119,5120c5106,5107 +< \nAddress = \$VetchAddr\ +< \nMTU = \$VetchMTU\ +--- +> \nAddress = 10.9.0.3/32\ +> \nMTU = 1280\ +5122,5123c5109,5110 +< \nPreUp = ip route add 109.107.177.79/32 via \$VetchGate dev \$Vetch\ +< \nPostDown = ip route del 109.107.177.79/32 via \$VetchGate dev \$Vetch\ +--- +> \nPreUp = ip route add 109.107.177.79/32 via 172.18.20.1 dev \$Vetch\ +> \nPostDown = ip route del 109.107.177.79/32 via 172.18.20.1 dev \$Vetch\ +5145c5132 +< \nEndpoint = \$AwgRemote\ +--- +> \nEndpoint = 109.107.177.79:55055\ +5150d5136 +< \n\ +5157,5159c5143 +< \n:log warning (\"Remove Environment keys.\");\ +< \n/container/envs/remove [find list=\$Env];\ +< \n:log warning (\"Add Environment keys.\");\ +--- +> \n:log warning (\"Add mounts Environment key AWG_CONFIG.\");\ +5162,5164d5145 +< \n/container/envs/add list=\$Env key=AWG_LISTEN value=\$AwgListen\ +< \n/container/envs/add list=\$Env key=AWG_REMOTE value=\$AwgRemote\ +< \n/container/envs/add list=\$Env key=AWG_MODE value=client\ +5320,5322d5300 +< add key=AWG_LISTEN list=wg2awg-env value=:44044 +< add key=AWG_MODE list=wg2awg-env value=client +< add key=AWG_REMOTE list=wg2awg-env value=109.107.177.79 -- 2.52.0