From 83fddb075a4e95e9fe2a1367655f46d91f9c72b8 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 2 Jun 2026 05:00:15 +0300 Subject: [PATCH] Backup for MikroGig created successfully at Jun 02 05:00:15. --- .../20260602/20260602050011-Binary.backup | Bin 0 -> 164162 bytes MikroGig/20260602/20260602050011-Config.rsc | 2667 +++++++++++++++++ .../20260602/20260602050011-Diff-Config.rsc | 8 + 3 files changed, 2675 insertions(+) create mode 100644 MikroGig/20260602/20260602050011-Binary.backup create mode 100644 MikroGig/20260602/20260602050011-Config.rsc create mode 100644 MikroGig/history/20260602/20260602050011-Diff-Config.rsc diff --git a/MikroGig/20260602/20260602050011-Binary.backup b/MikroGig/20260602/20260602050011-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6c451cd3e811f325e2ac329ab2aad9014f24899a GIT binary patch literal 164162 zcmV+aKLEh*sF8C*fdT*=;13+sYP=~YfO31&!@fKK0000K{QrKS(F6ck(&=_6>jmvT zZPzFDx)bY{vI@guf%R6p$WjiVYC3u+sjRu$*T>}r&qm;5R2wbfkTLDbe_PB-GPzdL z;E_2taz8Qb`m*HB6I}UN^;74>Zwn-IpmJ|;7Gl#@`3-_V*gwnku5Sa7Rdk1wllJ6&rcQ-C6Fe~+Ex}abHaezEzFM{1o zh9FKTKy-r)xSLf~+6QGN@5CiGDqK5cNEl%LNiud0rUHE<7$_o6p z)t*_4v&0xkMf^QCA-ZP6CPO&j#3-M4sK&_ml=)g(11Vmk0jyVBo4Dwud(LylX8`pG zQuC~+Okx`Ueq%gAd^~=?XX9yaQ^dl{51s;bJFfa%+A&u}Sc2o`J&m`i==5>`cYCPM zGlWDxkl`dl59hG4EL?dYl2_c1H2}De4Yf@mp(U#xwexd2)SD7D3HFLD9lX{#eFoLc zp+?ki{QVofH_h|my_`kYS10LXg;l|fa|!Q`_z#2@9FTdNr^hEkFlr6lzD-BbOwlQ7 zdue_4E`J4%(fNl@v11zie?YyfHkm^4@+!<|S1eefqIfkHoO&PJDIx^f$%*Uq{y~R` zs}XXu)f-uK?{A9X-4A@tjO)cSr=BLQy#^jpFpC3*LD~l49@>_Yq4D21>FgN~o!f!5 zu3V#`iwD*)8IApEf|SW4Ch_-rlAynf9Dz@C4`Vy?Q|A>)>mb24JVgMcBh=&9!pscu zSE%-y?pNN$1HbFsw9`oZ;JnfuKRo5JNc#-`*NlnqZfqiaxlwq2x_QGqBuHRPViu}W zZHcOxD?t|l#F3@iH`(R^8H1e)3Drv`)WG_PPnS*Z*X*!!*c?-Iu@ zv@Dc%)p@dSPIlPDQ>*}D><1c^kN5=Q)1rgfsQdnSB%7b`xkdihQAsCix*B_k1%G#} zrMZo`3x%w1?qcQS+&Z)W~ZNAp($_--yL}gt7;ESnk9t#!BrqKw6+zv(eu5%q1)WF(^W%hM*DhuWItj(i^yV0{j7zIX;8q_R9WF_{OwF zbNgj$N;(jk6aO;%vdtN1sJDaV9`?N(!B0g&T+Ymr5d1iVRUIrXoqT5`kObEkBN1W8 zMX@v9rEiOG&7`+lEcrpYwfZYRn!_^#dlT|_R@m=uKj*W6zkXIdZ{37=ONNDae`)Nq zjOI-!-qwwMMUOd!((A&;Er-m8Y%^XO%ao0H(>OUfDP*hoH>)Cuont>;gN!{{x+JsD z^T`c;OotE9Uv~h6G$BdhElEAhY};@TOLNXeEhgQuAnG-KBp1O&clcp)eF!LuJ3&C8 z=sH(X5SjWPzY~UA)F`XuKIfOReuNBKp386dPSA52r5M=@Q)z75HB@#4JGC)2{Lot6b;LCSjBIj1*KzV4C2a) z@LH!&rIAw}&?Dxa=eA$&@n7f(Ii?(}hMmg-W#lQX7Ia3VP;?q4_IDuPK|E%uLlkw` zqOd&FxW%MD5c83hN|$=P(kbDXFO6g2%gUcTmF4RpWxo|?EcnUbRns8682f=Z2lM_dhSL(AeHveV4fCEh$<+hAZO$(Q}5n*A6-Kg?X4QGT-5 z{EL9w>X(8{#bJkyuo?T5zK_98EvJRL=>G^(dFM|6(G-v0w1BAgmb|3q={6oXv%WJf ztmc4Fq&xpwbZ4KyQgo^wHadsUCGwzCpAnv@N%(S0j6zoZSTt^(W<+!B{4xPv=or&9 zciOs4ixq=i_v}78NWb;cT~}fCm*T~*GfQ=0sw>cErQ|~(pnjgY!KuDu)t)x&Nn$1C zT>LdrL)!|PsQZgg2V}~d2;HYd;;ez2*U$|2^8Wv@yj1gk&OTjt@xx16TT>#qr_YWi zopNa5ZKC7&-)`J~nKYFSx+_9He8W{jT^@(s+xW-z)O4K8wbB}_6#k_h>H;SLn}=|N zN4>upuKH2yqiJ-kUIsP7&C9|o*6LS>l6_6T=R)~EVvwBX@soE6@!p$Hz_J9a3vEgW z7biSUlz9;etv4%-7gqY%MN>YL->PPKUEE9t|0v_G!*&N?6Iy}oIT0JX!r*~&o0AYJ z7LiyyZKP?81b^7~JNKS0a-M1rJlq;}QB#&Ynvui)P|uMD@v!CMk($+?}gA+L_Z8 zbiq z2GIEOFecH`_8*yoh1|183J&aZq0C5KgZ}q-6Di)=Xz=dj0>NiFvm4552jqSRF2(EK zxa!cT$q~l4c=iAPXiU+{NiobOA;Lt;2eArdGHHA@XfZ%$=JY>cr58sH!gJH5>%PE8 zGro*tFdXJzAQ%yvMwXfGF0W8qq{xr4AfzahHx017^@ zZsY@`1~>Nz1fe!1HepPmq4t%}!8^MsrrE0ccV~$g{WKyIpomjf=+tSqr;0{m&q4k* zPU2XtAX3Ip-R1QBQwc#IQhZ<{5^9~kJxw7UOV=E%%Utm~PaN=#F4|+qKN~1yVvGvW zK*bG z(eCIm)T;UsSZrY86l6^snLS6)+&o}xupO!8`6qqpl$qnLHzEmFES2qC=+T9>pF*W$ z(a{$D&vQ7HZ^mtnwIJ{*`8BBF*p$P-$RlQrS-@e!If{LTuRh&&pU8@-x^SS&Bv@Z{ z%Zd?_bo=pAIc~1;Rq^<^8)8$Cowox^T{VTCX|Ux@L+YuNj?4RuLRNmhiCM2dwZkyD zOsva|gh0`*$QpiU))j5G!@y5sUhPbh{n~0x{~~9m@u$MpP^kIJ6LZINFk)t`iS4=U z_SUaZ^wXK4@1{})ymUMiLM}Ldy&S}raw`dw%KM38fy?~JW(VaYrOpR)? z#sOln1c^{s^HqKSaHwQVd>kr2qE_6n1M3(?!^sRmk*theD}OC>C%1V-LrX^MRwuT3Ca8NkaO92LXq5^;ca4m{L#2lK8%q%eB6Wur_i zkFOFp4`uo4NPb??`=qb~-pqz9YY2FGG~|Ru4*`g@UuBalJ8Y=d6_F`$8R;Q%c82{e zQ97Ql=yE@3`S!ufJO`uBS=jQE#I5VFL%K?nqe=oPHRf;r#G$|IZN^@LU6_=k6lZti zZWAw=m|)H^)0?qiTZgy(1@hii>ThK=rAxKePKFtHS+{o?J44L};N^8IVS9^g`495C z2`i)wF|CvuSQ4qbk|D5wxln6)YZc#^{!H+lloOv1*ahHcbI;h|*Hi_PDJqXJ;8L={ zEg^7UNeczu0cs@ef<}@`l)0kvmj^xM~KC+@k2hqswvH7*c#B!vcmKz-%a|ZML^ctHTRAJhw~hk78cyB5Eq!Mk zO!TAmEZwr38{o6uT5E+`zd~i6^=7KZlz!Y7oqOQ*MsFq<#$w%2EI4W=z|-Y@DSCR( z=w@2-yf-|P8mV{S`&h~F`}p8wOp-OP%0mi9$afm>CEW1LrQ3jR=GQUumY!puFJG4@ zs41)qz&=2+;mN&>c-~r+4nnwO)r#exRj^u zR{~EUFGN{OHLdYoC!;m1N%#W3g3T8F{gLW^P*uCuA+bc@c|kW&I+jZ!M&}X*{qg(t zX@$^;6$_z3hAACNlOzP?0(Gr$CLu+i_i?x`-QGXV!*b8-IJ7`c@4f!6F93;Ztu_r! z<6ZX!cUPSJdRJpbe{-poZHpNCCU0AmQQ&sG;+%rst_UY|Yi`ElE(&NAKqy6w(1z4A z1!Xc7LSU94oiS~I&1ELV5%ud+bO6&0qy7oO-}+4fUTPG zeEAecqSEb#Ga%A%=u^`TG+jDbH-ind^YhC^IA546AhsPOw(8gtW|2~I$&uR^p%T1O zeqe|>v6kl^Ph+ASO?x9_^|H^r>!193);-rklK?Eg@*A@!U{#+MtZ7%gR1&n1UVyEUy-}q`B zF!@k$-OA)?dMpc~v|#A6?AP;MJ8}k+XOQ~yzcTT))n@*b-tu9KB}*q$C$7!5-hTVR zD_1~O=*02vZ7VAP9eHbZa&lJps#0OJWCY*YPnz!xB@i0-4m*JdbL&O3xW?Y^vx0!! zs)o%Hs`5%c*TFSy!<@?^;)AKJ#FP`Qr0$)L{d@&%`!y}d-S0ND#Qj1Lg=6*)BQ0r> z;AbVtFxq96KRf}w5$0)D55);e&CCs|5%blyv>O4vW#vkhCI;IM-GYQk*UtP&K~gr@ zUpzhrq5_~eSr?+H-lkBoAIzh^Lo>aF#7{l8SPvG62+$vD$N?hSDXvtxY^4#vo4q@V z!|~d)sjN+!yADWyz+tcP=v4vkH=kbiKZzC^|Dj;K#h_6z790Rpl^p~Y;2b5_uaMcH zu%|bc5V(-ppOrg!eH1$&kXHH@Vt-FxzZeAX6n{etWG>&D<%bC63bV)$wxLR&+dW`_ zh;$g)+|-3L$_FjizjMAI{j~3i4=a2wxWkI9iwO~T>7rwpo4jJ`Ek7N}C@Dnl5QGT) z6{B7ngqb~P-&wrzB-;G>v+#<0`dDKSS}3|cfsO2LmhkWSPTioOw~)Cy-qKgiccRV1 zE03OboohxipVMi>)#^sh)0Yna41vdvkgxmEeSRpC$z%-K+G6j@aa&Y4l>jgW%^C&M zflr48ATC|p%00d`+QkqOdP>2(U9IDMWvw)}UL=Xt4UROP1VvqyQ^uSCQ&kC}&C{KC zXLAL~P%A3bi))I)?bC-<FlpI)oNv>JUgMV{B_jgH^axe@+Qua{%Gc$g z`F!vZT--&K(r=fV^NHe#DDtmBB~O$SqyJSA@n`l})4SZy3^Fhn&A9->$8_t7f0G#6ZwQZY-DNYY|Vw{ySyMp*b>-7{gt z^FKLk=k$CRSb~%k^voaF31mE>+!Fwv0vX$pCoLJms@)s0?KuOyo>ELE8~aWCI5f%b zijsvfsi-MHM{xYy$b83SRAl~roKF=zf@@BUbu47)nM>_BYJ}Ji$2TK&iy>C~RqWG^?27QGjHVbUq`y zK$mSJ6o5;3tbiegup!AKSZDbLRn@EZyqQ_1spogE?fvSD@XsH70}OX*9?ctYKn=uR z4s44da=G421KhO=4Zg8d{#=~ z)p%mG$hWdcz+=1}AQkoz_?ypJvRVADb0)i^8a+%{TxXBieAqQ?`}5blamz=M_Zt3Y z(Kmchtze&cT3z+LRrf%Id`teWC(5DloVUnsliZ z71QEcZK*9CZH9$L)ZQRFDg^!U6L%zTFqwNHPq6t8AWFf>^@le#HC9l|$P%BJKP(gV z!L*0n@gt2jAd<|%m{mynNSSxfY6Rcs6rPu}oRJaZ)O3b@SG7AXlnU>ybGlKcrnNX- zuINEA12VB;F4z!6cvFZJR8?$}6OX7M zELk8V8#^mphdU<(+sTNx?4#@wb=4T?(ZGfmw*qmc;AtoeQVIVWSZn)~kk$P#4oyF? zfv9Am12_)mb%p_^V}r>#hq+dTvA)(EjG8%_m++;znY2F%sRa_DhU9l$tGrg<`>B<- zLQDcnKprtOkmGyvYY4nO8=`PnofwaLTD7LL6SZL9$rEd<)HxxoeT_S5-9I1o44n#7~G_kf(&8&gAUYrngZ{|;RXOztx_OAr^VT$fCVkf+-Rz(UOjOVJShj^`+Nn+{wOv@D!-xJ#dQOCV`-!2qxG^3~_nZ>0dUmK1 zFCy`B%-i85s0Giqm3Rgr1^Jq@#hPB5329R(T&B= zD9bW{umYag{fNnDKjk;BBMi8B3AR`ZOpj3cBD)M@a3((UBo|?_xYW5!|!}jN_50w%ZDG|DhJ}R(qyw^YH}fY+8IhZ?1fSaYgh-n z>SyN`2|}i_)R(yvd_;QqS@dq$-UGH3IX9}owPZDr*K>Zfsk=RUZUxRzjzAa_LcBo7 zLZLt&VXtX$`ZrvpoH|Kj_i8#0CtVl)?cLC@mV=;9p6FsIN_n)9iQZJPd|r1=I8Z|A zhzd+ovI4c*hTPfGLGAc-&aG`w6o*w?CH-|rXm>)=NBAQG%D#~oQWTw@E_QUTU8YJ; zx4CC_f>M{Oeja!~7j~09k}D|jmu3$xU)%I#5LjWwIoi- ztB=Ra&tBUB1I6v~K0L{MvZXF9wBckHojbdmqLFm(ELh99^!6J@VKKE5mM^>4NS>C5 zYD*W(?tz35@%tEs3|o2tnD2F2Dy3#9oEr0H1qBrzY~y%u(?*5+BiLSqFg*ay$7YZ` z@Y-BDNuyCu!%PGrfs->c45U{3dTLxsdL#f|Bii&HR%5O`^FMQ;pJz=4CEAAsb)Vvu z#<}Uiw%JOotL4Fc?{2*Lc%J{4AtA3Rb3>^aqn0*%2UA1wm;7zN5z905SKzMd$T+Iw zw^TuSU-HOVsh37z(u*YD2m44*s6|sxkJ?rw1 z`r>5$A*G|dsZhI*xLDCQm0;)dx;YAo@onN8ca|%dsfja0VK=M3;Jt^Xd(mtqyO0>_m%a>r3%{gch7$1 zJ$HMd)Iqa9JYhJ^LjHA=@~mtogIdt-$tt+8X{?{fYH=%h)nXk)Z@Nsz#=LSj=O zgRjNUQ080qwtMvAV7=fJ3|7qHRZcs#V;Ru}UJngghJO=S<5e3{x6oeR@~D#YA;rPs zy&(&Bql$Akq_-Yr7s7)m6DcRuklP*B%jzNj?@(C6ddTKFstXdXB(%#j0B#xShng}z zvc<)f1kZw5Gf9HL#m7E%Z{C0OYlxcuz`QIv+OuiRPh0>7M?LX1hOP@6O9924j=nCo zouibO<9X&CX4=aixpK1Gs8@D)su7J7G1!lA1c=cRwmEo`JJ*#bS?>e40 zUa{SPOK*EIDR|#Y>R%z-dKzz%bf+i-yf; ze&aF@4!-g!bcni(bKBjWPA0IS*zsM4yzK>7pU?<#o)t6I8-DToWH0dgO|m8oqHC<| z1SBi__mC1kYTOI%)akR|4@(+xcI*mVu6Dhp;od)^f4ZH8lXQR5k|Xldrgz)16EJg= zE^rLRNKvZt2wpRZEGyxn093PSg5JLiLuCpcGCS=ZuzH^CTdf;b=8}-_oRt0FalAJ( zS3$9+=9V=~G#(J462TG9qIs-yzX<`hl0jN*`9lYon<#IJXbLFQr&lZ`JOvu!3m+&T zq@G6)!{TwtQc@v9^b|8hd}1CX!~D(V_+im8a>3u2V-hx@JOJ%O`tSLwm8wj<_k-qs zPja`ZQVIaCUtSWW`Rzg{7jiEH#b&D!O=yp|fStB^S?X-RU+^}jh3CX| zL(5^MAl9u*#d>jIEDO&`kxQ1>YpOj1H93bhU0)e*;;UAYf)JfJbM62V4)lKDQOT5q zR1x!w@v$x>h>a4Si?A|+oPJ-mzhH^TMSweE8^2g{XTWa30zv^35i<(F0iTP8{m+oN z+ELsu`*p@CTW9sYN0EWQbKWu|Y9;@z?SQ@nU6S!up9HFbe=A13ni-nP3U=DjLkzd+ z^OF)z-HM2w>_r}JOFa8eSOSmOJB6Xd1T(BIC<$*V&87+9q0cnFul_fqPp$(rLr$k=^_L{&-wpCB%gE<`JRp?FN=|8A9 zB&q6NLOaQm;J%Ha-Q|NXWw#7P#aC59sbtiji&9?Gr!|lpuSiF_k`@Gykk&{P0ayG{ z`*$xP$&cf}WGvM`J52fxRDvH|eC~RaQA!Yi{%Slcg>AR$1Ey&en;C|=t4>jfsUF-< zncc~3DXCR!f^qD%(I&mJ1xigrHK|iPa4oq{g&U8i5qT_$ht;V4W>KP%vKCWEZ=YgJ zaNXWKc@dX5Mq${Z!qtQpu^U0ICmXw?1WM$9F-qc3V2p=s|5p{8!UUvLG9~UV^i)i= zFHY9^|BPGrBRstEzhwA@cFfDQ9}U!aZ8fO#$>=2wmmFpJuhKR%B(zDM8%_e}qBTyGA#J!^+T5pC<%h4b0Ax^bY&)vGJfiXLQ^ON^5ZQN5XO z#Z-pcGt^$)+dGPGL^i)FGf1s08`z;KW#zwxxUMj>xvKdSk);mr*Z{iwD{E|G*|<~T zj@ZjHUr5T`d6Z}#xo2~!S`+x6{EHaW4jjS|X4x)dJe-HA|AA08?SD6h6{df@gG_{C z-J0q$=UyAh;A;gyLO$ig+X2YT?Rfc5a`UNb`%fkWxqM120!? z%Ir1(v{$KE&(oJW7#}o5snq0*O`1m80NVo-K4uDoMAmj3e=G>86y5NTSU=f%VkC%_edA81xi zjQEF#5k1Oi+BJMMiyVV2)^)uLr|%`C(6gletflU|F>m^4q?$*it_tOCGlHR zkyNXupt{jh)Xy}{C^A9el7!9wfxU~f&*{{s%n!jeTd&nUHeXT7o_&65ec)GPns3by z!sE)0)M&h-m6ekhWN~~=#2i<-?9$S(6Yh=j5Uq@1xUe+E8dJIa-kaFdz1D=()p-|_ z5?>D7g9xUbM%+O2TljxuNT~ zL$ggpKDii?_F&|Glbq^!A`C;p{BH93aqI(O<0Z(avTQ=k^JSME;>QhgtFHS?A&|~5 zt}REo%(eT9CXNCD1b`(?u%bi-$)|PbhOSBfkw2+!syD4PFZ~d45+eHmK+vvvLwm5| zW`fBKk>UGX8w_q~Zn(fwIU-+CC)gjmpFg`{;juC$AKg-6vCpJtZIdkHZv4T=?wnnd zcpcLc7)%H!o}yb4>RCd0eFJn{%oG|}ga%Iv{4`m*JLqE-C_mYeeP;)@nUUW-FmO

