From ffc5ae9029b6d039023339a1b0e92bf82f3b7ad3 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 19 May 2026 03:20:02 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at May 19 03:20:02. --- .../20260519/20260519032001-Binary.backup | Bin 0 -> 380167 bytes MikroNUC/20260519/20260519032001-Config.rsc | 4790 +++++++++++++++++ .../20260519/20260519032001-Diff-Config.rsc | 8 + 3 files changed, 4798 insertions(+) create mode 100644 MikroNUC/20260519/20260519032001-Binary.backup create mode 100644 MikroNUC/20260519/20260519032001-Config.rsc create mode 100644 MikroNUC/history/20260519/20260519032001-Diff-Config.rsc diff --git a/MikroNUC/20260519/20260519032001-Binary.backup b/MikroNUC/20260519/20260519032001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..839bf007668259383e72483eea1724fdbbb5cb38 GIT binary patch literal 380167 zcmV(fK>EM$sF8CA%>@9m0i|PNo+($?FAM^T*zq<100000000080002M*arwQ&PX&) z_=A`)8I~0K_n3YSpL0jnxyCKEjXIF6)#O|;=tFa|hR?^{CuyDxMA`OA{q>d+W@o#8 zyP1Qcg2LZUdV|Sc_!D&@JLE2+q=Y zDrlXQYvyMnRSpnAJgyoL&=WQ40gDAR>e0FvftL^u z@v#-kxbaQ%XHg!zrR}vZOv{DGUkw-*_~04age07M9`vS-Bnpc5bAi!Wtjf4+3)aYo z@d1c>Hv6mYQB!&SVB^muby(nc4mvsqL^oE>S#hp1W0zAvpezs&lkdA+de)24_PM53 zkC6iC)|6FwNzGp2&}j+rJ~U1-uJt4AwmWif7%_n!&o&9TYgZ`pp=V3;TM>}JbNyDe zQ$ZtDMy0H=s91AK<_qHp@0~4sedi%am8K!3Z^Lbwif1aN2++tx64s><6drzF`l@*l z1#gQmjI0&zrtLH#5WJChah%avr8eG=W|;dqm5R*>>@r0<8q-W+A-E&of;-Wz%Y8W( z1#itKk^GklijIQB#*@O9rd4i|Y>r@e1GMi$tb%H;vV5sa@u?_vh+v}Oa?3w&A2B`K z&o~J#H)-AKh!M1|l!eGejmfTU32t@lH_wUjn4{phdow|TyZvRt0Ac1XU5gHAjQe!*gv^N|mSyM#n&Hob~ zQg2V%_7dNl@&KDf<@M)g$UR^EpVr{fxuhZR*$m@k7YxpNn_$9J|>>$j={GgX@$OC&pM_Ij`}Hm{4KT)@JBbgRPG*hMeHOTp5*h+{rba`(#xK|BoEG|-5SqMW5q&~UDvFq zR`u`+>?3wfn{zh!hY)()N-&X+17C)WWo2E~zlebrhm79|zN1K*Z$JsvQqENCA(G}A zzD`1WrNr{~)+@JPZV9i@hB8zK)7)=1W0b8upWH{wg$aH*4;O<<$Re?_yt*d>2R5K9 zWx9}jM-Yu2_qBvZ8cXvzb&h8dBcRlGWMy;>%78@-?@kU!g9JIOBr(~su%Fo!I`Ceh zeegEpCjciYE0Q{aBRyI=?R^A0JOxJHEYE|1uPUvGRNb26{R-KmONz!J$`BVVCbfu5 zh6JmbAfIdrN8i}W^NJ*VXl^&>mNwl_VZZBE!y*{D>2Jg79|X@Jw5mQ?M8C}n?PWlS z8yTknC9zVe?ld+laiFi$?}FTsz(x8&btOS5b#Aq!%K3{A-vE)w9JXwcE?p)u9`(a% z;cco`_2yIWUXLypkBpc2F7-}t#ed!MF3BAFdo8Euxp;r2_8OyJW~QX3OD+>NyKNSR z{HkMg%q``89rxGhxKA#VPy`+-lvcNSRZW-s!zbkXsTX0wSUrdV1$xqsFKkN9m!Vy!h6p7F+Gg2nC6I9t6HS&wKP9LwV>BX(GsXXfAVyDdO4B7i!pEV_-3c8B}6^2G7e*QAy267z{CMe{s`u0M$!JMxOC3u2tN_ynb(%!isYx*$HKWKN1b63d~ z%8w~J}6J`L>nUlxR>Y}lyutv=cy8k0Td7c?^ zWH5l1>4R_P8WPU8;w~WRzSJ@o{j5?xp(uz9qZnh`|E0DA@;xjFZX3K|KNLA(*Q#FzF`C8i&S1Y)!QpUfy}r@B z@r4+Ti^6a#1XJkm<^p%@jHVM~DG285emwQa92Jm7HJx7U;&jBSO<{#uju#Sqi~W$^lKI{@ zKJXxYk`R=rT1A7Cpq?st0Itlj2;leFy5sbnyCPaU8fv9c$+ttB9kiNm;oek82>}3r zpy0mXepq755A(vg%OR#82l_;7L<$5WL@Hl>5NBem`wQWrlRKbY@z4&{X~6lHvY7~c zM1?bp8^WXyAgc+Ssk1KK27Xx`@}DcKgUCyCW+$gVZd_S5q?vG>5+c7&#o;p!cXU1n zVgyZk5JIdd2%tay((b2Hw|dk}Vs>91XK%CIV4tw;zGohc0zs|FN(053F=0nk7#Jj^ zr6`DXzv1-W%5Nef(l|@?NLPFam&7O;oV;%|4=VY7$q>T@4g+3D8>$Hv^^ry7Xi|z< zu&Z@nh68lF6gG2i=b|A|Y^G)^fgV6@t#V{FCjb%Gliz>oMEXf$Ux7V*WAMiT_K*TcTkSrEDHojz>``~PmA%W`ncy6&kQ*8z>^ z2$Z^*S<6tbGj{!mAmJyzxDYEQT!aK_HV^5>1hD!N(`|w`Gi|!XCipXvd_1`*mt*}J z7OUmJw9jH%Tdr}~Ni^(>exLK&C(0;#lvQLN5jq(Agnu+AF_HnAqh_#zBJVS>7g*e* zxWI{bxfV|{EwkT5^fM2Kn#KqpwqfW8KF?$6Q3^ck801J#7XVdf0ZWrgy`ls|YkSBf8N6-lDYP}ktZEUN_Pvz

<*i`3GXZIg3!Zp;VI$-5znt!Al1VKx$<#ro-^zWfiU3_n4*2f5Rc-`0q3LOo!^{h%97(UkLtC}jy^YgAf@I4_Ug5*Ej+Yw0D4Lho?8twQtAtmh8sGkW++T~ zw)9_gBuiV(pFa}*l;OhacoY+@Ywy?kF3XiyKjkwrToTfLVc3Dek;6yS=~1gU)Qy7+Zq}5-W$qZ_u1L@4 ziGVw(_wVq#csF0U3nIf(#27=l?aaqa;!3G{bUzB#L-yt&AVRM#|Mll(>1eJto~`-% zEQV~utegNS6#A&x4qx;At%obxQhw=lB$&!((ym}Dn|m5D@34PBq8OyF=D+vkA}`G3 zaYZ2$l?CNe%vl)Y3@Wd*mQ;O%ash0Bt}G9MlY01AvP z0;&XOO(PvPt-~-<*TnAio+`Gbjw;rCt$f3b)M-YBo6Q$gZ=9*}6&^doVf@Ww_jbMJ z61Ge5PNob`$7IT}__?B1r|2JsNEM7mp#o3%Y1Wepb&yFdZsZ*;NWC`1*1W?3;XC_n zawe6g?}nZnzS@-HEXEZ|oSouQwrHzg{08A@#P7!~UZuy;25~8pb~kg@os;DkSZwE| zy_3{Dd(Nr9V4Iz{!A!xu*jnl*I2%2+>|Qi_ToM`al$|dUdyhMcOp**x?MzQ;VHsa7Qd2) z&0!x_D6n}+KD=hbiezJPP0M1=RHF!Rip8*LN9bS`i(FlX)Y!>BMLTrr^4PW9r}|%@ zEWwxAQmArA?^a>;sqjarW1gCd>W%|mGq03sxD>i~Yc05+AQ4zJiHIW0-(A{|bUAZI z>6+9tbl-2nsqg_AZSD~QszQS*d6Ed8HmF5%HvUV*8E37dK^yjB+1ltQR&~+dM{4eZ z{s=-N?q9lF1t}z69 zxzHE*wJy>9^xeKaW?n4mY)LVhaTF|9g<9wN_7tFI59D&~#CnpKem*h#x8AAN__v6f zMkh|~1(DhVwSAYuOpquOf*+w&hlz(>(Thmw$CfYsCK3M;Y-(^rbc*cGUoZdJIe^KV zKU%(V%BQH=qwz9sI9=)|IASWwkg8RgdBBVD$iHUjxTB`CGHgZH%otKavfYWic?Uar zezHZ>YWCa8U!ZJ#^8}02KyYP5+Rf=5c30rqe_E_!xNP5$L=F8oL}S2!nGIDB6h0ZMya}~Ws;HgR>R_H6ZaGCS8MVaQPm+;hy;|{G z-WV#i-7{i%x~xSKaCS>|&Z)Qyh0_*Giu&D0$d}8QVqT<(nT)^1dj?RF8)`Vnwzy(G zE)>LUT8SVT3o3m?^_yHN4_~YOOMFl~&25Lu%2kBk@#~P1wbFYHCRoD>;G^bcOaa}R z6-8k6RxsN{kt^v*$W9sD^(j&p)?lKz;iiGCXiIx9JYyA!oS=R!kU1_NQS0PljQm20 z#Q;l<-tII5k1JfRwsA~-gib$^A&Gebym=WzG^~sfrnJ@y#P|XrM+XUt%zYnSsOS#j zzA}kr09S76n!6PZeAAV!Ygk3j6Y;YRj$m{AA|C{w*~1L6Z43|s1U5)wdm-$)RjBDw zEDIk|XT2L%{3dW4JnLGb%rNU6C)!9P@uGmise3*XiD zU&)Gv@~HdjO_@Y`$WKgRQ}_kN&jK6*TLAk$T$Bmh-`AkTEIq6SPEfxSIZ)(Z@(NWQ zepRFb%=|=HG_aU^LgDsHwMrwN|F>cFOmdR-d_KmU`bG+IWV6ivJH5Ra4~!~Enn z{@kMC6lu4nP)Q2adVwWd3ZJCw7S&gGEGUa@IvAc&n!17*y1~qW=xE<{g*`oBql@ZL zqTpz-$@XW|qlPUltZ!?7WtXb5BhxziT*5?jd2wrC3_l|QINltgKO%mXw9Yi*g>FOI z2jKdFaz|Tz)IC5el=Y4iPEU_7G3I<%rDKqu$$P_zKeXN`% z>FtaMgSzC1m6mrOs3?k7NlXP|-k}1(EXAOu1xi=n63F*N*ukBdMouqC(Mh;*%j96F zY!3{KATU$!U)Ugi8vR#jxEG_r!9YWvJjOby0NeI%G6u>q|AlggcyeScc@Zjd+Ng`a zYVlQOzk(5FOIYy_7ECmig)(3UxlS(rpI4_c~BI_ zyu>f2i(+cyPErGF-^;kY4SR*!1tP5)C_VU5nn9I{7~X9_(9QDgaIoCQWg zknmAQL>*)Ra}4;l>NC+77<*;Nxu(qc$!syI(~>%nJFbG&CULRQUbn#e6&}a zU?Q0t??Bc7cV?ivtd_w(cGSl#<7j-S9#NJA; znU8kvSrdwXZY;1RAEAf4M2=&=S)tb~yF$>=hgGWR4O-*9Y~xqs@t2HvBT9}(8X8O1 zn!rUi<+u}31fEl~mkN$54Bm`U$9tPzs@eIO>0-LD^ctVlnW_(YRdzb+c$WyuH_*kK zQa`m9n%p)KNQCkyCays8)xif>V_IgEd^0L!9fG{pK#VM92Uz+} zWrQixzCL6uyPQ6X^C1V=DB``Luurla&5Xtkks<)wn(G{3wL*Dz;yW~zAA5349i{lF zWgtF2R)xGy`;k$o{3urd9hBL_Y;)-LrT8dERj}x29vYatjsu~_PZv}5KLWu?XM4E(#F?dSt0ZzI4+g|TJIO=gr#;> z7K8Bxa99i6^NC zml_zCL{JGc7_*E**6BwMyeyz2%{)5u3_ojFa%q$Ejq0R>;g_uLLNWD`DK_#HcLi6acBP*55XGp`NDLyG^o@v+P}4S} z#HrIfMp3$JPPw|# zz~*w~$N^Y}QH#XmY3kHtI289O_wRsr%Z(^YsfpRi<{>8UbL@ohY?IIZ#s`kIT)>Fl zX3)0IbrmWd>r5CoH#z1Tou~}@ZpNA3Jq@$DsG!ixpOhKM1cnR(u%zlbO^FHH0{HeR zUD&(3gR0XSg^G=~>S)a=FR$y0mTGr=rWsY|HXG?Hvk^?i>5BrgR$s;>S?))n$P(+`GaZ{kcbd{pO5!Rpu~Y{WMVT``iY zPYxW2`jz=D8^ZFcLKsRi19U8~DI-AWx=Rp`isl=Qc9-nq-{xv730(b4)X78^_?1zs z%>b7`NA7QeqZ+{>Nw6F7e=}*|=RaGVp1;lR4dJmve7&E9I!TnyLE6F&reZ{}O{0%D zYWiOgns%|wN>$7y#3TnS%yemR=>64Fn%>7Q`GFZi_l^qztYi1(4Yx0S|G`5+iH`XW zZ6wBmxH$c78qjkANR2KUaV&uJQ}C3f0PpH?AyC)Iuc&R6$kt{2EECf9KQIU-*@gN zvyf|VEEP_jgrUNi2ehKL4hRq@caiTTxz-(GdJGeXGOb7(YT3kY9+`ejDSU$Ike23g zoaq~lWz_%31TR(%cq3YRd&?R~3v2i_d zmgqlQK9{+v8I0qH|HIAf!u<0|J;Xpp_F=5?nzy)EILCS|8-_~7_i4rM!ZJCCf)Ff_ zvOndYowy%dd>(cx1#b&N{-s3MAAgEe4Zpck)M@V#V9L9y3OSNa26JwTY(Z?B!g=--JfJm$j8zfEGXx~U?v8JJh_We|5bA0N_ z4E@`ao`0S2G!dNJ3wefN&-yH;;E>MUOT7!Bor)*& z_N0~lBxz4Lk*FqnkA=%k)yi=gE;!4l<5;|2=)o~`q@`LxJw5v8t~q)gaO7vwix#Z( ztpi60tbKouCbjvoP5|;|S6J_r;QpE6*kL$ni7p6kNl$Y%14F}l?GY4L{}G9B37E(} zVjctv@Xg3B@(q~XyO{9}c+1v`xT4R!8Atg;qyZfHoVkw$t(gf`F*B!OM0~YT>L03x z&0m2QPL`X4xoy)uo!zlJLn1xmvRvk^gOPSadizc$D)eq3YBNMY@|e+$92u270Bm(e zO1PYmO;swrUkV2fCcGHHi#$p{=I2I(3*XB}wfArm15kE@Z4rcyTpBl#BavW*57`#R z?K0gtq>teUrK8L#=A8^E)gi7iC5HU+#j)W5m@~DyY(!58y&uc#O3+g&tKE42mT!nI z-$QpK5BmOj%afCKDk)zWgpTI#e|TH7G;~80Axc93(S5qWSHAn4cdq{^4Oo|xGarMF z@+SxZ-~$kOu{A`}I(mkew{mM~0mO9RM?)V%Q<3;oh4}!w2Ib);OLe>allIzJ0)Lf~MTAmQ#FZVNz-qsV zETvGmvymfvJ%BuMeH^` z5oh%z6JEy>06z$k&}T0I)iN=pe2;CSJosdpyIFKdwQ$4QHwYiub(?7W@`aa~ zG3~-csI!%3T6Z&nYo3UMyTHsy^LLvZ{!AJ+ID2imj>Xm0>g9y3Kr3bmx;uk249AsU zQu0XiOghAvT)U+Bnz$rF#MX6XK3($p!TXS1;Xpw%5YR{5SzC#&b6juKm1O+6^>uReZt5_3wh_c=W%T6)B(`9*8>q>Ug~4#- z1iHHI6oJ->b>K@P%&cI9Q)JZA*B4I4=Hbz`?`#2@-*1-a(8p>4uoZw;L(`hjmun1& zwNz*(8XV00w;;0&apq5E3Q=MP+)_$|K{p%Vyuc|2FH_kP`-nF{0vggy&v61Wv(zqP zis)($0!r#GJ1CWom6T|FHd*M$vk7s+fHTGN{vJ+iVQ;V~RVw#Qo#YgOA$fdG&Iy2J zVjI~9g%1z=*?HeOv8$cvsa|>7rz*Hhx^02^WdJG?S3K+!`cm8t>8% z!pFr6+^`m2pPqsZWDP2?D!sU!KCBC1Xmu&m2DbCHG`?dm=G-iX+7S?HMhb7Q%`@fq z(yx;eZcr)x>Zsw=@mWQ1kLX0g9j&IzD<3+i4RL0fPzLGrcJa!gj}{Ca`7bNEUU%VD z020czm%6a++IraCKe$WJ6Jk#?mzPh}x3SZb=9D$A%%mOcU{{@l$i>*$ngM(;0)ua&RG?nt8dH zzI@6-I}<1>!C#UtS)T7$@jhhrg)3E^wNt69_z1TTS?%M^g?4w6EJGc_s{d@`L9dqs ziL!%vgpch}jNZmHTH}Cq;e_}E5<1)|?E#(0MoPJKJ#*AGKOdxh9@2G9opv`+g+K2N zDZ#>V1tn4&q4(4)2|jx5EQJq9SDd9d4s=0j{95RbAT7M?@n~4-O4Tkq+xg>M7MTMy zLogZ99;mwn=}ZKE146|b4bIphYAQfGIi$apH+Toh8*ia*VvGa_8?3O=G%2B2=~EL8 z6d_tTz<|HMNW>aL<3gQflWq933-+9_%^E_#!BPSQZxltZ=An$RHLbZPcd^sz<_k%x z3egk#yKlUXqMia^xkvy(Sx<97U7KWtK$L4m@X+#{MS7fE#f#kSdVB--W2fPE4yE}V zh3#3#z9KZBI^-WC{w4qy*cEk3pddYn@TS2XF}rugk=CWfy4|kPL1*gRP|Ard9z-x$ zr`il~%BjNe zGfIP>udqfRZ%>5X2=vol#`-_gBKMPJ=PQ>bl!)^3Bw)L`&6~VTHrDCV@Iz-6{*rS( z#v0*X8B3aa1ALsL>tO_jBits&V{N-nQu?w$`SkfW6`V%5mb&`U8h%Q~$`xK$#0q&v^dI4Q9qi9NdIu!;O)N>rWKZ6YzUhvXfjC z-8sh#1TQT*9%}Q0`WO_0^OrRQOT|BBsV*0^yp;n+xfM!=JR^h;CB!x}>i0$go#Ab?rUV_Pu}ebgznAa}=bm=&kC3s>g52sU%Stzf z9NFhqyE<&^X12CpR+M%ZbH?glQ0$BSU{!%7h%S^ns2LPM_o_pAulrJ!5z51298)mL z$k|&_S!%kocQ=LwLGVtCMKzOu(5C1E-N6^KOwtiGA>)Ca2ml+U;P#&hcdS@a`I>p) zE&g9hbmX_?()3H>0g&YWhuJSOBT->%6+yV+Hbh9+Pqh42tn2X!KY!v);tm<0iI1K9 zFfO)ml18D39iLR@xa%>P4fcYe_Bz*32bMazb@L$@ztbV3KEydY-)73b-}-y9ykl~5 zFEh4Ws&rdEuo{?lVcH}iPSP1ay3TYqg=x6t66lrpPu|QI=GA;Rdnbjx?y;yR|?e;;ItRlm9m;0;mNX!J-5) zXTUZ4;*x0O`XED=)1~dbU~5{erxfsXf1BO*(uGMtcEZc2U)nM`D-WK{;t*UIQQ9Ft z%Mz7)GI6>7%ZEOpy^5gkIMb&qx@}HQihSZ_SPAK&JKu|^J;m#KA~ztTq`zX^M{)~f zchizO@Lj6xvFqpZ^6L)%DhM_1b8KX$SG!ZX&fwI1{{s}gdRi@sn`JY$p9D*ZOvkouf+osg>;V$8eTd|$vq}J~=Z=q9qoxQ{6lkqhCRTw`|{NPOk_o3*(${1ROa-rl+;+l-S=^GI}3}j_pUIBrYr?Q{3 z7VX$^-k%pGAfE+zR$X(v9bwS&7HejS^4u-dn7!I+Dn#?)Uarx+Oi9s&I%=hNkT-7X z3Xo@RZ&J>4LC$k9y8D#&YG&EgMkk8g{c@rIc{nPwtbnG{bBSPJC;8m@=QxD`h8Dts zA#?qy+su=;F&eNC>DD(P;skJdqbc`;g`vx(-XUS#7E9vj=!~~1T60acNE;A4A`7_< zX|2p71~)sn@1X$`j<=?0W(SsGY>l@U!YR2NYrRJW;D?0vpO+O5pqw6)B`P6q5U*oB z^g%@6w+$g_cA>|z)UKs-0}FAg&-xT>ISH({IoGTqrdBoc47#V*WY{7e^(i3wn5>bT z{0^+WxmlRw{M6_B=O3)uUx_st6LS6Hx^6Ist32Czw08VV%PVO^LGf;PD5N#+D z%o-K7QJ0PgcmiLfq1-XxQy)jTQM`>mX*Oikt}JSv8hiK!>XG2R!-%gv3`iFt4g9Rb z&CD#22s4nl$Np`tqBH$!@ae<9LgP@$ng0Vu3WL!<^@?vh>r48(i@;?%QPP~4{>e^> zHKB}n8g0jI&huf2YR4eo?M2(%wyD1qixV(RL4vTYtklVT1GriuS1kmSzWXM`V3~R6 zqp>{8$pHLsU*2~nM?MzJ(*^=lUw%|o=)du$C9IZ}X;5(y@`JQ3Q!qCrbS2^> zYN`K#9Hi8+x1I@Ly8EqE7hC0w3O8m%ef%Fe?m-6OkpD59~I#Fa65m@lBL z85Fpa5j}=pp7MA@7&_wgNEUDWyemC=k?O`isR#lJ&#ujh(N4hK(0<_VJcUACK((u0 z-$i71@LD6OHt&_rZmI3r=m5#tJg&i@8M3Qk7U%Tqy@qZ1kd5Kfqka*Nd;{&K)g@GE z{q&?SwRHMXQVCfTf!?E9<0wb%?gde<5D{N*llbVLj0~pA@G6DTMZ%ZLW+IGaXxHR@ zA8}s+9=1EPX&qvA71n+7@@=+Fi)czHz&zL$+Qsg|3bQsr)zH~HR#L-%#+(aCL1drX zpCaD)PF}5+2NJ9)rMTg83ryt+7V~E?9o)s31y%XWbL)Y_qF1N@=(>~m?VJyu!Uwqn z3No=rI%#{L{H~~iFm|7r)3xj*Xu!n!2oM4!H8cuvhgZmL1JAhV z{uOO%&V}1A{a$yW=gXc?XhpiEkL0ZBkRKKO%=9ecEp*Pt`&S3#2J78p+E`)bv)rKu z{Nhv3l$-tdCg$NG2y~&5)KlqLAN^Yp)No!trc1hW0v|^WW*R_UF4mk|&_=Be<(6C} zl6Yl&{zuDhJ>$|?mPoSTE16SaO07mLs>nj;>*qv>7Ge$HnBid6S$`OxU?mp4;fnPy zo+^v6Q*k+sf1tLT9wG*s1QvQuh1C0%Mg12zu9^b1ebi^dNru(Ul~4wGa{5oTAHYcp zQBvrUQ#NX5!6j)ESaPq|Qjw=Sb0+CM_LMm5y!calnw5&_3_ul?{;%8O>SIMBBCZwJ zwJa{O8h`9FGYnXTdVL$2^+TNfQw5FLRc9;8=LQ}(mFu~Eld%Um(Lzpd%`+@9q`f+lfPcL&{j5(e%}8@oKXmTzr*h z&oJDuU*eJOI>npDQ8h!-z$_Pl6~a8q)}3%F2pa_RSBXYJ(TnQv3Z*)a#ygFUrz;2R z`_%nDMAJUt(}ULE=14w-n9Vu~QWAlYkcwry5r&Jn*_tytYz;TIzQup^f}Jg@4Y&^0 zhgRqe>s;EIsMa2Wq4*>WfCP%|Wup?+L~~@WZ0wiQ_`JZ>i*fl#;)#lkC`GVGW2`OL zGj0nMQtGcmSL#-(>XXF}n@x9pv0ZwI7-a`8Fn(EO$t(YZb$7MXKO|pS&MG}0P#1~!J&_h zb)ks6m+cW^cRedJj*^-4l#^P+Eu&&wEoy^=&DO64B_tl_e?f}67E#ke?@)%2adr2s z#Xn>d{QoIzbVVP~OqXLSZX*`+JE$BKdF>E%sMVSUG-YX zY4W*nlIy{2g_%;x8CV?Mfsb&RVluB8utx!wQrjz|yUu!&-FI(eDszjoW7gbHo*z8h z+ZEX_^L_zgXor_0{$fu7Q%IJm0V0fHyWwYZ4I@GJPQU%oxp_cy7jLLetFjD3cH(Wh zI5)oy&Njrv+cvxVG2v$4LQC_hU4cOY=O#1GLH0Y1c0W0Hz^^&Nw=6`?%uA^<4KI~; z9AysoWJ~Jjmk#??eq?x)payk3ao=!l`dO&`1S8w_(h6Ws2PUsH;UX@I9$u#tgwsHh zCkHoR)h<{78mN}UbKI;3G6=|thFP#{&Q@>}@@jIHcDByFi7gW2Wug>UY;xYRZ*~u< zTD}2%+coX6UFbC>cz*BUj1WX9ngEW~89FQYC@R<0^0{?obp)XG&)96NH=7k$-b4j* zO^ip%%pyg`}!pO9z zlJO-;Yqc=fj7ps8KDsINjAN$TpΜ?Po+D-sE8ASeuK!eMx`nzB9BN{nhuzpQNAM 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

sd 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
  • ^JUAusJ5Jd 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∋wyNVPuklyTyF}tVI|kZdVSnL~*|KYa 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 Qu{KgAzTEv7?JK4`NRY=4x&QzG literal 0 HcmV?d00001 diff --git a/MikroNUC/20260519/20260519032001-Config.rsc b/MikroNUC/20260519/20260519032001-Config.rsc new file mode 100644 index 0000000..21ffb47 --- /dev/null +++ b/MikroNUC/20260519/20260519032001-Config.rsc @@ -0,0 +1,4790 @@ +# 2026-05-19 03:20:01 by RouterOS 7.22.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=Bridge-DOC +add name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no name=ether2 +/interface veth +add address=172.18.20.6/30 container-mac-address=00:00:00:00:00:00 dhcp=no \ + gateway=172.18.20.5 gateway6="" name=docker-xray-vless-veth +add address=10.10.10.10/24 container-mac-address=5C:26:FE:05:6F:12 dhcp=no \ + gateway=10.10.10.1 gateway6="" mac-address=5C:26:FE:05:6F:11 name=veth1 +/caps-man datapath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=xs-DataPath +add bridge=Bridge-LAN client-to-client-forwarding=yes local-forwarding=yes \ + name=DataPath +/caps-man security +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=xs-Sec +add authentication-types=wpa2-psk encryption=aes-ccm group-encryption=aes-ccm \ + group-key-update=30m name=WPA2 +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/disk +add slot=tmpfs tmpfs-max-size=715827882 type=tmpfs +/interface list +add include=dynamic,static name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n \r\ + \n:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\r\ + \n#\r\ + \n#root.mnuc.backuper\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n#:local FetchFile AM-DOHCert.rsc\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\r\ + \n:global MkDir;\r\ + \n\r\ + \n:local FetchFile Binary.backup\r\ + \n:local localDir \"[usb1]/scripts/\";\r\ + \n\r\ + \n\$MkDir \$localDir;\r\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :local IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$Name 0 1 ] = \"\\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);}\r\ + \n}\r\ + \n\r\ + \n:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/app settings +set auto-update=yes disk=sata1 lan-bridge=Bridge-LAN registry-mirrors="https:/\ + /reg.vados.ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=Bridge-LAN +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store=fetch crl-store=system +/container config +set layer-dir=/sata1 registry-url=https://reg.vados.ru tmpdir=/ramstorage \ + username=amster-dev +/container envs +add key=ENV list=carkeeperbot_envs value=/root/.ashrc +add key=PATH list=carkeeperbot_envs value=\ + /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +add key=PORT list=carkeeperbot_envs value="\${SSH_PORT}" +add key=SSH_PORT list=carkeeperbot_envs value=8222 +/container mounts +add dst=/app list=carkeeper_app src=/sata1/carkeeper/app +add dst=/configs list=carkeeper_configs src=/sata1/carkeeper/configs +add dst=/root/.ashrc list=carkeeper_configs/.profile src=\ + /sata1/carkeeper/configs/.profile +add dst=/etc/php82/php.ini list=carkeeper_configs/php.ini src=\ + /sata1/carkeeper/configs/php.ini +add dst=/etc/ssh/sshd_config list=carkeeper_configs/sshd_config src=\ + /sata1/carkeeper/configs/sshd_config +add dst=/scripts list=carkeeper_scripts src=/sata1/carkeeper/scripts +add dst=/var/sync list=carkeeper_sync src=/sata1/carkeeper/sync +add dst=/var/tmp list=carkeeper_tmp src=/sata1/carkeeper/tmp +/interface bridge port +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-DOC interface=veth1 +add bridge=Bridge-LAN interface=LAN +add bridge=Bridge-LAN interface=dynamic +/ipv6 settings +set disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=LAN internet-interface-list=LAN lan-interface-list=\ + LAN wan-interface-list=LAN +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/ip address +add address=10.30.30.10/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.10.10.1/24 disabled=yes interface=Bridge-DOC network=\ + 10.10.10.0 +add address=172.18.20.5/30 disabled=yes interface=docker-xray-vless-veth \ + network=172.18.20.4 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=Bridge-LAN \ + lease-script=lease-script lease-time=10m name=nucDHCP server-address=\ + 10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=10.30.30.81 verify-doh-cert=yes +/ip firewall filter +add action=accept chain=input +add action=accept chain=output +add action=accept chain=forward comment="Comment of the rule" disabled=yes +/ip firewall mangle +# docker-xray-vless-veth not ready +add action=change-mss chain=forward new-mss=1360 out-interface=\ + docker-xray-vless-veth protocol=tcp tcp-flags=syn tcp-mss=1420-65535 +/ip firewall nat +# docker-xray-vless-veth not ready +add action=masquerade chain=srcnat out-interface=docker-xray-vless-veth +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add disabled=no dst-address=0.0.0.0/0 gateway=10.30.30.81 routing-table=main +/ip service +set ftp disabled=yes +set www disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api disabled=yes +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both password-authentication=no \ + publickey-authentication-options=verify-required strong-crypto=yes +/ip upnp +set allow-disable-external-interface=yes enabled=yes +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" interval=30s name=mod/AM-TG-Bot on-event=\ + "/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-05-14 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool netwatch +add disabled=yes down-script=\ + ":local msg \"Host MikroYellow is DOWN\";\r\ + \n\$TGSendMessage \$msg;" host=10.30.30.86 http-codes="" interval=10s \ + test-script="" type=simple up-script=\ + ":global TGSendMessage;\r\ + \n\$TGSendMessage \"Host MikroYellow is UP\";" +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260519/20260519032001-Diff-Config.rsc b/MikroNUC/history/20260519/20260519032001-Diff-Config.rsc new file mode 100644 index 0000000..40ddfb7 --- /dev/null +++ b/MikroNUC/history/20260519/20260519032001-Diff-Config.rsc @@ -0,0 +1,8 @@ +843c843 +< \n:global CommitId \"main/659/af48ca83\";\r\ +--- +> \n:global CommitId \"main/657/b0bd77b1\";\r\ +846c846 +< r: root, in 13:30:03 18.05.2026.\";\r\ +--- +> r: root, in 14:15:02 15.05.2026.\";\r\ -- 2.52.0