U_G!uB0YKQF-6EVt>BI0AImH~&I&BYT&pNC^@v0>aGk5E_%zAi|A@C(#C&PTxkV zd<@IdjHN2Jeg!drbL}@R{pX**SpjtHPO_^P3fEw(-ZSj9sL>sqPM-5wN(0o%f+$Fd z;EqiI$m@(vWf8)1KIv9BQ7|pkv{%3;&cYN7_SPlhGMH<`-mZ%ve(FKnY+s|6b9j#b zYo?Dfzzq|Pgi5#aykJbwO;FJNrSq30M`@K?pY1wE> z+Pw9ERv@_1O%Q!BS@Upv9s!C4lrZFBCp)n8q>r4HF;acSPS>##7;XL}0=@mn@KAY{ zESixT9j_G({pRpZT@w$9kGi+_d62W*e^K_2oRCtIya~gQ^3@a+yV@Y{Vq58_U=UV7 zfYV8eWVQNUo}zaESYDXhL~n2|yl)S{dEjI1{&Try%e)o69`BQJv-9(ODXH|FRN~XU z5;2Dl`8_p)lyN2rc!nYb)2gg~Z>~yQIMblN3;Z}UlGTU&8`-w8eGFulSMEd>&kl3D%XJG4>iWRdn49wVx9cDl7V*GDAByvBR4F zPwmJ9Q6w%Q440jaK_f2?F4&$Ftn5opNh7t(Et>~J-+8Ea+txe&lMWAnUWyt8^sFQa z#INM}p`y~2fQd*GxA9P9jg*svIndW(Oy;SRM$}4jpJs#AITnI)iohWFlsKV>@z*Hm z4DBOo@y_jAdWoLSm1)4NT{8r4aQyS~W;U^rDtAP|IQp9@A1J?H2!%Y6_Gv~6xW$LC zBJI_lnQu@7zb8Jd`g^S^c%+T1F_Y#|Im|6+aLRA1>#R5xmXVwT>VWBSEez_x1|x*| zzo^+C0#rx+t^R2nT5)_n3}~n;M(Ed8Fx;I>^}kGchUab=+0K3S`N^`BcA#Z$^M^r0 zz(L_|oo@>wexC!e6{>rv{|3JGkTpH0yn0s4CcvV-J+DjYleBX^&Q2sSZbZf*O-s{)oS!Xy|^s;x>p=NJT z%6Ir{F0pK$C-~}Rug+xWDZSmuqJgMPg`<}mGv28Ju^v08^Z<20RS#yD0*Yfa_jI^@ z;~l_IjP53i?C%vo#IzMCk;dSCkK={|Wd)nPuqr0g&l8f6FEVe^{(@P8Sha{%{L7xI zlzH5D1XCg&IGoE(yxa@DwUXN<0LCtL^`2C57E`CAnGt;V!JjD;x8QcsG9VjyYCwAY+Ho`C}L|%Nr9+_$k z2g7$$j#>ou$H=Z&EeFkpyZ8zA&UqJ6pcPHe=Ck?1RflzRdUai%oJNF1cC&P%J_%W| zR*Az&$sP+QebpuENotk5N!Aam9m&-KaJhcl7z<&{M_&H;MR@QtraKA?w55Ajx-`%j@-QnRlIOUC{gCj_?CI{`Z!*6oEV66;gF z`o8ipPU7$DWleY>sZK(nDi=^y0d<%1ygX9Gg-&LSUD^&Mb`DvS&jg>)fH)6{iUi zR$)0tA^0o5-(}I3_d`3?e1rn+5?0;->Qn00i(kM?CQn$}c0WT`f`VfH+mrXr-fLQ&wUOs(DT9vze8bmxsm9fS@iJ1M6 zg*|dymk=C#nT;OvF~ofP)fyJoF{@?e(rY9fpLKg#JX-=LI;kB3`_g7QE~zcZbR39f z^=#dh#*9aPV&zKCvxT}48WS`tK^JOkheTDv?gZ(Gk8kLUFBQi!loUK9^4vn>2Y&Si z8w)c_JjT^=mafnf#5~Os95DIXfHGHtGZJN>id;2-u0v|vVx(2iB!KYA_Ye>5CrRes z5D0oZyC4B#fDGiYaQ&;~?3@iJyT9pJ(IoP2|J0SHPPUR^m2jEibb6H1p%Cu4h=kQqVwkSg4CBJZzyXbPqmRT_=H?Bvt6g`okL93$PJ!*EGM1hFB+d-ty zMr;xpsjQs-RT247I#iUE4VOBn?+kgIGH!lZb!TE^k@?T5DS**rK}Jhn+L_ITBTrt- zh8J1$RGN4}V*<{xvJ2=^FGZ{V8Ozb`>DsGmBIc)cOt~jpTFIDZX$LBI!0fo9cSR!7 z^FVF?LCy1H#r-@T59r}}7Qt)aio%gUCLJn&sc4alWb)w$&3199gkq49vP}aB# zV2iCIJtAO4frERA6pDT9Vkd#Lqyz%|6Z0gf{BClx8)DY(-z=y~|JP5BeSnh8VZ!sZ z9PHrD!wyzN6lk=KS)$xYRk#ac7Cs#9wKEO^LfIV^aM8s5N;8o)LKk=9;nu zZdQ`hTq?&5iMp=fwJD+QdBl^dU=DSq9{tn@D3EjK?2(2yZO$lsA0AE`eR7Q53hB0nX))59gh*d3COx@vrlcgH2LNwZP= zzoF~qyS1DI4B3l-kA>w=HV(Ie>3;cbC6{m~Y$YGJnj(o4z8s4pif9@-Q9kK7$p3SE z;la$ejIWQ(^@&NbLJIk5o3vpa(Z!dV{%bEyqtsC1-NUA_e5nu>U(2;_ z>ejjqFkuhMU}wm0ah?81ZGu&5>;er(N}b}tC3S>uQ^Tz~8A=D$6_H{sEDWRkRNC7kLRMM`@w!jVOQ{eG_ zkdw;nf&rlIa|cZn+SFO+lj8S8)9tacaan#xW^H$VZq0AFwB@y}xeH|RfeIVwy>Hru zd?*Pu;!88;>+t(Rj9#nAiir)MU&d$6(S7GxspnOC2jqd+afxjy&uzS^NRrjJ+e<-* zF#~XQ3Ci(XV64D`y+947^L@^d0FEJ=oFE>Alh;_RgQ!#h>R4{NnJSlUZ+10BhDBXL z{MZHf!Hq|iVd>pF26CvL6ex&LpuI5iDs}~ELSHEDUpn*h-Hml1QmlEpsR!!yYiz{T5b zvq1>_sxeCt7UXeJ6!vWVA56U;_ya&L4ei8r23Ms)b%NF$On>0j*x|3zT`)TW!jB~9 z$h}nJR88r3aGH~#(VP*;kyRqwSd5G&?AeCeNxXRF_$2kDVFAm4PKDbhIMkZd5RRxQuzvu%}?UQ+CgvoE)ox<9<%oBY@1|4xR1!WiPW%U-KQrA5!oHs?l#`1Q2bjGNYpk)!T8+%=fF z?Lm_N&};WH8`oA^SOCg@>U#nl_Q(RjJ*r4TGX9u9MKAFU$Myn;h9~0O)82-?8dd?L zW1ESAjp@8f^dUk0#hr-RvwwZrE6tRJD*85iQ;$|}XiK@qB3QmOWmjdj#%1r~EGFW? z2H!7|e%SueW-HId1<8?$bT7v~OW}$#SS4y@QvA3^*h)$Wg)DK2v>u5*eeYW{6Sz8Q z&mS8-?a?`IL#f5xuP0ieg6-LVG27Wz6|8nT;uFZa8wOGCO8*GJ$Yxan1>!(eNA5}@ zeF%Ep3=iucLlgxbF~aS0i1(Rsfv}0UXKGOE{u>&8Bd7;qL_)pWV%9juHUa8%6SZ$B ztldG3D+86T?HrUY0Trpb$)9=ps6+dW3gkqV9%hU}BQ8RBMZu@`X7qf0g_3ipv(OMN!< zY3ALPzBh0%FH|jTSXAU$Ks#+fki(vs>~mytLA)%&)yTeaW?B#@$wYXr9{U-Po_M+k zK3JfGw`ghfWb@5c>rJ`znYp$4{&fcDxM z_H~1xQ@J~%9wDo2rBDWEnB&#**^y>f)t(O?l^zILxZB-h!kWt^h>LqC#f_dy{Zi16 zupV55#9rw)O7@U*IyM;K;}om#tw97M0STBqrNR%yC3Mt;ha93G2?dDkNk;uO9j}$m6O&aY!NgH!~Y(SHQBRCDp=N z8=JaJ=g^)z=ObRBj9xZ;U#AZ@g0r*}54v|$ownKRIde>DQ$##{pOy|C0E4)RaNEZQ zKGMbv(5i_`+NJ&x*g1zRQ5pVlabZ*|LyrMX>thqY$pub=MwAc^sKeSQ&iS3*Y0i%| zWOC+{I7u6HbWEgByG4>4olqoy1acvh)bjkMsS)d6`cKL1V~$%Gw<(oaLw=vf37D(% z3_H@}(I5j;0lZ5SLn-9hJleqrzj@Pjz5K6~J$N+NiEW`HBQB};pUufJ|^D>j<>y3EzaLmA1$_a%cO zFTt+aB~HjP#Yx9XQ>;28 zo^bO$EP5+ta(l=3oo#08iw9!CYO;4}PKt$`qebfv)OzweKcn2jQ(0S7#^h92=icP) zg6~C!!bw9tnN9appRjRGG2DGcqN8Xa9p6&$Hi4quuX8Q=MYwI#wqk#T3BmA85k_cU zg(}yD8FaUS_zvH zbIx392Ovibt3&_xF$o{Csg2!OPeh!PBW{3PuX08{_(|fht-V=>`M#SoZ;Da%Uni+gX=Ae^ml@@HoZ8p0>d10*|j?=lYI$ zL_-AzEn3-O_mFlX)*`D$-c2AIXX(4$DXoWFX&u4IYWyPu)6hZ!BEEo2aT0 z2#noaVQS$x0yt^q4DdJsGO^*_gMfH#l-uI@$ADsta@h;p0s~cwkn0;%qd3g~7Xub) z>me^sK?XaE^v!3}rPfec$VpLH)Oo3Et>PM-pE2{ z|7{au4ps9j0IgFM#Xq++ryREgW5ENAk2A!q}O=FH{I{Fsnr_E{x`dd_m zHqUG?3Gd!VIzqr{!5UU%0Z-E@cj&SkkSpT07-TpiI5|B?Rvk?(RvyU0w zMV*>Y&nb^3@QL@|by383a*~2(NorHe^JYB=(3@3k-G~Y9?lrq+mjd+0G=p8ErKTeE zRq-vnCq6luaXi>Z+x7ZsgIlYEqg01=r;G9|m=`bl;79_7C|y3r0B7gEwr2ieZjM#& zF+K4M1D|q&cawoPWw=D2`G(|)aQ|I{aXF2a^1Eg8I)>>iZgD<8YxstHB!p1IW(8mc zf!d4dq4G^t(m@|72xhuaSVu&xc^Tl9R{Ucq2u4gFMKIK5B4D2tcw%t%8mOUHj!7kj zdPPQS*7WJ0tK(x(l%_w?c)=S?;opw2CF6=m2WqLr7=dtDO6KC;LLxMtpW5J$8e=OWNp#;A8_^5;6#2iJ z{!8il&tnY)HGKo6zQ!>Y1(}rd)LR0+)2j4qnC6M8l7c>N`3;#J0 zwLX!?DAPEXtUZ;3Phydxs?(+2Nb|cAGSV|9k|y}^Tr(q>+q0tS6@{|C6FG9g0fNf{ zafn(`+codz#7OWA7#;=r!SgeHz6cxRe7!h-U7co zr%qcS!CK!p;Kt_-kcFBhbLAo4dOp}W1hRA?eSoI`c$`rx-b}xUd#Yf)QSl@)%WSpB z4cYibYvDT3YKLN=s{0ggS+luSlrli-SzB1TZIQL~KvAVsCuv~gE2y0^xSB;Wc_F4m zrqaw|x)zy~mIm7)I%&MEbhjKM|Dss&BjFPG)Zb4s)B{z$rxtUEOG`Wp00sID9$Deo z6QlVHb3S1$A7us5@R%Ln2Y(w!sd$NkJ6jZB^55~mO?yO*CMR$b`?J>C2qa6uV5Lh@ zxXs?`5#M^5Gk}%+ zKdM1`OHrX8f~i~RyF!|y8^4$WBVaF;1G4h{Gz959DNnhz4Z)M(r`?-9FZHuO_>7>q z>^pR}OA?p&F;c1-D;g-#_`QHTtEau%V4n<+ax5kmU8YqgTYu`OjTd3C zxzsuG?%24@s7(cKoM+P9ha97RhN$5Y?~s5@Lp3QOF3#1p&73!yk0^U)H6%4uDRc0; z2t49|n0hrNwmuAM~TB|ks6 zC64+cG&!oVkRz~BG&RVhGp|Hv&6B%t&EouiYr{ANsB1Y?Gg%oZDlV&C1?2Zmzckd$ zRltYb=~eUvT)dS}919__ZEXYZcHWQn?MP-7tp^Z)kS#f)ZztoJPsG@;U1`u1aKc+x zOe8l9;f$CT7IvW1fjQ1vW362btp3V#d$2*?psF7f*Q)LLyH8cD%wV~@dt_X9f*_G| zcK~o5CflL#usGA{7rqcPmtnpPkOK{gmRbR1+InkFnnCN%gqup9cvOinP()&ki#;dy zalI(66|sgE;E86SuG@@iNsFwSRPCK%58e1Xk49{=6M`f-VpIxK{ko!SV8!H_i6P^g zh?GXNRK-g{{cgT~-awj0t!XXl8Y` zz0TH;=v1`SX%hhdKLEhFckiPCE6s1~d%7q-4qcCTg<0`U3$7Rm3>ycHWOIF3v!q;t{d~UQTMr`#rzZLs)18(~$#M4i`=PhA`oz;7azvvAvYJgs zE?$dx7Y~CFlULtd>(q*zjlH^VW-8msdM{(%syoH!03YsKd+mk@OaSQB3`Klc1|#2_ z;c3xS@EE^2jG4uysvYxHmlADsU%JVW8Ki%c{5A*iX3R(w{p6yP=M3Qp$~MO+ro}tjWi!*aD{#bgZ|mktt1?c2@kUB&KQ&Rpg~rJ?m2KKGeMLh zs3=y`A|86#FB-^X#)CzACDrmjaDgM9zI8?4hytrsoL4#s@w?-pvd>qAqI34qItSdF zxE*X-iKB7!dQz6v&1z=C;K8ky~ECMUkLDY=<(9-R?}AL;A@~C&Mw#zCn<}3c2-djr zw_FsppIVW(#x6*se9V;oga?Y`!2U}A!qGd>Q#2M%pFL2J+MaP-gI=1$ z{O%{eg4b+q`x^0DYtzm|;AuY}X((w2>0o-+DYpNK(8ek}990u{3it~je{`7jxdQ)i@gsysiPwO2}N zkhr$$(#L2Y{vJqEy@ML5p+0>6N;Nh2lLcG+`9YKJt+Hw7q<~ZdVqP8JZq_Y$Qd<~_ z(UreeQSev07^t>ct9Yy{3yUElQEZeK+gZ@uathtfpJ6cPkJy7#K<=@b11^!Zu<)qJ z?`R2dpWEWauyS=XZXbB&K6?^LJdipw#p;aTmH8``%1HH#e%M}eO2RubDLgTRP}K&` zdA;7CgY9{=aoonBdp-0k2!Gh(#Ub$Qxy^P_bB4*j!_Jw_T>;PIw1*ep__5?B&2qh{e?7)d z!LqS+&slE;O34#^=k0^CM6@A;`tXQ)W^zWgwFA+^m|-vg+np>@duxdSzvQ@!K5yu2 zQj95lr00aC9Sou#nCbemOmaYGgp>AV{56KF41P51Q_s9|5`+!$!h?NnsIAb z-CvfPg6(?4o3>Yu`V}I&tjlJ604ttlqLXDA#4LcxHgvnA|9)48Js29yQM~<^J;;TG z&(?+Wlx;+>Utd}Tr>?P~HN#+ow1LIzD_sT?GcqDz`Zu+3ObBoXB^x3vd}Tr465Pgn zfGU&HQ0RG?cU)}Ndv_nIIC7jrjgp%r7b=_FuSCDbOkgIV9;&D4twvoQ^!NPc_erZe zg}k8Th_l-O4x2&$Kn{`ona?b!!p@GKOC;f{$~(^gJy{y#5yz{;q7NVVulHZaP^-m#_Lt$EfhgLk;n`%LYLm$N?f>f{#%-qy;jRe!$ zLU|d;vVH~JLZ&}D2L}!axG5H}w1kwe6`F}1V(prE)8FLjzl=-p8%nJhU>_O@cq?mX z5PZ}gF9{NyAf^oG^GmLWYdH%ADFT?iKjgZ(Tc`SW$^^926Lj=ivPa#jCu_ts7Z$|Q z0P&q;?ES|SxLN9-Uj-;4Dq!Y{lxGYa6TeROSQj?Kl}xEm#^IJlDfu0Y!mCR{tWMBw zJm|5~M4POpLf~k_zL#~I=cyw3*6#n7w2PoBD5fabrL8qzSr@R~_Gvu} zviD640|FnRF1T3Hr#FPA7T~+F`{&cMEN$LBDN&_*a@H9*gYpkjydI(CP}91?Uv+*- zR@vIh$ph}D{4pjSCip&)by&l>mHU)rhjPSUnHl5jA3~da{&e9%tBV>~{wtHQ3;>aI z2%4V{Kw0~U2I8az)-bvN8h`s)6kUZQmhT4-2rzEswh^8xv8lk-dtA3uIC^PTP zJ(&PBcKz1MQaapHpoYzTx~Hp`HVLOM!6tHsQ*kWZ~hi*Y3B#+zdvx>#vC z$3*`_GO*2V<#e8Ao80k(Q-VOfvhHg1&GE$`*w+2lj~WB?XQ&p)f}a21s~}^lF6aw^ zVRL1+S#o|6LmUs6Cln4VqsV9ulSyU0`QyQ}pI#^CfuHI%fIlhRwA3AQ`FZp6UiyPW z+|zwV?^!(&$T?~Ctx#T9l*){qMwAy(I8PWEr<7`3sys3i^6czzV*i}Dnt{JjDTU6_ zENQN8QHdXJ9o?|1(F~~OQD=zxWY)vO^N>)H(ZujcfMvR=dO^ID~*$S5Hu4L83rIf@y@HI)4SlE+q+=yj; z>l%Mra9c1GNdb!5WWNwMW~LGYxXY|6vyAUK&Ci#$URJ6FY%VZu&jb@*jCV#u%scT( z=SD50rF9U$9Fq2lk{MHQ$UD`D+u>&o+JvGnBE180w61B^VN8tbA1|0eECQz?aAC)) zurnVMx6*-X$2xKY?0ChKHJQvU20CP270i1JL>I5S_?U7Y<CHW9M_f_p|g<0cBoxBfCg5R>A|`9 zB*}f~uPyawIV#u?_jc4-K*GAOjH{Eq7<`c1dv@W;?<3y7sF??)W|lB2!w!%ubPc@{w1BX14~@4mi~blJ}nPTWGgc>M^L&;^R0N z)15`u!BQg)oXN*!BfLq>XzYl*gvR)lR~}Pr)R3m4NnDU^f=Q)Hq>;56COQb)I-?QV(h zlaH6lT5j=mmFjh!U)`jLtC}24PSX>8P5GOY$2rpD;OM8FhN-aTCN$M5MpiADTIajO zM5(B7$jfl*PC78XT5ZZQ8~0!k7-iJKnbySZ@`I&i-1H9~e>B^v`UKL*7OA`Fm?sWg z{>c|$H7i`5+m6|-1>L^9eZT>-goPy}G4lX|o@+d%sU{=3stRWQzmTbdGxune1Opg(q9 zVCQrt>f9Gg^m9pdd1D*8wsn08Ve)-Z`A50<5#ATCDXwTa@2t4(5CcXnj70A{+H#!%*~jsyWHK+Ych+R_H0z|GgznnQ1l6mzI!qh`RIoo z*PCUVxf_T+P%GR?E{>ge4e zP{=r)%)3y&ta_K8Hy&%P^MbXH6hVarUzLLW$MhIyP`QzQ72^;)Jy*`VDH}}q%$+72 zWCA&*ItY(y8h8n5gK7*q+M97heCB$)`5z*!Q`YuLN*7jSib6cX5s7p((4g``D?cjN zpmXi{@~iG|BPB|9>JFYvmNjfw34{eOjiJBy^7SvHO`iud2cakE0@wCDcea15t0@wy zT=Gpfu|-}JJ`x4+s1@w1MUuGYLUHtoIRy6j?4GETKg4D_5`q;)TZkWWFj}r5Q3M8T zW_^D~v5pZ%ArLyuCi6I>d^}K}F{2a}wn0Ir%Be=G-Ut$zr@@{(DUtRPSdF)#T%CxJcDXzkY|pt@r?>B7sOnC zc@CdN+?LoJy4l`Ldoz-ue<^!Ne|L+WdvjIeIv0e^bH04_RLkTAK20|M%}!7oTF}|- zvi7P*dxLg=otK-<9^Rd8?|!l~$-NtAdkM`1lBJn*EnY9CC)VP9mX!MJ&FT@ zDOu?md(L!m@PWqG$a;{^^NR+jHHAF_xm@n6qVaD$&To$wY!$6Y|CuO*uw^dNh2}MO z&y!uv!#kL?p?ISHyPG7GWr^2FJOILZMXE8o2o_hu%o`#+W=y-zIaOtfV9gUgA;JK7 zH6Q|+pmB2j-_Z^zd#?)#YZF!YXO&QjXtRV#KZ{eR1s$kxMUr@~c!0D*EM}Z@imtJr zl!A3pjGLJJSVlmoD5uC2yu7=9)SSRg!}D-=Yp0wd^BY1ksn;nB9`?gldT2>&J}Y<0 zQix^l40a;^^h2wvaXslKNwFT*2r5`^rp2T_Jn)TfBIi=%fMm`GpzdEaH(8JV9e8wN z>Qvv0m(9byFX_MQK{c;~GEK+JJ@6Y<$mZLo)3ovjcHEY`@l+>>=*u{#Qt#MyFmS-O z_%VkF1larJ1j^=3;3^i{`j$~DH!GpS{Y#6I*}vgfGTLdoV1q8a=9JxY=YP*wvx5v*AdJ5|N!>FkBDh=A0VbTt4OFb}y2F_?_E@ zms)g2lj;m(jQ{)XRo*-zhnrwOQ09@_*`Dr!Yhq|bnAQyIxMR*>llRug!cEW&3xkw> zJg+Awcoedg3HVS+kQ!$trllR2zJl;S%5kF5!CP?-l~LF@uqUUKG|4ZMLbRYauPU$m zC^Cto_oVdv4b$DMR2LUEtFEeK_?;x%y(XhIW3L`5D*Ln zF&Okl4WPPY3psbCK}dgr8jmV9yy%A0VPSEAW%0Dy<5~?X@Wnb}h9O>SPvFs+Wme=- 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

*1a%rJPyT&1$?VTFm(TjT5>2iJd$8Xzt;)W^ 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\"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/670/7de640a1\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 01.06.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="Download custom Certificates By Routers Identity " \ + dont-require-permissions=no name=mod/AM-Certs-By-Ident owner=\ + mod/AM-Certs-By-Ident policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Certs-By-Ident\r\ + \n# Script comment: Download custom Certificates By Routers Identity \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# CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n:global tmpAddCerts true; \r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n:local UrlSuffix [/system/identity/get name];\r\ + \n:local UrlDir \"certs/\";\r\ + \n:local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\");\r\ + \n\r\ + \n:log error \$CertUrl;\r\ + \n\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$CertUrl . \$CertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n:global tmpAddCerts (a);\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n:global GlobalScriptsUrl;\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n" +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com diff --git a/MikroGig/history/20260602/20260602050011-Diff-Config.rsc b/MikroGig/history/20260602/20260602050011-Diff-Config.rsc new file mode 100644 index 0000000..276457d --- /dev/null +++ b/MikroGig/history/20260602/20260602050011-Diff-Config.rsc @@ -0,0 +1,8 @@ +579c579 +< \n:global CommitId \"main/670/7de640a1\";\r\ +--- +> \n:global CommitId \"main/668/b100835d\";\r\ +582c582 +< r: root, in 13:30:03 01.06.2026.\";\r\ +--- +> r: root, in 23:45:04 31.05.2026.\";\r\ -- 2.52.0