From b5de48388f2bad2b7231c2359d3155cf6181556a Mon Sep 17 00:00:00 2001 From: vados-dev Date: Wed, 1 Jul 2026 03:40:03 +0300 Subject: [PATCH] Backup for MikroNUC created successfully at Jul 01 03:40:03. --- .../20260701/20260701034001-Binary.backup | Bin 0 -> 380189 bytes MikroNUC/20260701/20260701034001-Config.rsc | 5333 +++++++++++++++++ .../20260701/20260701034001-Diff-Config.rsc | 122 + 3 files changed, 5455 insertions(+) create mode 100644 MikroNUC/20260701/20260701034001-Binary.backup create mode 100644 MikroNUC/20260701/20260701034001-Config.rsc create mode 100644 MikroNUC/history/20260701/20260701034001-Diff-Config.rsc diff --git a/MikroNUC/20260701/20260701034001-Binary.backup b/MikroNUC/20260701/20260701034001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..181e06202e7ae6dec6f40c9cd53eda5e8d749b3b GIT binary patch literal 380189 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%0AkQ2mi@A70uIZNh}6aq&-g) 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%0A=&G9!Phi^8P()Hn2w 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 z zYKyd8*Bi@${B!fOnpiq8+1FbFAzP7EhIfTfCpF-a1}BH)|IKR}(UG#`9R z*@zGinC1X7UH!ANfu=dj2B-q>pZNCC6O#Fr#3=48YvAUZB$r6i#Vrz;$zqUEFW&1%k2WzStb**M zdo$1zUs}6T`UDJB$X1~hi`6zzpP%_%tJH{556%p!@0_Fiqr-i!RGe6h9TZWrO^*fL zRMll%?kduj;(&y*@S&wj#HO%V-{cXo8DIj=L|I0okO#TbYajkfD~_GdKsizcj6lep zSHbXXSm`aVdh0FnYZgwopj1g?8g-*h=$_h?`(9;c1f7`^*eYsvxK(z$k*YCg-&9)M zjtWEbcl5l0L2!snpt1fBAZcOx8hYja76ydgqGXh>Sd%u=y&hvzh^?+OvZR*2q zLtqSH_R%{RqOhAxg|ZJ{zhJcnRRZK$eFr3JH}1Wu4wto_150WkX@JmmXsUUa(SHJs zYbTH43(7Wej^)FvBMno{de1M#~x zWDpNdUMeG|&YRT$4SpJ$@=99>GGiEy%e%|CDga38?wQA;_xLBRxOhGy zEM`T^dN(2PWv7S*8?7Koo2mfW~KKvETGV zi;s6%y44E-&yFco>Wg6Y+hS!eud7&^*1MVUr_^4KD%NED~Z(u$rTlr0y5 z56U!Q0E2QwkaU*pn7$oWEIGf(FjQYc`#?N}Na~wsc_8HDK&O+LjNW?1n-1$qzkKz95NlF0C8)}U zL!Y9^prEr@m+iFr9#s=7K_}FD_q(cRJ%08&hqy4wtEbEN@^!X8dfpqm{gb)z9pSZc zW0OAO3&muekzf zv%A{^y2lJ_jFj92I~=E7cgqpmA(*-y>j1KEm#U~OrZcw{xXQezn8FCDrlk!MFs4wKBz|oB8eNJZhp5`|#-2sE!FNOCKj9)oO7X z=C)hd&+-v(BgQZplB4ynZT#@lBTkl+=rf@PXQuDmj>TM#pk^)uR6;bjCmwgkj7mSIyf3z}=lQBRn#uB`IbTOhZe{Ad0tYFYv z?)lUlkY)7d+*Hi-Y{T2<6WKmg}Rg(FTnJ>cpQHiY8_8 zMOtun9ll{>xGgkpiXUDD_}VWxMj4%D=VM>`G*cL~CIY=Et@5&|bwiw{8^oPW2rm$$ z5sC5X@m>&&gNbxxM;Pth_*?NB^jHZq`m z-JM*!Ml>IRZ-mh@)>7>K+J7EFMH#S`3U=14Q`{Gmng!iut%z~VnlD`6tPffZWj0sg zLk;W!mwuBZ#9M~SH7Wg*_<^7_C)M3($S!$uri3U{=l5fxo$(%lP9@vbS?$oV13m#V zKc$z6UZtDMR@qJ(JjwN{I@ErrEeL986uVeM#T%wR%$#g0=km&)J*5CPRl+iM$}U8I zDEYM|2X_HKdKSWW?F=^2>cShCNeO{7-Gf*_e+s_JSTmA&o=8CYroWzjRwE4oUDAs) zfd31Yp(fxVycKi$7qQ{D8PI+F0O_?nkYAufdoLZ;ybOT)5d`AuoM)j9qq?P>-sP(tADCrjH{0i)B6p&KQSgg&~JR#T`A3+>bAR99O?y!b|w98f* z@qiqDvs;P!iKnv40HOe$&pltP7sH7Bb|E(0H%=D)`JVq3L3!J4y|*+L|Qvxr)MufADNtS2!+l zR_pe79)b#6*I^e=`Y@y`l}1B&25UUA@x2OGejHJMe(ma~ zzYYFqhW5|GGb0K#e+pU&65+`4I|QX?I~2MmdT~xop6Lv;#B_kLVT+E?LdZDDnYqM> zhaciMDCc476T(+BakjW)*WUh>4g4_wMR|I0?p*8ot7qh2h|@r}-h~WKK+O5`GTA`b z(ny!QYMR&8;1A7;KPi{7>wA&Qj9pK{Bzs{IXs%kkBAN;esK?*{i&0KiAzXQ@R;$2n zRH%3G6Fi{dlPy)NJ| zf%~xan=ijX!HnE)EZ z(3*K*zdb__{2y+H+~K|&rk#=J!ZnzHDKY2M^;CaYh*O>Muh-DYGC9RVHqzP~x;!b< z_mZfsJq^(~1g8%!ku$0{b68HfEaqhFE)&p{6Qzp$aGF~=f-ftO3rK#vxd=8|cceC& zgUzKR+plVH4DojX(8fIxA7%2&bB*pxx7(KMgR+^qh?zL|j9e)#PFB(oG!{``VB`D0 z0?_q@7fpLQ7HoCJl}D2j6V7m!zTSvLB!2Xm&gI2(yBL>zxLe`PaWggGlY>4uGyO3C zerz;r>U!--!7nk6|98%QY*V&g+#-qTS7^PMz*JJ4@T;2WyJNHp`KL%`g+9Z7munKL>(@XPL~%Mr(7Z8hz7E!qk}GCOWRIZ~@@ zU0O)RldYLhY4UO6*hesC;PmKE{oh;KIMF`1BkU~kANM5xT4&Up#Y3XK5K}~kzR&!i zgE6^tYN_1ZdW^m&s;&AgZ857EINTCRpM>Sz7fol+Br4*#_R7k@imxGw7UdZxnnx-S z)ir+u@P}6Dh9ZIgR?-@+TCclU^zw(&rh)RtK+l5Vb&Zx`El0iG5^%Sq=ZUd8)A)Iz z4ka(;^v;4hbsRAzg^MDEg;p2Uz$nPq`oW}i1I(>SoylsO-nNld%t4cs zcj(@MMMxdc85&7JSv)w?j|4bgZVBR-C=oO$JdZg=7L~McxYz)5k0jB#1^chBrqla? zlzym)SL0up5_qk*3txtv83{HCMacWyPl{ff-*xQ^lQf}K!|^f)i6aEU5YAEA*mRq? zsMT{Oa+ErSKXStN3Ec;jX#M z^;Ixia{Yz`U}p506C5X@wmVF&9S&6RCI45P&@`2;GO4L>>312(HX zV*!uXgA*v5ph>g?nh})kppqm>?619~OIl}`3BPX6v|CQ>T)G%kzKczEzM<385BwZcbe3 zoDe2+5m2)LWjMKt5^S&(RLqE2f}>hnP`X(C-b~It=Y#Pl7Q!urZxo=U^(O2bz-z}R zQ^p7HjbQ+;XQ6hdeKWJbYy?h5H2&O~2R;rPUno!qSMl(JdNhVW449f9QZY+(_Khc9 z7O=!Jr3fsQVVLhaPjh;pPGai8t|fcrs-9QbE4W)v5WmdRAqDq&N>qyhF6b4>{kaOxx?jR6{hr^XWD2f?L%o^r9XF_af{*M z^Q*3h)6yY}%rS_lk>wlc6SRAqyVrpI5h9t4J^Qz=-`X*-J-}38AQ+1>|n5%SW%P=e{#E zi1CgwTWEO&-y#>Q3SY28Dlf7+#c$LYU5G@NZYaCKpyqSb~noMgMyjOOY|~v;z7y;ozVYVD@0Uo1RT4UG z6AKoG$Iu`ygL2Mls61dcaj-VRUdV4ExCp1);K%j&cB*S?nNiDVixQO$fLeZr`sr@?f?v%B2mOYAy34{_?G7A-WCcyY2*|}%41QG&# z0Z-H1IZ*|lkN;52{LMRGbL;a|idYgnHxDvj=l-=YA9cU2J>!nw6SN81%0PXXXhAjK z7#js&x$~XOyJ%7q)s#9>C^{y!E#aC{9s8DD3`Qcw<{4o5k=-yTmR?JJxy1xhX zU;#10nBOu^xR>0O6ZD(;tAkv|M~7xio_{-7M_=qrJO<0TPDvD^9$c?spX_vbC5euI zu>H3rJJ>)ZWGX$H89^1VvDWUq3Sd7lAdt1$l$F+SU7E$9=&4fqlOa?;C^+`HiU|gy_=~{fwA+jiJB`eJRpkV2 zP{GK}AG5x-mi7hx&O584K7dEcrRWCvr0jnAgdNxmF-^VkJJwdVuVXBfH&v$d-^!nx z5}yz7#*)3ryb>2kV#1!+yZ4BPE&z$D&^2MOLrC93p$XszX*_*72NCe?21;?PH|$#vvd+8-+%>(@bQ;lDD1tN38dM26G;aI zHrk7t^}ckLu|^;iQd$JRGt(D=Vg#a75VMUR-iKQEP6GY>u**=FR_n5>9^yJtOCPv8 z!?%TUEbY@qc*vU5gDYf|n>77bOd&c-8!KZ8<`yB| z!~Z5xAgNGn8aLmNcl*m$X1%IsBnXd}3P12Z?{a32xR|D)MKcyylE}a@c zXYAYRS;UezLqfTb*a6h5PWY2b_~I#Z-J&c$G?mqR(Gf}owuP-eTq;%Wt^mAR)wNtQ z$O;<3PnZ`rbZkwzMoRcDRo=p`Ud#`h1ZBS!&1M!ZGwsgm2##lkL#<5J*80?Q3qTK6{EZ>~MaBF-*ht$G5 zV26V{Jaz#i6hNprtpzN(#|n2To*7wvWEXuDiv7hC1;@M+aeX7{eGTF3KQjB~szbPw zt=JTdu&V%CpbO=9?BD(#nDhmzy#`kbhi4PY2{AR=-fdkc7~uJ*()erwCnz{kgvz*o z8Cbm8YF6Ioe`adgI#LPM&5&wtgxx0R|ts%|@x<)}{rXo&M zo`3xnr^V3knc09Mt0yjT0?6mv8mpvt8hzFI;{^`6-P^Z6r2Gr_1Rq)tglv5GZrthD zT?^HUgRCj##Q;v1R^Lu1vzejr=Upzs&mhQ`ERZUpGG>x%h;MD-IhnSO$?=x-@Y%I{ z*Uyol=I^7*8nrbI=NP%_JL@m>wG-e(LM)Y9?R?|}M*vmHJ@a)U()@EukMTl-HDdnJ z+Q!n`qLF?#61Dtkab1?BEGYw`G8-x0<|-|@zDku{!O z&8?5iN>X;2K8i!uV3`&F#9}*^Y;FaWX4=)$xr7XSPj9*$d@&|h2pYzDG^-Pt-#JCR=D|bVSA7yn z#7ia8DDYXCJHLb*C!OTd??tUN1U1jQ{7JEIYXc)6D*r2R!Y~<_PDDTz4s4y>I9!`| z2P)fv(6y6rMrBqUpmcFSw=7$sYNul4QD~9sq{|g!{Ci@qzsh!bo0Ty$WB1K5LCW;m zs6`K)fxcsckd*G(1r0+Br>X`8K)|F6kXVct&>3|l);Kl6vIgF|O`^A&=>@M6Ffv|` z`1Ckfj$5b|h68xA@hXl$G{Uraj`-za>PH;XFFgTg$AR$uL7cfjP-v~ww(>3&47D_0 zk2bFQ%Z-(0rOT5GZXYD8Qx(Z=?60BG#?*$4-(MCqA!)HBY^fV~_Vl#`W;o2}DdwfS zY`jNwCA`y57*{=bl48*Cz5yIg>?iS!GL8@8Ro#Pm-cey|r?*UHl_vyx^F}S1PKa;y z?>YeqBwk9m#kVdAmU@S^Ca$t9mp9gnX+noTd-gCRvUX|Wu&7__`|8#Vf<9~zaqV}h zn-vK6I|qm03?4;wnx;LG#j>oS^IDwPeGmb`@QH&r!kz}HsbP5c8kqN$ zA`S@+|NY?d_57uEag2IGEj*_FxubivQY`EHjQgUf?{Nnk5r0`?>x^{ZeRS%yiD$Sc zCiSXu;=~lpiNjh-i}2)SX`F#+VyMGJFF>y{S-lgr@D5X#_LhT6(%i#`RE@XihXZ-z!Pi zI%Mm_82frtLVH%7k(TFtTsZF3>QkV(*2hp0GzL}^w;<%Ee5WJq&Xpt7%7kGZ@!h@m z8L&k)LjiNm&5TTL+(Z7$nPS20C0p_ok?{NK{K{QPuIQJcYhHtI>4ygFL})?WUR28NQXq)Cz_g3U{TG7S)I)E>ig$?k?BpLd)h{T;?5403gP8c- zuPMz6@C$xRVL^$}f9JAqJ=UoSWE56R3X3mF`iX3-R6pW|ifKsxl(|?ngSLs$R}&&_ zvn*Ke_`hrqEJfLPI>MrC>PLds6Tr59JcqOym@G~v z4v2RN)QmzK6S%e=WB|0wR_D_F&|zU)BBBKK)ZWSB#`s17M6?=;+s`@~p#W9;%>++5 zg}7+8T4i^cX4k~${@LW#AW1zVPO1CM4&O{LYEuIk0YVogo%(3M0a?oOkc}NV%K*E^ za(bP#u!iMdqZMLq7+66a{UCPIA=EBIVk5D{I7iVy2VLI z?GWGmuBc~#3AMKf;v%}!o{`{Qd+KKDi6ptQsZZQ4egZs9rG!ERrwC%T0JwNFd>$T9 zNnwiwr29T;O=6crZN+$5A3K^7BqbHp)`4L3v^(=bo8adJOr95eNRajrQnPzzh=GR4 zQ3|~83Hq!;HOzt}UDo|b9hzBvQ3ZsFF#*_GgcTUinALoL3l{Yv*O4E-T_<);Czqk~RK)nca5$m5X?3UzVMib?IIkRkdlI|B^2MI&MH|2WsS6T$t+U0Y`$$La|;-=2;ZnV zO~g&9(_5X)%&KcIeNIOAwE1866ufk~uaffyzAwNx!7*$kGU2_+tXhMAd5x~0dP{`D zDp%x7XB@_-F9T2~$l3uF>wQ0zz=&^d@JDJfbaUEJKkzB(YdB#6#FF4z5|0l_^)brD z*Auk(5PvDdr_Ihhsj-2lrgIl#MX+c-H2{D%kgmNa2CHr&2CMTRTO0c?{o8 z-B&BmSws|SV&gsczEWa|{x)wtf%9KuGyHu#+E=%rn0S)ai$q9hwQZZ7YJgbn1V|dY zd`b{_Ug2ibJfhnIYSY+6!VPb_!G)=27fy8NQr*d;>Rc=g0GkG4X8oKY>0d=jL-LtZJh6c)zN!8v-uJvN_Oe$D0 ztm}kphEZ;4?~1bwf7f!FLjp$n>i!ECUK141ej%f=hM2!C9-_v6;18N|x!!Ds z6jv-o%&_ok0R_`Pu?R(Gng3iu=hBWa63ox&($r zTf_CvW2Hd&dL2_3>xobgU;_6920VJJEyNABL=3G5@dws_JFEQ79b~6WlK}s!9tEVR zfg9}=5}c|w6_(ueyY z0FtLG*JQR=gW^^~0jT5bq`S;Jb1mHXrxvV+Y>ow?$8pZf z+%>z93P+{zQvHuo9YhjH>zfIRB3;T5xqkRzE;P#LgY*ruqFNRTNZyH|H)V zF-w~*>S29F{(LAR`4u4kl1H1z-7J<^h;j4wQr%-tPG~h*_O0?!@a&(HBNe-Uef7`= zjgvl+uFFcMEq3Z=Q$s>wjWU{ij_##pR%6^hJgORRsDeNI;O5uvP`LiD{HH$vvF(oB zLjC-150K<10|th$uz`BgLRHFDUp+{}f9lF=1^Aj)CY~2?Pq?uWL8_H5c2F!^OtIwc zKROm+Es4i#D4XoyZ>)R~R=1L(Ag5o9hcZjEoPqd9^ zmB_-p+q>{HUTii6n;BZc6(hYZ8 z6pU_j#yNL6Dqze&(_^m#On`?c@&tlhO$)<0EBPa9KRdwk_n!oB1wKnbFz7HWJj$ej z|1fSbQK$IGWmafAnNuob6?uB=axNs5j#YO9gH;qWEXzF4;(H57f@Xo}kiMU_J90FtlM{HSRV~WsI&kXsrE1?>PX6u2VzS zVE<%&F)3dUQ&poRZoPnaQEJU9`q{IukJ1l9at)A0 z_%<5UR3V|e#{n@1X>2YVNt-d2v88S3lsJX%zNy+19Awd{{IpJ5%^cOXUkQliV_EW! zHmUw)_ugy8LH}&AlKR7q+?C(9g&Jk;jJcs*Df)aE&w|fMcwyM=UW~NLm6O0Z0L&28 zS6Kw7|5cVnzZP9fy{OZLjGCL% ztSb|)6rqvoIhOu>AwM{zFO$z6pnu*1`F>FNG93to{pOSUf-?;5!2WT!(1$dV8FO_b zsU+2&@&D<^rtR>0c+hj)NWF_{YBAIa`q=$9DyHi#kF%QBs1d?0xv0wnVlm7CtjXUJ-pVmq0l> zdhE>64Xm0_``in;wS)g|YCziY!RkUlb^Pay+Z+lS`P@4^L!lhVEt(k!!MnQe7M38c z%c=v#U}R6d4QWPXjRvI0M^*o}6eoNE%7YOSVykd@~;V!-QQC+SUrO<2wDmz6zn@g)|3?EsVu%W z=dAqkGjh=}*5Es{VQdbkRY}K3TnxmV7@%Bu0%aTdt1TlRVgRT{oOv_s`$jxjS#5z@ z^f{>do7ZciSp+Af9Sm0+76iQf)=i?ouKLwCc&AYR7t)Pfnp;n?j?nu}#p5aKkvx7d zDbctN=C4tLJj=tq@2dbBZXC;Vq-93wdcUPf_2HJYsv{&Dq4+0&sW z5njCxP~D&hLGMPGPN}ZD5Np{oNg(+hVqV3N@23Jtdx{LPh6w}W`SHk3GlcB#$;AxR zt0gFIAwR$n+9{bU#9B{5rDX1{AoU|hC?f=QAk#cmD5OBO+QDcYtwf%{t`}9eaemz| zUpC(`sJxSAX&L&fU}&FB=4$puv5aowa{hq7o7402*fbx_(txK*weyN(uT^S^BHC{T zMl}8LbJ5tJB6UR*DidlH!F^glS}H7k$-~SfhXq{~{?9g*PQ-+8FST#T*<^;DeMJa* zUksQhLz0*(+MPbH0XDt#=5J#yWt5iZ>`L2r9^kq%pk9#nm=yWnqfx}y+ezyD)0IQm z$-*K7QBuXMjdIJ;>Rb)hG%5lA-(4P_>wc6g&wQp#pdZcOXwibye9QY`S=f%lk%Yqn z51uqcWAmmr1agajjA`S(1e*01w(x9nCVxACi#kGB1Um`RiD1dNo*skM`rx8N{YC=_ ze04nbEU2%>zU959q?mDT;RJkwUCm_PP6U!N&!w^5K zJ{@u6@yToqGEc7O_%2a#qGKXrbvv7o(dohCbw#DlCed0W#ee(16#non z4YjRFd4q1V3uag(=EX|}ytdpolTj18S@*fK#}@R`E~Sj2Vky-FymkqvV`UZa$?r&t ztLZ^*@GjRvPbAST#5X8J%5fk4?EwNF zL@If&nlUnaf+z^C#>aPJOtqej?_shs3QSGMt(_dV&~P^_0i9It zO#0n|>xYE-MFw9uQ!b_>sTW%{z>FafJYzb6$e3{rr*Pq9m>6hhx90#VP|R3qDT{Z( za@ZhM-HA_1X&nrj`fX;4?R_pnBT8L9M61@>!Of6tGf2^wVdzRN?W2h-SL?vCIFfhJwvidjW^Pnb!s}xWOLW(k9Y8W-7b4097z(ZN(mg|ts!9H zc>@eNbd@r{uAXAVBmWV{dr((Z$v(K64}JA(jR`Cycw@q3B%yvP4EB4*)&J;(rMkd( za!drCKFK&cr{P@}ydC>KBzIfJBJ5B3d)m~tA{Fae0i-)C9VPbD(Rt#ab8pxHMPs-{ z7hj60gG#4-KG$$N6w8&W9daQ#AYVZ4v)r|=OD?vj29$(utoV!*mG_?+8j`?l6ydb0 z;LjiXBGLWgniiRc!d~)ot?)9^?#|Njq}I?<6-00UI}lY=9U)Kwb}|q`{%jf<7QOJ zQ|UMesNI?=N>}u7X6Sii3g9~uo=td3(vY>5h&WOdg6-THL-`d5Mvm2r`%4iZJA)%( zvu~gM@UD3(zhyJYyBopZxQZ(6MEx*Nsn!ekYeRK+s8;yk&Bv=*9LRdf#$cK{QXI*v zO*)SJWT}AzV?QO{^^ zbvNj?#$QHBuJ)Q4+2WkOyQ%5*aRt%CchANfZbIuNXxo$N3!oXN(JcDF1Z=mB06!y3 zv>!Wz@}~&P$>uNxN7q+ZoHirWH&_p#kG0~5~@1r_Q3dnlp2iK@ACUD^Wwi@t++C5|zFB0b$zK^10r*i1(Y|{dH%0m`CMteq)8-OohnGw20?C>1(%;2xn zLn~QN)r0lm^AZcNl*Fiqz0Y@@PFYSR2q-)X98GDLghDI-4}ED=0(Wee9A8}xa~cPA z>8x^ib_?|Yd$D+HtwznYxxp^lz2A!_AEQ^!FfG!>BZ^3Kxk6q=PRoq-l+H41uA9v z>@B&S1uP$iR&8{$uV%;^xt%_V7?7?&t0&)BPiWpv5V}*j`Wzz z!sD9=ruoK2j=WTA`ook3tNV_izUSa$;Q3o9C9MR)-g!*TXo*D5#njyViNiuWsepR3 zDUSYk5ngbfxRx(J5f}`DTTxL0M}!)Y?HjK1fpOa{zN?8&pn&J_yXYQWmmx)Def_sc zACi8OFXd;%f2)t|D17E-az*kTy?A)8vw}g4c~tr#LC}*H#*d%N`dwC-A(n9Q`Eu+8 z$z+Q3w84^5a8J2)Mw51 zH#<(@EyP!6IwQ^bewfj6?1!a4vML8s@epBuhCbB?@!I7PYiK(zS2E!C{&)v5p|N8y zbZ5uP#|>bYeU;FCM*faLyRw?`TmajHow*Pg9y$S1T;}mwU!8;Z?!}wWk6H+1FI3KS zO;qv@?jwN=hVi(;^P97PIbCN$ITID7r+EMHSslZHkzxI4)3`GtxR9Jm2O~=noe_|&NqwtVJTjr8fzfMV61(f<;!sj*IGXcZX&+JZ z3#!__3i>6A_~b)SKGR0?I2l%{3|BpEbjQy&G6SNC4&5#`ox@sd`(J*eW~J+lH+;Hw zEaetS;YKDnfzZ=IZjE&^f!;aV4Gp`+G%okYS=*ywNEv%lub{dU0zD1#)5)f zT;5`f0gPj>C~w=&FO4ZLupV%9Q@p;VK3l=V{AC~DJf!nORvFoLN&3Mgb};qPjikB3c(+kTS=y@$m&QrGDKXQl zMndyP>Yo;z-_js~X{7Ap=&?=sTtjw)C;_FVIM6Fl7}D%NZ*Uz=VyzT+IE~IH#txYVxr2V$;wwnDz1| z@&2K!Z@bpTZA?Wns-M*8VCloY7ZM~wKNPYetZL}0?D88flt>UJq|unFv$6xG+9g)y4An_wBMAm0^NHU=M3Mii220VTcp^wnG?z4pkP$Ob!Sjq ze7rG90q3FRbRrG#bir?6xcI|-|M4Dy*n?8+NGPUyY3??-U0Kh}cI0+f>x1_CTJZV2 zcA3)(^fDEy6{4QEI4|5Ph*p1Crrb7K0B%einnM4l*;rnljrmhh%hto23C)+pPV^c)FaL3H znc60zSGXEX2zn2cNIp{0z$n`@UHPMe88Lm*^#5eEn~qwvf(Z`69j*0c)#qP+VR!#9 zlqK4FP;2oWE;X;!QU~_fTlmzo+3ALXO;nw=k5E|YI8#B-41QwzlBS zP`ODxoV63wceEQC~6q<9ly#x zWSS^4Fe`VQay4mx0VFFbQ{lRapx-D|Ji)5Ap47^}14^NrK|`{Ekr_c=&9{!(NDD(6h+nIr{d>gXRo*j>?2zeW z-xecUO)zArPE=qb>~H#~UWcxIcnqs+X59$as5}!k##43c_#d7zmUi7{0O6M;{J?SG z(vo4tpK@|N-SS)urL7|Ogvbfi;$!sAWlVF{{e^D5Pl*vG(eT66=?cM2U3n=iP2kPubru+qa&Ct z1cT(6D;&@uAS%vz{o7_&5XZ!QHmSmdSIeTWjVnFM|Do^d(Qz_1-UU=TGJ2SPJ~1MJ z6(WJFCV>sEqSrNwkHJh!4kw83d{`2Swd^QAi_u3q$6m}zHgZhQzOLzWt6A5>b!2A@ zoS9JFdJy`j#9YvncnJaR~Uyh)W2x006a(2 zwG69BmL~KOVKGR;REbYUczIgJ*TZl9ccSMrscBsfkF}a0fn!UWc4?@zeidNB8MqIqBTqVqkRM1EtP(!H=xFTJ`79Z6A zbOk^OrC4{QKF-R{vIVO=UlIOgAu!?SHOY6BVAu88!sPGrUO-EkDbw7EQYf@WMk_^U zDLJWc%(qq7KepZcUF2(E>gT~5{#LlGW7IhO(DTNJWkULEH@RF$lUkO(& zgZlDHKYc|_@yd~iKcw1_yEqxpz3OhbA`|*a<4`FK{qscjFkSNC=7;$>M$V0zwdLjV z3wkT6JN%=J3#(V>!XlHE*0X(^)zOqInVZ~f_K=A0Z{}$W+n{?$#e+8yDX44}wwMcC+v&g(=F?I9fsGUzai~6m#g%nv zq=J?&{QGY*?3GhD9>~T{u%<12s)Y=Wmz9^S+iaLH1}LA@iSAhmaoR7^^cXtR-6kA0Fk>)TbX!X?G_ zCYCND5utENb6P@;NSaj9xJme_dYmtm4-od{N^ZOl++$F&Q_+!m{yN>n#^nO?rSF<+ zl!)`5KcNIk9{F?gAmLtt7`1so&YNP<$hxLQaySGxTJ&C#BjT4Y*bP*0{wlf$=Y`wy zxM;27(UnU5DilUOs0y$A-Y5W;*KQ{D)I{aseP4{?=j$^0TG~5!2(!N?!}vspI550o z@!cBV79*CIoj1n!gMW#l2}!s%n}%g{b$lwLr&Q6=*gYPE*4=Fe?EZ*_xJPYA#=n>G zTom4rg&JkTb@Id#K3_?@(0H)xYrz=(phhYHlW1ynn8wn42MQap z6ri{MvNtMpEKvwIi>g`q$ljY6gWYa*E{*i;B5B`L^QfkWzuBN1KzEqlx&?wZBQZ99!2{`j@o@{hzG~GSJioCG#58ooP)TQzS=x> zkA!S1m3VXL51f;ojnUGfO_p9wV`2|2wMN-*q!KR`U|O(H$E=?V5OfXJn$vho63>g! z7nB~|HG7n+&8~_59`aJ}nz#o$p%Wd>*1?#gBy2#37YCQGvs?XLDYK{ljZ^8KAuuRE zY>&+!5s~(I5N(NW!Ma3H=c$#A{AQbciza+9%$I+_@mFtL^zyW%WTCQH`q5~}np^#_ zRJCpco;6ZuuRO$QKGtO#NO}p3+$w^F=|eQj8G%ibhn36L1Ezn{P;XkT<$oWdjpwef zY3Ga813W)dyr8@DV$(k(-V6n;-zg*pA?h$YM4NzI@M;K-L(<$erXfZXCj+x2rz@^i zn+pz7I7O)ho`pGVL)0utwxY9^9vj4fvWkRq6Kqhx8!>!zF7-_>kjsU^1I@F5$?%>- z(=ld6bSU`5@OO^GWsS}$u*J63FRf+Zk2P%>{(0UGtHRE=*_F&Kpzi1qBoo+^vWs47 zsCD&#FtItcx`H7>tp68VclgpR?{^v}^=1X2(Ye@u$ERm{FxwMq|V_;2Z%8o za)GTQxeNGk9P1jzJ%2CnLU!0sMv*@lVtG}?90-IgdGYW10U3rz>~qZe8Z}0=YkGTm z81R%$>+Z9!GC}o9_C%D_;t-@;Nhb0;h_IcVrcq51KaG%I$G*Ge0 z&BG&GLVhIu?1^javC00VxlE$U)bjWvFgzFkWQ7~b4jy$c(j`-vYEi4Sw~6iK41JVU z7?$L7+1U0rhL<;-+I(!89yxUQolno@Wh zpN6Rq8xps-(|7TaRlUxOCwKNwz^piw&&~^oSPWi! zy|Gd-H4#{;qv1=nEK2*R*ulp#Y5Q~yp)d3UjO5q7g!DBUs50(F zo7e#30d}naVUnp!S(^~s<1jP9*8XhB!X7Cw?V}dc95&McE>ELZL`R@AMiJWVW2bV! zzcvSTN_>}i5h*d;+!?7a8a}QrWgr{rcQql>0~rHWNkIaVX1m6AM{2 zU_;2ZxP{9qplKjTVvWmwG&JG%FfMfLvaT-N`88b;Ov^FkTy4*HYA7H-0 zaKv(VObMeoZ#xu}Tc;uAdCKlsA4npd?;wf{Vf?= z?%H+h6nTjs>E%<9B__KRJsp9W_I!5UjJn8kpv2bdCm;uG2+dU<+sMcEwcGVQI#)oc zZahGRsyEpzY*|+RsN}x zA;|t+rv*?#Nnd@1^%x!NHJ0a*oSa{o^5(9B$b3bxBb3n$m zLr2P^J3rZ?5vjji7kyI_if^H+c4_&c7GDhYKO=8Y8=yC3kEoe55&R?f_6M6&wR%IB zQP2UVa=8lU&N^&o_+9twUpfE8x{qLZW5hq5gSjBCIAO{j6N@H+EbmphWPtl1Gi<%* z{%8+=RY5pBFWH$Ku`P)#vM0_)|DKWPM8X&kd-q0!HO#c|+;#muN9?TYy_P0b6klJZ zncEH6vxs1jLhsnI`H3NW5TN1nL^Rh;S^yX*rCNpgy`E@}Nc$vg>2MC_9O-?Whc0ghmbQfD!2ZHE$k8g95 zgHf}+t@3RXKtSGLFphA-XFKW;{o#6{&CTLbiXPUWk*9@;QT?3QE&XOWSXFzj8!|Ma z{Vg$c;C+u7z^3O2b9+Y)A$!cZ(+bJUmT=LqOLwH8JWSZTd4}_5*{?vary*_MFo4s_ zW&8OJmfd-%1m9jm2sZ8PS8 zgJa36A1~9PjmH-f+ElHTo*S^;UIw@19au8I0kz}U&oOK-@}+>BoGAWtRBx5loJT(mzn&U`R%Ro-c?h$Lk3A3QSe``K zxW@`d({6nIQHC^VgEBA#!+L8Q#b2s?JDgNIApZ`5sBlw-rV9NFp8?gI^2Oq8`1mZw zF2kV^)SYt64t&R12v7Qo?U7*_=>c2#r)1FBBmUtH+NOwN|2HR?GU4{)Pts<`NbuAJ z8F!I+g4)m&UMrY5Vz%$CvAom(%q4`%F!09<#t6I01+}R){=7Q?(_k0Gt#4!!MXH#? zNdqL@YHOP;-2e8X#kX}4E@YPh3EEPun#NlCgns28EWFS2A-2abcGVdiIZlpPz!vdR mslpJhKotqGsz6PvPfGC&A4q3rohdMj<6qC85)`b<94>XY4E8+$ literal 0 HcmV?d00001 diff --git a/MikroNUC/20260701/20260701034001-Config.rsc b/MikroNUC/20260701/20260701034001-Config.rsc new file mode 100644 index 0000000..acd9e6b --- /dev/null +++ b/MikroNUC/20260701/20260701034001-Config.rsc @@ -0,0 +1,5333 @@ +# 2026-07-01 03:40:02 by RouterOS 7.23.1 +# system id = NmJcEM+8XAP +# +/caps-man channel +add band=2ghz-g/n extension-channel=disabled frequency=2422 name=2G-3 \ + reselect-interval=20m save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXX frequency=5660 name=5G-5660 \ + save-selected=yes +add band=5ghz-a/n/ac extension-channel=XXXXXXXX frequency=5160,5200,5280 \ + name=5G-5160-5280 reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5180 name=5G-36 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5200 name=5G-40 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5220 name=5G-44 \ + reselect-interval=30m save-selected=yes +add band=5ghz-n/ac extension-channel=XXXX frequency=5240 name=5G-48 \ + reselect-interval=30m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2442 name=2G-7 \ + reselect-interval=20m save-selected=yes +add band=2ghz-g/n extension-channel=disabled frequency=2462 name=2G-11 \ + reselect-interval=20m save-selected=yes +/interface bridge +add name=BridgeLAN +/interface ethernet +set [ find default-name=ether1 ] disable-running-check=no +/interface veth +add address=172.19.75.210/30 container-mac-address=38:5A:3A:BF:30:5E dhcp=no \ + gateway=172.19.75.209 gateway6="" mac-address=38:5A:3A:BF:30:5D name=\ + veth-awg-VDSina +/interface wireguard +add listen-port=14710 mtu=1420 name=wg-awg-VDSina +/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 +/container +add comment=awg-VDSina envlists=awg-VDSina-env file=awg-proxy-amd64.tar.gz \ + hostname=awg-VDSina interface=veth-awg-VDSina layer-dir=\ + /sata1/docker/layers name=awg-proxy-amd64 root-dir=/disk1/awg-VDSina \ + shm-size=4096.0KiB start-on-boot=yes +/disk +add slot=ram tmpfs-max-size=100000000 type=tmpfs +/interface list +add include=dynamic,static name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroMIC +/iot wiliot servers +set *1 address=mqtt.us-east-2.prod.wiliot.cloud name="Wiliot US East" +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=P1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/routing table +add disabled=no fib name=to-awg +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=test owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#:local ScriptName [ :jobname ];\r\ + \n:local expSrc;\r\ + \n:local FileName;\r\ + \n:local FilePath;\r\ + \n:local DirPath \"tmpfs/\";\r\ + \n:global WaitForFile;\r\ + \n:global IfThenElse;\r\ + \n\r\ + \n:foreach Script in=([ /system/script find where name~\"Amster-GlobalConf\ + *\" ]) do={\r\ + \n:local ScriptVal [ /system/script/get \$Script ];\r\ + \n\r\ + \n:local expName [ (\$ScriptVal->\"name\") ];\r\ + \n#[/system/script get \$expScript name];\r\ + \n:delay 2s;\r\ + \n\r\ + \n:set expSrc [/system/script print where name=\$expName];\r\ + \n/system/script print where name=\$expName;\r\ + \n#[:put [/system/script get \$expScript source]];\r\ + \n:put [\$expSrc];\r\ + \n:delay 2s;\r\ + \n:set FileName \$expName;\r\ + \n:set FilePath (\$DirPath . \$FileName);\r\ + \n\r\ + \n#:log warning \"\\n----------------------\\n\\\$expSrc = \$expSrc\\n____\ + ______________________________\";\r\ + \n:log info \"\\n\\\$FileName = '\$FileName'\";\r\ + \n:log info \"\\n\\\$FilePath = \$FilePath\";\r\ + \n#:log warning {/system/script/get source=[/system/script/get \$expScript\ + \_source];};\r\ + \n\r\ + \n#\$[/system script get [/system script find name=\"\$FileName\"] source]\ + \r\ + \n\r\ + \n#:local gettingScript \"\$FileName\";\r\ + \n#:execute script=\"[[:parse \\\"[:parse { :put (\"\$[/system script get \ + [/system script find name=\$FileName] source]\"); } \\\"]]\"; \\\r\ + \n\r\ + \n#:execute script={:put \"[:parse \\\"[:parse [/system/script get [/syste\ + m/script find name=\$gettingScript] source];\\\"]]\";} \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n:do {\r\ + \n:local fName (\$FilePath . \".rsc\");\r\ + \n#:delay 3s;\r\ + \n#/file add name=\$fName;\r\ + \n:put [:tostr [\$expSrc]];\r\ + \n/file set \$fName contents=[:put [\$expSrc]];\r\ + \n:delay 3s;\r\ + \n\$WaitForFile \$fName;\r\ + \n(\$FilePath . \".rsc\");\r\ + \n#:delay 2s;\r\ + \n\r\ + \n} on-error={\r\ + \n:log error \"\\nERROR \\\$FilePath = \$FilePath\";\r\ + \n}\r\ + \n#\$WaitForFile (\$FilePath . \".rsc\");\r\ + \n#:execute script={ :put [/system/script get [:put \$FileName] source]; }\ + ;\r\ + \n#/system/script export \$Sscript file=\$FilePath;\r\ + \n#/system/script/export [:put [/system/script/get \$expScript source]] fi\ + le=\$FilePath;\r\ + \n#:execute script={ :put [/system/script/get \$expScript source]; } \\\r\ + \n\r\ + \n#:log warning \"\\n\\\$expScript = \$expScript\";\r\ + \n# \\\r\ + \n# file=(\$FilePath . \".rsc\\00\");\r\ + \n#script={:put [/system/script/get \$FileName source];} file=(\$FilePath\ + \_. \".rsc\\00\");\r\ + \n#/system script export \$src file=(\$FilePath . \$FileName);\r\ + \n}\r\ + \n\r\ + \n:log warning \"\\nComplete!\";\r\ + \n\r\ + \n # :execute script={ :put [ /system/script/get Amster-GlobalConfig sou\ + rce ]; } \\\r\ + \n # file=(\$FilePath . \".conf\\00\");\r\ + \n # \$WaitForFile (\$FilePath . \".conf\");\r\ + \n # :onerror Err {\r\ + \n # /tool/fetch upload=yes url=(\$BackupUploadUrl . \"/\" . \$FileName\ + \_. \".conf\") \\\r\ + \n # user=\$BackupUploadUser password=\$BackupUploadPass src-path=(\ + \$FilePath . \".conf\");\r\ + \n # :set ConfigFile [ /file/get (\$FilePath . \".conf\") ];\r\ + \n # :set (\$ConfigFile->\"name\") (\$FileName . \".conf\");\r\ + \n " +add dont-require-permissions=no name=test1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \r\ + \n#:local runningVer [:find [/system/resource/get version] \"(\"];\r\ + \n\r\ + \n:local runningChannel;\r\ + \n:local runningVersion;\r\ + \n:local ParseCustom;\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n \r\ + \n:global runningChannel [\$ParseCustom [/system/resource/get version] \"(\ + \" \")\" 1];\r\ + \n:log warning [\$runningChannel];\r\ + \n:set runningVersion [\$ParseCustom [/system/resource/get version] \" \" \ + \")\" 2];\r\ + \n:log warning [\$runningVersion];\r\ + \n\r\ + \n\r\ + \n\r\ + \n# :if ([:len \$open] = 0) do={\r\ + \n# :log error \"\$SMP Could not extract installed OS channel from vers\ + ion string: `\$runningOsAndChannel`.\";\r\ + \n# :error \"\$SMP error, check logs\";\r\ + \n# }\r\ + \n# :local rest [:pick \$runningOsAndChannel (\$open+1) [:len \$runningOs\ + AndChannel]];\r\ + \n# :local close [:find \$rest \")\"];\r\ + \n# :local channel [:pick \$rest 0 \$close];\r\ + \n# :return \$channel;\r\ + \n#}" +add dont-require-permissions=no name=01-Amster-Init-Script owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# Amster Initial Script\r\ + \n#\r\ + \n#:global GlobalEnvRemove true; /system/script {run Amster-GlobalEnvRemov\ + e; };\r\ + \n#:delay 1s;\r\ + \n:#global ReloadGlobal true; \r\ + \n\r\ + \n:global AmScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global defOwner \"vados\";\r\ + \n:global AmFirstRun;\r\ + \n\r\ + \n:set AmFirstRun do={\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n #:global ParseKeyValueStore;\r\ + \n #:local AmUpdCRLF true;\r\ + \n #:local IfThenElse;\r\ + \n #:set IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1\ + \_] = true) do={:return \$2}; :return \$3}\r\ + \n #/certificate/settings/set builtin-trust-store=fetch;\r\ + \n #/tool/fetch \"\$scriptsUrl/certs/Root-YE.pem\" dst-path=\"root-ye.p\ + em\";\r\ + \n #/certificate/import file-name=\"root-ye.pem\" passphrase=\"\";\r\ + \n # For basic verification we rename the certificate and print it by f\ + ingerprint. Make sure exactly this one certificate (\"Root-YE\") is shown.\ + \r\ + \n #/certificate/set name=\"Root-YE\" [ find where common-name=\"Root Y\ + E\" ];\r\ + \n #/certificate/print proplist=name,fingerprint where fingerprint=\"e1\ + 4ffcad5b0025731006caa43a121a22d8e9700f4fb9cf852f02a708aa5d5666\";\r\ + \n #:log info \"\\nAmScriptsUrl = \$AmScriptsUrl\";\r\ + \n :local Scripts {\r\ + \n \"Amster-GlobalConfig\"\r\ + \n \"Amster-GlobalFunc\";\r\ + \n# \"Amster-SFTP-backup\"\r\ + \n# \"Amster-BkpEmail-and-upd\";\r\ + \n };\r\ + \n# /system/script/set owner=(\$ScriptVal->\"name\") \\\r\ + \n# source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRLF \$S\ + ourceNew ] \$Script;\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n /system/script { run Amster-GlobalConfig; run Amster-GlobalFunc; }\r\ + \n}\r\ + \n:global AmUpdRun;\r\ + \n:set AmUpdRun do={\r\ + \n #:local UpdScript [ :tostr \$1 ];\r\ + \n #:global ParseKeyValueStore;\r\ + \n :global AmScriptsUrl;\r\ + \n :global defOwner;\r\ + \n :local Scripts {\r\ + \n# \"Amster-GlobalConfig\"\r\ + \n# \"Amster-GlobalFunc\"\r\ + \n# \"Amster-GlobalRemove\"\r\ + \n \"Amster-backup-SFTP\"\r\ + \n \"Amster-SFTP-backup\"\r\ + \n \"Amster-BkpEmail-and-upd\"\r\ + \n \"Amster-TG-Bot\"\r\ + \n \"Amster-TG-Notification\";\r\ + \n };\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :put \"updating \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$defOwner source=([ /too\ + l/fetch (\"\$AmScriptsUrl\" . \$Script . \".rsc\") output=user as-value ]-\ + >\"data\");\r\ + \n /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$\ + Script;\r\ + \n };\r\ + \n# /system/script/add name=\$Script owner=\$AmOwner source=([ /tool/fe\ + tch check-certificate=yes-without-crl (\"\$AmScriptsUrl\" . \$Script . \".\ + rsc\") output=user as-value ]->\"data\"); };\r\ + \n}\r\ + \n\r\ + \n\$AmFirstRun;\r\ + \n#\$AmUpdRun;\r\ + \n\r\ + \n#\$setUpdExist;\r\ + \n#:global setUpdExist;\r\ + \n#:global ParseKeyValueStore;\r\ + \n#:set setUpdExist do={\r\ + \n#:do {\r\ + \n#:global ParseKeyValueStore;\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\\r\?\\n#comment=*\" ] do={\r\ + \n# :local ScriptVal [ /system/script/get \$Script ];\r\ + \n# :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"#comment\"\ + ) ];\r\ + \n# :local scriptName (\$ScriptVal->\"name\");\r\ + \n#:log warning (\"\\n\\\$scriptName = \". \$scriptName);\r\ + \n#: log warning (\"\\n\\\$ScriptInfo = \". \$ScriptInfo);\r\ + \n# }\r\ + \n#} on-error={}\r\ + \n#}\r\ + \n#\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run\ + -count;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;\r\ + \n#;(evl / (evl /docommand=;(evl / (evl /foreachcounter=\$Script;do=;(evl \ + / (evl /localname=\$ScriptVal;value=(evl (evl /system/script/getnumber=\$S\ + cript))) (evl /localname=\$ScriptInfo;value=(evl (<%% \$ParseKeyValueStore\ + \_(> \$ParseKeyValueStore);(-> \$ScriptVal comment)))) (evl /localname=\$s\ + criptName) (evl /setname=\$scriptName;value=(-> #\$ScriptVal name)) (evl /\ + log/errormessage=(. \r\ + \n# \$ ScriptInfo = \$ScriptInfo)));in=(evl (evl /system/script/findwhere\ + =\$name;\$owner;\$policy;\$dont-require-permissions;\$last-started;\$run-c\ + ount;\$source;\$invalid;\$comment;\$.id;\$.nextid;\$.dead;\$.about;(~ \$so\ + urce (. ^#!rsc by Vados \r\ + \n# \? \r\ + \n#));5))));on-error=;(evl /)))\r\ + \n" +add dont-require-permissions=no name="Download cAP's Packages" owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# +------------------------------+\r\ + \n# | |\r\ + \n# | Mikrotik RouterOS Scripts |\r\ + \n# | _Download cAP's Packages_ |\r\ + \n# | |\r\ + \n# +------------------------------+\r\ + \n# https://github.com/sebastian13/mikrotik-routeros-scripts\r\ + \n#\r\ + \n\r\ + \n# Set a directory path providing the required space\r\ + \n# Add a microSD card https://wiki.mikrotik.com/wiki/Manual:System/Disks\ + \r\ + \n# or setup a RAM-Disk via '/disk/add type=tmpfs tmpfs-max-size=20M slot=\ + ram'\r\ + \n:local dir \"/tmpfs/capsman-packages\";\r\ + \n\r\ + \n\r\ + \n# Set Package Path if required, set policy to none if using 'upgrade-cap\ + s' script\r\ + \n/interface/wifi/capsman/set package-path=\$dir upgrade-policy=none;\r\ + \n/caps-man/manager/set package-path=\$dir upgrade-policy=none;\r\ + \n#require-same-version;\r\ + \n\r\ + \n:local installed [/system package get value-name=version [find where nam\ + e=\"routeros\"]]\r\ + \n\r\ + \n# Delete old downloads\r\ + \n# /file/remove [ find type=package name~\"capsman*\" ]\r\ + \n\r\ + \n# Starting from RouterOS version 7.13, drivers for older wireless and 60\ + GHz interfaces are\r\ + \n# part of the separate \"wireless\" package. The existing \"wifiwave2\" \ + package has been divided\r\ + \n# into distinct packages: \"wifi-qcom\" and \"wifi-qcom-ac\".\r\ + \n# RouterOS >=7.12 is required to upgrade to 7.13.\r\ + \n# https://forum.mikrotik.com/viewtopic.php\?t=202423\r\ + \n\r\ + \n:foreach architecture in={ \"arm\";\r\ + \n# \"arm64\";\r\ + \n \"x86_64\";\r\ + \n \"mipsbe\"} do={\r\ + \n :foreach package in={ \"routeros\";\r\ + \n# \"wifi-qcom-ac\";\r\ + \n# \"wifi-qcom\";\r\ + \n \"container\";\r\ + \n \"wireless\"} do={ :do {\r\ + \n :put \"\"\r\ + \n :put \"Download \$package \$installed for \$architecture\"\r\ + \n /tool fetch mode=https \\\r\ + \n url=\"https://download.mikrotik.com/routeros/\$installed/\$packa\ + ge-\$installed-\$architecture.npk\" \\\r\ + \n dst-path=\"\$dir/\$package-\$installed-\$architecture.npk\"\r\ + \n } on-error={ :put \"Error downloading the file. On a 404, note t\ + hat the package may not exist for the specified architecture!\" }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :local Script \"mod/AM-Certs-By-Ident\";\r\ + \n \r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetch \ + check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".\ + rsc\") output=user as-value ]->\"data\");\r\ + \n /system/script run \$Script;\r\ + \n :global tmpAddCerts;\r\ + \n :while ([ \$tmpAddCerts ] = true) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n :delay 1s;\r\ + \n :put \"Removing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/729/f42d43ae\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 00:05:03 01.07.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Manager@id_rsa.pub\ + \n:local localDir \"/\";\ + \n\ + \n\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\ + \n" +add dont-require-permissions=yes name=MkTmpfs owner=vados policy=\ + ftp,read,write,policy,test,sniff,sensitive source=\ + ":global MkDir;\r\ + \n\r\ + \n\$MkDir /usb1/tmpfs;" +add dont-require-permissions=no name=CreateContainer owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local contIF \"veth1\";\r\ + \n:local contIP \"10.10.10.10/24\";\r\ + \n:local contGW \"10.10.10.1\";\r\ + \n#/interface/veth/add name=\$contIF address=\$contIP gateway=\$contGW;\r\ + \n:local contBridgeIF \"Bridge-DOC\";\r\ + \n:local contBridgeIP \"10.10.10.1/24\";\r\ + \n/interface/bridge/add name=\$contBridgeIF;\r\ + \n/ip/address/add address=\$contBridgeIP interface=\$contBridgeIF;\r\ + \n/interface/bridge/port/add bridge=\$contBridgeIF interface=\$contIF;\r\ + \n/container/config/set ram-high=768M registry-url=https://registry-1.dock\ + er.io tmpdir=sata1/tmp\r\ + \n" +add dont-require-permissions=no name=carkeeperbot owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/mounts/add list=carkeeper_configs/.profile src=sata1/carkeeper/c\ + onfigs/.profile dst=/root/.ashrc;\r\ + \n/container/mounts/add list=carkeeper_configs/php.ini src=sata1/carkeeper\ + /configs/php.ini dst=/etc/php82/php.ini;\r\ + \n#/container/mounts/add list=carkeeper_configs src=sata1/carkeeper/config\ + s dst=/configs;\r\ + \n/container/mounts/add list=carkeeper_app src=sata1/carkeeper/app dst=/ap\ + p;\r\ + \n/container/mounts/add list=carkeeper_scripts src=sata1/carkeeper/scripts\ + \_dst=/scripts;\r\ + \n/container/mounts/add list=carkeeper_configs/sshd_config src=sata1/carke\ + eper/configs/sshd_config dst=/etc/ssh/sshd_config;\r\ + \n\r\ + \n/container/mounts/add list=carkeeper_tmp src=sata1/carkeeper/tmp dst=/va\ + r/tmp;\r\ + \n/container/mounts/add list=carkeeper_sync src=sata1/carkeeper/sync dst=/\ + var/sync;\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=mod/AM-IPbridge \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Use Telegram to chat with your Router and send commands" \ + dont-require-permissions=no name=mod/AM-TG-Bot owner=mod/AM-TG-Bot \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Bot\r\ + \n# Script comment: Use Telegram to chat with your Router and send command\ + s\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global Identity;\r\ + \n :global TelegramChatActive;\r\ + \n :global TelegramChatGroups;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdsTrusted;\r\ + \n :global TelegramChatOffset;\r\ + \n :global TelegramChatRunTime;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramRandomDelay;\r\ + \n :global TelegramTokenId;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FileExists;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global LogPrintVerbose;\r\ + \n :global MAX;\r\ + \n :global MIN;\r\ + \n :global MkDir;\r\ + \n :global RandomDelay;\r\ + \n :global RmDir;\r\ + \n :global ScriptLock;\r\ + \n :global SendTelegram2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global WaitForFile;\r\ + \n :global WaitFullyConnected;\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$WaitFullyConnected;\r\ + \n\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) \ + do={\r\ + \n /system/scheduler/add start-time=startup interval=30s name=\$ScriptN\ + ame on-event=\"/system/script/run \$ScriptName;\" comment=\"Telegram Chat \ + Bot\";\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramChatOffset ] != \"array\") do={\r\ + \n :set TelegramChatOffset { 0; 0; 0 };\r\ + \n }\r\ + \n :if ([ :typeof \$TelegramRandomDelay ] != \"num\") do={\r\ + \n :set TelegramRandomDelay 0;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Downloading required certificate \ + failed.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n \$RandomDelay \$TelegramRandomDelay;\r\ + \n\r\ + \n :local Data false;\r\ + \n :for I from=1 to=4 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl outpu\ + t=user \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/get\ + Updates\?offset=\" . \\\r\ + \n \$TelegramChatOffset->0 . \"&allowed_updates=%5B%22message%22%\ + 5D\") as-value ]->\"data\");\r\ + \n :set TelegramRandomDelay [ \$MAX 0 (\$TelegramRandomDelay - 1) ]\ + ;\r\ + \n } do={\r\ + \n :if (\$I < 4) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Fetch failed, \" . \$I . \". \ + try: \" . \$Err);\r\ + \n :set TelegramRandomDelay [ \$MIN 15 (\$TelegramRandomDelay + 5\ + ) ];\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed getting updates.\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local UpdateID 0;\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :foreach Update in=(\$JSON->\"result\") do={\r\ + \n :set UpdateID (\$Update->\"update_id\");\r\ + \n \$LogPrintVerbose debug \$ScriptName (\"Update \" . \$UpdateID . \":\ + \_\" . [ :serialize to=json \$Update ]);\r\ + \n\r\ + \n :local Message (\$Update->\"message\");\r\ + \n :local IsAnyReply ([ :typeof (\$Message->\"reply_to_message\") ] = \ + \"array\");\r\ + \n :local IsMyReply (\$TelegramMessageIDs->[ :tostr (\$Message->\"reply\ + _to_message\"->\"message_id\") ]);\r\ + \n :if ((\$IsMyReply = 1 || \$TelegramChatOffset->0 > 0 || \$Uptime > 5\ + m) && \$UpdateID >= \$TelegramChatOffset->2) do={\r\ + \n :local Trusted false;\r\ + \n :local Chat (\$Message->\"chat\");\r\ + \n :local From (\$Message->\"from\");\r\ + \n :local Command (\$Message->\"text\");\r\ + \n :local ThreadId [ \$IfThenElse (\$Message->\"is_topic_message\") (\ + \$Message->\"message_thread_id\") \"\" ];\r\ + \n\r\ + \n :foreach IdsTrusted in=(\$TelegramChatId, \$TelegramChatIdsTrusted\ + ) do={\r\ + \n :if (\$From->\"id\" = \$IdsTrusted || \\\r\ + \n \$From->\"username\" = \$IdsTrusted || \\\r\ + \n \$Chat->\"id\" = \$IdsTrusted) do={\r\ + \n :set Trusted true;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Trusted = true) do={\r\ + \n :local Done false;\r\ + \n :if (\$Command = \"\?\") do={\r\ + \n \$LogPrint info \$ScriptName (\"Sending notice for update \" .\ + \_\$UpdateID . \".\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=([ \$IfThenElse ([ :len (\$From->\"first_name\") ] >\ + \_0) (\"Hello \" . (\$From->\"first_name\") . \"!\\n\\n\") ] . \\\r\ + \n \"Online\" . [ \$IfThenElse \$TelegramChatActive \" (and a\ + ctive!)\" ] . \", awaiting your commands!\") });\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && [ :pick \$Command 0 1 ] = \"!\") do={\r\ + \n :if (\$Command ~ (\"^! *(\" . [ \$EscapeForRegEx \$Identity ] \ + . \"|@\" . \$TelegramChatGroups . \")\\\$\")) do={\r\ + \n :set TelegramChatActive true;\r\ + \n } else={\r\ + \n :set TelegramChatActive false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Now \" . [ \$IfThenElse \$Tele\ + gramChatActive \"active\" \"passive\" ] . \\\r\ + \n \" from update \" . \$UpdateID . \"!\");\r\ + \n :set Done true;\r\ + \n }\r\ + \n :if (\$Done = false && (\$IsMyReply = 1 || (\$IsAnyReply = false\ + \_&& \\\r\ + \n \$TelegramChatActive = true)) && [ :len \$Command ] > 0) do\ + ={\r\ + \n :if ([ \$ValidateSyntax \$Command ] = true) do={\r\ + \n :local State \"\";\r\ + \n :local File (\"tmpfs/telegram-chat/\" . [ \$GetRandom20CharA\ + lNum 6 ]);\r\ + \n :if ([ \$MkDir \"tmpfs/telegram-chat\" ] = false) do={\r\ + \n \$LogPrint error \$ScriptName (\"Failed creating directory\ + !\");\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Running command from update \ + \" . \$UpdateID . \": \" . \$Command);\r\ + \n :execute script=(\":do {\\n\" . \$Command . \"\\n} on-error=\ + { /file/add name=\\\"\" . \$File . \".failed\\\" };\" . \\\r\ + \n \"/file/add name=\\\"\" . \$File . \".done\\\"\") file=(\$\ + File . \"\\00\");\r\ + \n :if ([ \$WaitForFile (\$File . \".done\") [ \$EitherOr \$Tel\ + egramChatRunTime 20s ] ] = false) do={\r\ + \n :set State ([ \$SymbolForNotification \"warning-sign\" ] .\ + \_\"The command did not finish, still running in background.\\n\\n\");\r\ + \n }\r\ + \n :if ([ \$FileExists (\$File . \".failed\") ] = true) do={\r\ + \n :set State ([ \$SymbolForNotification \"cross-mark\" ] . \ + \"The command failed with an error!\\n\\n\");\r\ + \n }\r\ + \n :local Content ([ /file/read chunk-size=32768 file=\$File as\ + -value ]->\"data\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=true; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n \$State . [ \$IfThenElse ([ :len \$Content ] > 0) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"Output:\\n\" .\ + \_\$Content) \\\r\ + \n ([ \$SymbolForNotification \"memo\" ] . \"No output.\") \ + ]) });\r\ + \n \$RmDir \"tmpfs/telegram-chat\";\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"The command from update \" .\ + \_\$UpdateID . \" failed syntax validation!\");\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\ + \"); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \ + \\\r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \ + \"Telegram Chat\"); \\\r\ + \n message=([ \$SymbolForNotification \"gear\" ] . \"Command:\ + \\n\" . \$Command . \"\\n\\n\" . \\\r\ + \n [ \$SymbolForNotification \"cross-mark\" ] . \"The comma\ + nd failed syntax validation!\") });\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n :local MessageText (\"Received a message from untrusted contact \ + \" . \\\r\ + \n [ \$IfThenElse ([ :len (\$From->\"username\") ] = 0) \"without\ + \_username\" (\"'\" . \$From->\"username\" . \"'\") ] . \\\r\ + \n \" (ID \" . \$From->\"id\" . \") in update \" . \$UpdateID . \ + \"!\");\r\ + \n :if (\$Command ~ (\"^! *\" . [ \$EscapeForRegEx \$Identity ] . \ + \"\\\$\")) do={\r\ + \n \$LogPrint warning \$ScriptName \$MessageText;\r\ + \n \$SendTelegram2 ({ origin=\$ScriptName; chatid=(\$Chat->\"id\"\ + ); silent=false; \\\r\ + \n replyto=(\$Message->\"message_id\"); threadid=\$ThreadId; \\\ + \r\ + \n subject=([ \$SymbolForNotification \"speech-balloon\" ] . \"\ + Telegram Chat\"); \\\r\ + \n message=(\"You are not trusted.\") });\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName \$MessageText;\r\ + \n }\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Already handled update \" . \$Upd\ + ateID . \".\");\r\ + \n }\r\ + \n }\r\ + \n :set TelegramChatOffset ([ :pick \$TelegramChatOffset 1 3 ], \\\r\ + \n [ \$IfThenElse (\$UpdateID >= \$TelegramChatOffset->2) (\$UpdateID +\ + \_1) (\$TelegramChatOffset->2) ]);\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Script send Notifications in Telegram" dont-require-permissions=\ + no name=mod/AM-TG-Notifications owner=mod/AM-TG-Notifications policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-TG-Notifications\r\ + \n# Script comment: Script send Notifications in Telegram\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:global FlushTelegramQueue;\r\ + \n:global GetTelegramChatId;\r\ + \n:global NotificationFunctions;\r\ + \n:global PurgeTelegramQueue;\r\ + \n:global SendTelegram;\r\ + \n:global SendTelegram2;\r\ + \n# flush telegram queue\r\ + \n:set FlushTelegramQueue do={ :onerror Err {\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global CertificateAvailable;\r\ + \n :global IsFullyConnected;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$IsFullyConnected ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"System is not fully connected, not flushing.\ + \");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local AllDone true;\r\ + \n :local QueueLen [ :len \$TelegramQueue ];\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueue\ + \" ] ] > 0 && \$QueueLen = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Flushing Telegram messages from scheduler,\ + \_but queue is empty.\");\r\ + \n }\r\ + \n :foreach Id,Message in=\$TelegramQueue do={\r\ + \n :if ([ :typeof \$Message ] = \"array\" ) do={\r\ + \n :onerror Err {\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl out\ + put=user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . (\$Message->\"tokenid\") .\ + \_\"/sendMessage\") \\\r\ + \n http-data=(\$Message->\"http-data\") as-value ]->\"data\");\r\ + \n :set (\$TelegramQueue->\$Id);\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json v\ + alue=\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Sending queued Telegram message failed: \ + \" . \$Err);\r\ + \n :set AllDone false;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$AllDone = true && \$QueueLen = [ :len \$TelegramQueue ]) do={\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ]\ + ;\r\ + \n :set TelegramQueue;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# get the chat id\r\ + \n:set GetTelegramChatId do={ :onerror Err {\r\ + \n :global TelegramTokenId;\r\ + \n :global CertificateAvailable;\r\ + \n :global LogPrint;\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority - \ + G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n :local Data;\r\ + \n :onerror Err {\r\ + \n :set Data ([ /tool/fetch check-certificate=yes-without-crl output=us\ + er \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TelegramTokenId . \"/getUpd\ + ates\?offset=0\" . \\\r\ + \n \"&allowed_updates=%5B%22message%22%5D\") as-value ]->\"data\");\ + \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Fetching data failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :local JSON [ :deserialize from=json value=\$Data ];\r\ + \n :local Count [ :len (\$JSON->\"result\") ];\r\ + \n :if (\$Count = 0) do={\r\ + \n \$LogPrint info \$0 (\"No message received.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Message (\$JSON->\"result\"->(\$Count - 1)->\"message\");\r\ + \n \$LogPrint info \$0 (\"The chat id is: \" . (\$Message->\"chat\"->\"id\ + \"));\r\ + \n :if ((\$Message->\"is_topic_message\") = true) do={\r\ + \n \$LogPrint info \$0 (\"The thread id is: \" . (\$Message->\"message_\ + thread_id\"));\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set (\$NotificationFunctions->\"telegram\") do={\r\ + \n :local Notification \$1;\r\ + \n :global Identity;\r\ + \n :global IdentityExtra;\r\ + \n :global TelegramChatId;\r\ + \n :global TelegramChatIdOverride;\r\ + \n :global TelegramMessageIDs;\r\ + \n :global TelegramQueue;\r\ + \n :global TelegramThreadId;\r\ + \n :global TelegramThreadIdOverride;\r\ + \n :global TelegramTokenId;\r\ + \n :global TelegramTokenIdOverride;\r\ + \n :global CertificateAvailable;\r\ + \n :global CharacterReplace;\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ProtocolStrip;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n :local EscapeMD do={\r\ + \n :local Text [ :tostr \$1 ];\r\ + \n :local Mode [ :tostr \$2 ];\r\ + \n :local Excl [ :tostr \$3 ];\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :local Chars {\r\ + \n \"body\"={ \"\\\\\"; \"`\" };\r\ + \n \"plain\"={ \"_\"; \"*\"; \"[\"; \"]\"; \"(\"; \")\"; \"~\"; \"`\"\ + ; \">\";\r\ + \n \"#\"; \"+\"; \"-\"; \"=\"; \"|\"; \"{\"; \"}\"; \".\"; \ + \"!\" };\r\ + \n }\r\ + \n :foreach Char in=(\$Chars->\$Mode) do={\r\ + \n :if ([ :typeof [ :find \$Excl \$Char ] ] = \"nil\") do={\r\ + \n :set Text [ \$CharacterReplace \$Text \$Char (\"\\\\\" . \$Char)\ + \_];\r\ + \n }\r\ + \n }\r\ + \n :if (\$Mode = \"body\") do={:return (\"```\\n\" . \$Text . \"\\n```\ + \")}\r\ + \n :return \$Text;\r\ + \n }\r\ + \n :local ChatId [ \$EitherOr (\$Notification->\"chatid\") \\\r\ + \n [ \$EitherOr (\$TelegramChatIdOverride->(\$Notification->\"origin\")\ + ) \$TelegramChatId ] ];\r\ + \n :local ThreadId [ \$EitherOr (\$Notification->\"threadid\") \\\r\ + \n [ \$EitherOr (\$TelegramThreadIdOverride->(\$Notification->\"origin\ + \")) \\\r\ + \n [ \$IfThenElse ([ :len (\$TelegramChatIdOverride->(\$Notification->\ + \"origin\")) ] = 0) \$TelegramThreadId ] ] ];\r\ + \n :local TokenId [ \$EitherOr (\$TelegramTokenIdOverride->(\$Notificatio\ + n->\"origin\")) \$TelegramTokenId ];\r\ + \n :if ([ :len \$TokenId ] = 0 || [ :len \$ChatId ] = 0) do={:return fals\ + e}\r\ + \n :if ([ :typeof \$TelegramMessageIDs ] = \"nothing\") do={:set Telegram\ + MessageIDs ({})}\r\ + \n :local Truncated false;\r\ + \n :local Text (\"*__\" . [ \$EscapeMD (\"[\" . \$IdentityExtra . \$Ident\ + ity . \"] \" . \\\r\ + \n (\$Notification->\"subject\")) \"plain\" ] . \"__*\\n\\n\");\r\ + \n :local LenSubject [ :len \$Text ];\r\ + \n :local LenMessage [ :len (\$Notification->\"message\") ];\r\ + \n :local LenLink ([ :len (\$Notification->\"link\") ] * 2);\r\ + \n :local LenSum (\$LenSubject + \$LenMessage + \$LenLink);\r\ + \n :if (\$LenSum > 3968) do={\r\ + \n :set Text (\$Text . [ \$EscapeMD ([ :pick (\$Notification->\"message\ + \") 0 (3840 - \$LenSubject - \$LenLink) ] . \"...\") \"body\" ]);\r\ + \n :set Truncated true;\r\ + \n } else={:set Text (\$Text . [ \$EscapeMD (\$Notification->\"message\")\ + \_\"body\" ])}\r\ + \n :if (\$LenLink > 0) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"link\" ] .\ + \_\\\r\ + \n \"[\" . [ \$EscapeMD [ \$ProtocolStrip (\$Notification->\"link\") \ + ] \"plain\" ] . \"]\" . \\\r\ + \n \"(\" . [ \$EscapeMD (\$Notification->\"link\") \"plain\" ] . \")\ + \");\r\ + \n }\r\ + \n :if (\$Truncated = true) do={\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"scissors\"\ + \_] . \\\r\ + \n [ \$EscapeMD (\"The message was too long and has been truncated, c\ + ut off _\" . \\\r\ + \n ((\$LenSum - [ :len \$Text ]) * 100 / \$LenSum) . \"%_!\") \"plain\ + \" \"_\" ]);\r\ + \n }\r\ + \n :local HTTPData (\"chat_id=\" . \$ChatId . \"&disable_notification=\" \ + . (\$Notification->\"silent\") . \\\r\ + \n \"&reply_to_message_id=\" . (\$Notification->\"replyto\") . \"&mes\ + sage_thread_id=\" . \$ThreadId . \\\r\ + \n \"&disable_web_page_preview=true&parse_mode=MarkdownV2\");\r\ + \n :onerror Err {\r\ + \n :if ([ \$CertificateAvailable \"Go Daddy Root Certificate Authority \ + - G2\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Data ([ /tool/fetch check-certificate=yes-without-crl output=\ + user http-method=post \\\r\ + \n (\"https://api.telegram.org/bot\" . \$TokenId . \"/sendMessage\") \ + \\\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) as-va\ + lue ]->\"data\");\r\ + \n :set (\$TelegramMessageIDs->[ :tostr ([ :deserialize from=json value\ + =\$Data ]->\"result\"->\"message_id\") ]) 1;\r\ + \n } do={\r\ + \n \$LogPrint info \$0 (\"Failed sending Telegram notification: \" . \$\ + Err . \" - Queuing...\");\r\ + \n :if ([ :typeof \$TelegramQueue ] = \"nothing\") do={:set TelegramQue\ + ue ({})}\r\ + \n :set Text (\$Text . \"\\n\" . [ \$SymbolForNotification \"alarm-cloc\ + k\" ] . \\\r\ + \n [ \$EscapeMD (\"This message was queued since _\" . [ /system/cloc\ + k/get date ] . \\\r\ + \n \" \" . [ /system/clock/get time ] . \"_ and may be obsolete.\") \ + \"plain\" \"_\" ]);\r\ + \n :set (\$TelegramQueue->[ :len \$TelegramQueue ]) { tokenid=\$TokenId\ + ;\r\ + \n http-data=(\$HTTPData . \"&text=\" . [ \$UrlEncode \$Text ]) };\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"_FlushTelegramQueu\ + e\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"_FlushTelegramQueue\" interval=1m sta\ + rt-time=startup \\\r\ + \n on-event=(\":global FlushTelegramQueue; \\\$FlushTelegramQueue;\ + \");\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n# purge the Telegram queue\r\ + \n:set PurgeTelegramQueue do={\r\ + \n :global TelegramQueue;\r\ + \n /system/scheduler/remove [ find where name=\"_FlushTelegramQueue\" ];\ + \r\ + \n :set TelegramQueue;\r\ + \n}\r\ + \n# send notification via telegram - expects at least two string arguments\ + \r\ + \n:set SendTelegram do={ :onerror Err {\r\ + \n :global SendTelegram2;\r\ + \n \$SendTelegram2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3; sil\ + ent=\$4 });\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n# send notification via telegram - expects one array argument\r\ + \n:set SendTelegram2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n (\$NotificationFunctions->\"telegram\") (\"\\\$NotificationFunctions->\ + \\\"telegram\\\"\") \$Notification;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=testIfThenElseAndEitherOr owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source=":local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local ExitError;\r\ + \n#:local IfThenElse;\r\ + \n#:local EitherOr;\r\ + \n\r\ + \n:local one 11;\r\ + \n:local two 8;\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n:local Test; # [ :totime \"22s\" ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n\r\ + \n:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set Test [ \$EitherOr \$Test \"\" ];\r\ + \n:log warning (\"\\\$ Test = \" . \$Test);\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :local IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n\r\ + \n#:log warning ([ \$IfThenElse (\$one != 0) \$one \$two ]);\r\ + \n\r\ + \n:set ExitOK true;\r\ + \n\$ExitError \$ExitOK \$ScriptName \"Err test custom\";" +add comment="Update and Backup send notification to EMail" \ + dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-Backup-UpdateEmail\r\ + \n# Script comment: Update and Backup send notification to EMail\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version>=6.43.7\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Updated: 15/04/2025\r\ + \n# Website: https://github.com/beeyev\r\ + \n# Notification e-mail (Make sure you have configured Email settings in T\ + ools -> Email)\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local IfThenElse do={:if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] \ + = true) do={:return \$2}; :return \$3;}\r\ + \n:local EitherOr do={\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:if ((\$1 != 0) = true) do={:retur\ + n \$1} else={:return \$2};}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:if ((\$1 > 0s) = true) do={:retu\ + rn \$1} else={:return \$2};}\r\ + \n :if ([ :len [ :tostr \$1 ] ] > 0) do={:return \$1} else={:return \$2};\ + \r\ + \n}\r\ + \n:local ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :if (\$ExitOK = \"false\") do={:log error (\$Name [ \$IfThenElse ([ :p\ + ick \$Name 0 1 ] = \"\\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);}\r\ + \n}\r\ + \n\r\ + \n:global LogPrint;\r\ + \n:global EditSchedulers;\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n:local SchedInterval \"7d\";\r\ + \n:local SchedStartTime \"03:41:27\";\r\ + \n:local SchedComment \"Every 7 Day Check For Update and Backup send notif\ + ication to EMail.\";\r\ + \n\r\ + \n# Function to add or edit schedulers for scripts, to ensure they are set\ + \_up correctly\r\ + \n# How to use:\r\ + \n# Call this function with the following parameters:\r\ + \n# 1. \$1 - Scheduler name (usually same as script name) [*]\r\ + \n# 2. \$2 - Interval (e.g. \"1d\" (default is \"1d\")) [**]\r\ + \n# 3. \$3 - Start Time (e.g. \"00:00:00\", default is current time) [**]\ + \r\ + \n# 4. \$4 - Comment (optional, default: \"Scheduler for script: \")\ + \_[**]\r\ + \n# 5. \$5 - On Event command (e.g. \"/system/script { run ; }\" (de\ + fault is \"/system/script { run \$SchedName; }\")) [**]\r\ + \n# 6. \$6 - Policy (e.g. \"ftp,reboot,read,write,policy,test,password,sni\ + ff,sensitive,romon\" (default is the same)) [**]\r\ + \n# 7. \$7 - Start Date (e.g. \"jan/01/1970\", default is current date) [*\ + *]\r\ + \n# Notes:\r\ + \n# * - Scheduler name is required, and is used to identify the scheduler\ + \_to create or edit. It is usually the same as the script name (\$ScriptNa\ + me).\r\ + \n# ** - If optional parameters are not provided, default values will be u\ + sed.\r\ + \n# This allows for quick setup with minimal parameters, while still \ + providing flexibility for customization.\r\ + \n# Example usage:\r\ + \n# :if ([ \$EditSchedulers \"my-script\" ] = false) do={:set ExitOK false\ + ; :error true;}\r\ + \n# :if ([ \$EditSchedulers \"my-script\" \"1d\" \"03:41:27\" \"My custom \ + scheduler comment\" false false \"jan/01/1970\" ] = false) do={:set ExitOK\ + \_false; :error true;}\r\ + \n\r\ + \n:set EditSchedulers do={\r\ + \n :local SchedName [ :tostr \$1 ];\r\ + \n :if ([ :len \$SchedName ] = 0) do={ :return false; }\r\ + \n :local Interval [ :tostr \$2 ];\r\ + \n :if ([ :len \$Interval ] = 0) do={ :set Interval \"1d\"; }\r\ + \n :local StartTime [ :tostr \$3 ];\r\ + \n :if ([ :len \$StartTime ] = 0) do={ :set StartTime [/system/clock/get \ + time]; }\r\ + \n :local Comment [ :tostr \$4 ];\r\ + \n :if ([ :len \$Comment ] = 0) do={ :set Comment \"Scheduler for script:\ + \_\$SchedName\"; }\r\ + \n :local OnEvent [ :tostr \$5 ];\r\ + \n :if ([ :len \$OnEvent ] = 0) do={ :set OnEvent \"/system/script { run \ + \$SchedName; }\"; }\r\ + \n :local Policy [ :tostr \$6 ];\r\ + \n :if ([ :len \$Policy ] = 0) do={ :set Policy \"ftp,reboot,read,write,p\ + olicy,test,password,sniff,sensitive,romon\"; }\r\ + \n :local StartDate [ :tostr \$7 ];\r\ + \n :if ([ :len \$StartDate ] = 0) do={ :set StartDate [/system/clock/get \ + date]; }\r\ + \n\r\ + \n :onerror Err {\r\ + \n # Check if scheduler exists, if not - create it\r\ + \n :if ([ :len [ /system/scheduler/find where name=\$SchedName ] ] = 0)\ + \_do={\r\ + \n :log warning (\$SchedName . \"System Scheduler for script: \" . \$\ + SchedName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add comment=\$Comment interval=\$Interval name=\ + \$SchedName on-event=\$OnEvent policy=\$Policy start-date=\$StartDate star\ + t-time=\$StartTime;\r\ + \n }\r\ + \n # Check if scheduler parameters are correct, if not - fix them\r\ + \n :if ([ /system/scheduler/get \$SchedName comment ] != \$Comment) do=\ + {\r\ + \n /system/scheduler/set \$SchedName comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName interval ] != \$Interval) d\ + o={\r\ + \n /system/scheduler/set \$SchedName interval=\$Interval;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName on-event ] != \$OnEvent) do\ + ={\r\ + \n /system/scheduler/set \$SchedName on-event=\$OnEvent;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName policy ] != \$Policy) do={\ + \r\ + \n /system/scheduler/set \$SchedName policy=\$Policy;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-date ] != \$StartDate\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-date=\$StartDate;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \$SchedName start-time ] != \$StartTime\ + ) do={\r\ + \n /system/scheduler/set \$SchedName start-time=\$StartTime;\r\ + \n }\r\ + \n } do={:log error (\$SchedName . \"Failed to add/modify scheduler for '\ + \" . \$SchedName . \"' failed: \" . \$Err); :return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:if ([ \$EditSchedulers \$ScriptName \$SchedInterval \$SchedStartTime \$\ + SchedComment ] = false) do={\r\ + \n :log error (\$ScriptName . \"Failed to add/modify scheduler for \" . \ + \$ScriptName . \"!\");\r\ + \n :set ExitOK true;\r\ + \n :error true;\r\ + \n}\r\ + \n\r\ + \n# Local Function CheckOSUpdateMode\r\ + \n:local CheckOSUpdateMode;\r\ + \n:set CheckOSUpdateMode do={\r\ + \n :local NewMode [ :tostr \$1 ];\r\ + \n :if ([ :len \$NewMode ] = 0) do={\r\ + \n :log error (\$0 . \"/nFunction /\$CheckOSUpdateMode received empty v\ + alue!\");\r\ + \n :return false;\r\ + \n :error true;\r\ + \n }\r\ + \n\r\ + \n :global BackupAndUpdateMode;\r\ + \n :global OldMode [ :tostr \$BackupAndUpdateMode ];\r\ + \n :if (\$NewMode != \$BackupAndUpdateMode && \$NewMode = \"updateOnce\")\ + \_do={\r\ + \n :set BackupAndUpdateMode [ :tostr \$NewMode ];\r\ + \n :log info (\$0 . \"/nOk. /\$BackupAndUpdateMode set to: '\" . \$NewM\ + ode . \"'.\\nYou're a good boy! ))\\nI'm launching the update in 5 seconds\ + .\");\r\ + \n :delay 5;\r\ + \n /system/script { run \$ScriptName; };\r\ + \n } else={\r\ + \n :log warning (\$0 . \"/nFunction /\$CheckOSUpdateMode received value: \ + '\" . \$NewMode . \"', but is may be only \\\"updateOnce\\\"!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n :error false;\r\ + \n}\r\ + \n\r\ + \n# :if ([ :len [ /system/scheduler/find where name=\"running-from-backup\ + -partition\" ] ] > 0) do={\r\ + \n# \$LogPrint warning \$ScriptName (\"Running from backup partition, r\ + efusing to act.\");\r\ + \n# :set ExitOK true;\r\ + \n# :error false;\r\ + \n# }\r\ + \n\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n:global forceBackup;\r\ + \n:global BackupPassword;\r\ + \n:global BackupSens;\r\ + \n:global updateChannel;\r\ + \n\r\ + \n:global DevInfoIncludeIP;\r\ + \n\r\ + \n# Installs patch updates only (BackupAndUpdateMode = \"osupdate\").\r\ + \n# Works for `stable` and `long-term` channels.\r\ + \n# Updates only if MAJOR.MINOR match (e.g. 6.43.2 > 6.43.6 allowed, 6.44.\ + 1 skipped).\r\ + \n# Sends info if a newer (non-patch) version is found.\r\ + \n:local installOnlyPatchUpdates false;\r\ + \n:local scriptVersion \"26.04.30\";\r\ + \n:local copyrightUrl \"https://www.github.com/vados-dev/\";\r\ + \n#Script messages prefix\r\ + \n:local SMP \"BkpAndUpdate:\";\r\ + \n\r\ + \n:local exitErrorMessage \"\$SMP script stopped due to an error. Please c\ + heck logs for more details.\";\r\ + \n:log info \"\\n\\n\$SMP Script \\\"Mikrotik RouterOS automatic backup & \ + update\\\" v.\$scriptVersion started.\";\r\ + \n:log info \"\$SMP Script Mode: `\$BackupAndUpdateMode`, Update channel: \ + `\$updateChannel`, Force backup: `\$forceBackup`, Install only patch updat\ + es: `\$installOnlyPatchUpdates`\";\r\ + \n\r\ + \n## vv FUNCTIONS vv ##\r\ + \n:global WaitCheckUpdates; \$WaitCheckUpdates;\r\ + \n:global MiniDateTimeStamp;\r\ + \n:local MDTSFix [\$MiniDateTimeStamp];\r\ + \n:global Identity;\r\ + \n:global IdentityShort;\r\ + \n:global devBoardName;\r\ + \n:global runningVersion;\r\ + \n:global runningChannel;\r\ + \n:global devModel;\r\ + \n:global devRbSerialNumber;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n\r\ + \n# Checks if two RouterOS version strings differ only by the patch versio\ + n\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.2.4\"] # Output: true\r\ + \n# :put [\$FuncIsPatchUpdateOnly \"6.2.1\" \"6.3.1\"] # Output: false\r\ + \n:local FuncIsPatchUpdateOnly do={\r\ + \n :local ver1 \$1;\r\ + \n :local ver2 \$2;\r\ + \n # Extract the major and minor components from a version\r\ + \n :local extractMajorMinor do={\r\ + \n :local ver \$1;\r\ + \n :local dot1 [:find \$ver \".\"];\r\ + \n :if (\$dot1 = -1) do={:return \$ver}\r\ + \n :local major [:pick \$ver 0 \$dot1];\r\ + \n :local rest [:pick \$ver (\$dot1 + 1) [:len \$ver]];\r\ + \n :local dot2 [:find \$rest \".\"];\r\ + \n :local minor \$rest;\r\ + \n :if (\$dot2 >= 0) do={:set minor [:pick \$rest 0 \$dot2]}\r\ + \n :return (\$major . \".\" . \$minor);\r\ + \n }\r\ + \n\r\ + \n# Compare the major and minor components of both version strings\r\ + \n:if ([\$extractMajorMinor \$ver1] = [\$extractMajorMinor \$ver2]) do={:r\ + eturn true}\r\ + \n :return false;\r\ + \n}\r\ + \n# Creates backups and returns array of names\r\ + \n# Possible arguments:\r\ + \n# \$1 - file name, without extension\r\ + \n# \$2 - password (optional)\r\ + \n# \$3 - sensitive data in config (optional, default: false)\r\ + \n# Example:\r\ + \n#:put [\$FuncCreateBackups \$backupName]\r\ + \n:local FuncCreateBackups do={\r\ + \n :local backupName [ :tostr \$1 ];\r\ + \n :local BackPass \$2;\r\ + \n :local BackSens \$3;\r\ + \n\r\ + \n #Script messages prefix\r\ + \n :local SMP \"BkpAndUpdate:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` started, input:\ + \_`\$backupName`\");\r\ + \n\r\ + \n # validate required parameter: backupName\r\ + \n :if ([:typeof \$backupName] != \"str\" or [:len \$backupName] = 0) do=\ + {\r\ + \n :log error \"\$SMP parameter 'backupName' is required and must be a \ + non-empty string\";\r\ + \n# :log warning \"\$SMP parameter '\\\$backupName' is required and mus\ + t be a non-empty string.\\nI set '\\\$backupName' to 'default-backup'\";\r\ + \n# :set \$backupName \"default-backup\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n\r\ + \n :local backupFileSys \"\$backupName.backup\";\r\ + \n :local backupFileConfig \"\$backupName.rsc\";\r\ + \n :local backupNames {\$backupFileSys;\$backupFileConfig};\r\ + \n\r\ + \n ## Perform system backup\r\ + \n :if ([:len \$BackPass] = 0) do={\r\ + \n :log info (\"\$SMP starting backup without password, backup name: `\ + \$backupName`\");\r\ + \n /system backup save dont-encrypt=yes name=\$backupName;\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting backup with password, backup name: `\$ba\ + ckupName`\");\r\ + \n /system backup save password=\$BackPass name=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP system backup created: `\$backupFileSys`\");\r\ + \n ## Export config file\r\ + \n :if (\$BackSens = true) do={\r\ + \n :log info (\"\$SMP starting export config with sensitive data, backu\ + p name: `\$backupName`\");\r\ + \n # Since RouterOS v7 it needs to be explicitly set that we want to ex\ + port sensitive data\r\ + \n :if ([:pick [/system resource get version] 0 1] < 7) do={\r\ + \n :execute \"/export compact terse file=\$backupName\";\r\ + \n } else={\r\ + \n :execute \"/export compact show-sensitive terse file=\$backupName\ + \";\r\ + \n }\r\ + \n } else={\r\ + \n :log info (\"\$SMP starting export config without sensitive data, ba\ + ckup name: `\$backupName`\");\r\ + \n /export compact hide-sensitive terse file=\$backupName;\r\ + \n }\r\ + \n :log info (\"\$SMP Config export complete: `\$backupFileConfig`\");\r\ + \n :log info (\"\$SMP Waiting a little to ensure backup files are written\ + \");\r\ + \n :delay 20;\r\ + \n :if ([:len [/file find name=\$backupFileSys]] > 0) do={\r\ + \n :log info (\"\$SMP system backup file successfully saved to the file\ + \_system: `\$backupFileSys`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP system backup was not created, file does not exi\ + st: `\$backupFileSys`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :if ([:len [/file find name=\$backupFileConfig]] > 0) do={\r\ + \n :log info (\"\$SMP config backup file successfully saved to the file\ + \_system: `\$backupFileConfig`\");\r\ + \n } else={\r\ + \n :log error (\"\$SMP config backup was not created, file does not exi\ + st: `\$backupFileConfig`\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info (\"\$SMP global function `FuncCreateBackups` finished. Creat\ + ed backups, system: `\$backupFileSys`, config: `\$backupFileConfig`\")\r\ + \n :return \$backupNames;\r\ + \n}\r\ + \n# Sends an email\r\ + \n# Parameters:\r\ + \n# \$1 - to (email address)\r\ + \n# \$2 - subject\r\ + \n# \$3 - body\r\ + \n# \$4 - file attachments (optional; pass \"\" if not needed)\r\ + \n#\r\ + \n# Example:\r\ + \n# \$FuncSendEmailSafe \"admin@domain.com\" \"Backup Done\" \"Backup comp\ + lete.\" \"backup1.backup\"\r\ + \n:local FuncSendEmailSafe do={\r\ + \n :global EmailGeneralTo;\r\ + \n :local emailSubject \$2;\r\ + \n :local emailBody \$3;\r\ + \n :local emailAttachments \$4;\r\ + \n :local SMP \"Bkp&Upd:\";\r\ + \n :local exitErrorMessage \"\$SMP script stopped due to an error. Please\ + \_check logs for more details.\";\r\ + \n :log info \"\$SMP Attempting to send email to `\$EmailGeneralTo`\";\r\ + \n # SAFETY: wait for any previously queued email to finish\r\ + \n :local waitTimeoutPre 60;\r\ + \n :local waitCounterPre 0;\r\ + \n :while (([/tool e-mail get last-status] = \"resolving-dns\" or [/tool \ + e-mail get last-status] = \"in-progress\")) do={\r\ + \n :if (\$waitCounterPre >= \$waitTimeoutPre) do={\r\ + \n :log error \"\$SMP Email send aborted: previous send did not compl\ + ete after \$waitTimeoutPre seconds\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n :log info \"\$SMP Waiting for previous email to finish (status: \$[/\ + tool e-mail get last-status])...\";\r\ + \n :delay 1; \r\ + \n :set waitCounterPre (\$waitCounterPre + 1);\r\ + \n }\r\ + \n # Send the email\r\ + \n :do {\r\ + \n /tool e-mail send to=\$EmailGeneralTo subject=\$emailSubject body=\$\ + emailBody file=\$emailAttachments;\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Email send command failed to execute. Check logs \ + and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n # Wait for send status to change from \"in-progress\" / \"resolving-dn\ + s\"\r\ + \n :local waitTimeout 60;\r\ + \n :local waitCounter 0;\r\ + \n :local emailStatus \"\";\r\ + \n :log info \"\$SMP Waiting for email to be sent, timeout in `\$waitTime\ + out` seconds...\";\r\ + \n :while (\$waitCounter < \$waitTimeout) do={\r\ + \n :set emailStatus [/tool e-mail get last-status];\r\ + \n :if (\$emailStatus != \"in-progress\" and \$emailStatus != \"resolvi\ + ng-dns\") do={\r\ + \n :log info \"\$SMP Email send status received: \$emailStatus\";\r\ + \n # exit loop\r\ + \n :set waitCounter \$waitTimeout;\r\ + \n } else={:delay 1; :set waitCounter (\$waitCounter + 1)}\r\ + \n }\r\ + \n # Final decision based on last status\r\ + \n :if (\$emailStatus = \"succeeded\") do={\r\ + \n :log info \"\$SMP Email successfully sent to `\$EmailGeneralTo`\";\ + \r\ + \n } else={\r\ + \n :log error \"\$SMP Email failed to send. Status: `\$emailStatus`. Ch\ + eck logs for more details and verify email settings.\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n# Global variable to track current update step\r\ + \n# They need to be initialized here first to be available in the script\r\ + \n:global buGlobalVarTargetOsVersion;\r\ + \n:global buGlobalVarScriptStep;\r\ + \n:local scriptStep \$buGlobalVarScriptStep;\r\ + \n:do {\r\ + \n /system/script/environment remove buGlobalVarScriptStep;\r\ + \n} on-error={}\r\ + \n:if ([:len \$scriptStep] = 0) do={\r\ + \n :set scriptStep 1;\r\ + \n}\r\ + \n## ^^ FUNCTIONS ^^ ##\r\ + \n#\r\ + \n# Initial validation\r\ + \n## Check email settings\r\ + \n:if ([:len \$EmailGeneralTo] < 3) do={\r\ + \n :log error (\"\$SMP Parameter `\\\$EmailGeneralTo` is not set, or cont\ + ains invalid value. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Values will be defined later in the script\r\ + \n:local emailServer \"\";\r\ + \n:local emailFromAddress [/tool e-mail get from];\r\ + \n:log info \"\$SMP Validating email settings...\";\r\ + \n:do {\r\ + \n :set emailServer [/tool e-mail get server];\r\ + \n} on-error={\r\ + \n # This is a workaround for the RouterOS v7.12 and older versions\r\ + \n :set emailServer [/tool e-mail get address];\r\ + \n}\r\ + \n:if (\$emailServer = \"0.0.0.0\") do={\r\ + \n :log error (\"\$SMP Email server address is not correct: `\$emailServe\ + r`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n:if ([:len \$emailFromAddress] < 3) do={\r\ + \n :log error (\"\$SMP Email configuration FROM address is not correct: `\ + \$emailFromAddress`, check `Tools -> Email`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Script mode validation\r\ + \n:if (\$BackupAndUpdateMode != \"backup\" and \$BackupAndUpdateMode != \"\ + osupdate\" and \$BackupAndUpdateMode != \"updateOnce\" and \$BackupAndUpda\ + teMode != \"osnotify\") do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$BackupAndUpdateMode` is not \ + set, or contains invalid value: `\$BackupAndUpdateMode`. Script stopped.\"\ + );\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Update channel validation\r\ + \n:if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\" \ + and \$updateChannel != \"testing\" and \$updateChannel != \"development\")\ + \_do={\r\ + \n :log error (\"\$SMP Script parameter `\\\$updateChannel` is not set, o\ + r contains invalid value: `\$updateChannel`. Script stopped.\");\r\ + \n :error \$exitErrorMessage;\r\ + \n}\r\ + \n# Verify if script is set to install patch updates and if the update cha\ + nnel is valid\r\ + \n:if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \"\ + updateOnce\") and \$installOnlyPatchUpdates = true) do={\r\ + \n :if (\$updateChannel != \"stable\" and \$updateChannel != \"long-term\ + \") do={\r\ + \n :log error (\"\$SMP Patch-only updates enabled, but update channel `\ + \$updateChannel` is invalid. Only `stable` and `long-term` are supported. \ + Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n \r\ + \n :if (\$runningChannel != \"stable\" and \$runningChannel != \"long-ter\ + m\") do={\r\ + \n :log error (\"\$SMP Script is set to install only patch updates, but\ + \_the installed RouterOS version is not from `stable` or `long-term` chann\ + el: `\$runningChannel`. Script stopped\");\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n}\r\ + \n#\r\ + \n\r\ + \n:local rawTime [/system clock get time];\r\ + \n:local rawDate [/system clock get date];\r\ + \n\r\ + \n:local deviceOsVerAndChannelRunning [/system/resource/get version];\r\ + \n\r\ + \n:local backupNameTemplate (\"backup_v\" . \$runningVersion . \"_\" .\ + \_\$runningChannel . \"_\" . \$MDTSFix);\r\ + \n:local backupNameBeforeUpdate (\$backupNameTemplate . \"_before_update\"\ + );\r\ + \n:local backupNameAfterUpdate (\$backupNameTemplate . \"_after_update\")\ + ;\r\ + \n\r\ + \n## Email body template\r\ + \n:local mailSubjectPrefix \"\$SMP Device - `\$IdentityShort`\";\r\ + \n:local mailBodyCopyright \"Mikrotik RouterOS automatic backup & update \ + (ver. \$scriptVersion) \\n\$copyrightUrl\";\r\ + \n:local changelogUrl \"Check RouterOS changelog: https://mikrotik.com\ + /download/changelogs/\";\r\ + \n:local mailBodyDeviceInfo \"\";\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"Device information:\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\n-------------------\ + --\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nName: \$Identity\")\ + ;\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nModel: \$devModel\"\ + );\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBoard: \$devBoardNa\ + me\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nSerial number: \$de\ + vRbSerialNumber\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterOS version: v\ + \$deviceOsVerAndChannelRunning\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nBuild time: \$[/sys\ + tem/resource/get build-time]\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nRouterboard FW Avai\ + lable: \$ROsVerAvail\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nDevice date-time: \ + \$rawDate \$rawTime (\$[/system/clock/get time-zone-name ])\");\r\ + \n:set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nUptime: \$[/system/\ + resource/get uptime]\");\r\ + \n## IP address detection\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local PublicIpAddress [ \$GetPubIp ];\r\ + \n :set mailBodyDeviceInfo (\$mailBodyDeviceInfo . \"\\nPublic IP address\ + : \" . \$PublicIpAddress . \".\");\r\ + \n :log info \"\$SMP Public IP address detected: \$PublicIpAddress\";\r\ + \n} \r\ + \n\r\ + \n:local mailAttachments [:toarray \"\"];\r\ + \n:if (\$scriptStep = 1 or \$scriptStep = 3) do={\r\ + \n :if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP Waiting for one minute before continuing to the f\ + inal step.\");\r\ + \n :delay 1m;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n## STEP 1: Create backups, check for new RouterOS, and send email\r\ + \n## Steps 2\C3\A23 run only if auto-update is enabled and a new version i\ + s available\r\ + \n:if (\$scriptStep = 1) do={\r\ + \n :global BackupPassword;\r\ + \n :global BackupSens;\r\ + \n :local isNewOsUpdateAvailable false;\r\ + \n :local isLatestOsAlreadyInstalled true;\r\ + \n :local isOsNeedsToBeUpdated false;\r\ + \n :local isUpdateCheckSucceeded false;\r\ + \n :local isEmailNeedsToBeSent false;\r\ + \n :local mailSubjectPartAction \"\";\r\ + \n :local mailPtBodyAction \"\";\r\ + \n :local mailPtSubjectBackup \"\";\r\ + \n :local mailPtBodyBackup \"\";\r\ + \n # Checking for new version\r\ + \n :if (\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"osnotify\" or \$BackupAndUpdateMode = \"updateOnce\") do={\r\ + \n :log info (\"\$SMP Setting update channel to `\$updateChannel`\");\r\ + \n /system/package/update/set channel=\$updateChannel;\r\ + \n :log info (\"\$SMP Checking for new RouterOS version. Current instal\ + led version is: `\$runningVersion`\");\r\ + \n \$LogPrint debug \$ScriptName (\"Checking for updates...\");\r\ + \n \r\ + \n# /system/package/update/check-for-updates without-paging as-value;\ + \r\ + \n# /system/package/update check-for-updates;\r\ + \n :delay 5s;\r\ + \n :set PkgUpdStatus [ /system/package/update/get status ];\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :set ROsVerAvail [/system/package/update/get latest-version];\r\ + \n }\r\ + \n\r\ + \n :if (\$PkgUpdStatus = \"New version is available\") do={\r\ + \n :log info (\"\$SMP New RouterOS version is available: `\$ROsVerAva\ + il`\");\r\ + \n :set isNewOsUpdateAvailable true;\r\ + \n :set isLatestOsAlreadyInstalled false;\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"New RouterOS available\";\r\ + \n :set mailPtBodyAction \"New RouterOS version is available, curren\ + t version: v\$runningVersion, new version: v\$ROsVerAvail. \\n\$changelogU\ + rl\";\r\ + \n } else={\r\ + \n :if (\$PkgUpdStatus = \"System is already up to date\") do={\r\ + \n :log info (\"\$SMP No new RouterOS version is available, the lat\ + est version is already installed: `v\$runningVersion`\");\r\ + \n :set isUpdateCheckSucceeded true;\r\ + \n :set mailSubjectPartAction \"No os update available\";\r\ + \n :set mailPtBodyAction \"No new RouterOS version is available, t\ + he latest version is already installed: `v\$runningVersion`\";\r\ + \n } else={\r\ + \n :log error (\"\$SMP Failed to check for new RouterOS version. Pa\ + ckage check status: `\$PkgUpdStatus`\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :set mailSubjectPartAction \"Error unable to check new os versio\ + n\";\r\ + \n :set mailPtBodyAction \"An error occurred while checking for a \ + new RouterOS version.\\nStatus returned: `\$PkgUpdStatus`\\n\\nPlease revi\ + ew the logs on the device for more details and verify internet connectivit\ + y.\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n # Checking if the script needs to install new os version\r\ + \n :if ((\$BackupAndUpdateMode = \"osupdate\" or \$BackupAndUpdateMode = \ + \"updateOnce\") and \$isNewOsUpdateAvailable = true) do={\r\ + \n :if (\$installOnlyPatchUpdates = true) do={\r\ + \n :if ([\$FuncIsPatchUpdateOnly \$runningVersion \$ROsVerAvail] = tr\ + ue) do={\r\ + \n :log info \"\$SMP New RouterOS version is available, and it is a\ + \_patch update. Current version: v\$runningVersion, new version: v\$ROsVer\ + Avail\";\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n } else={\r\ + \n :log info \"\$SMP The script will not install this update, becau\ + se it is not a patch update. Current version: v\$runningVersion, new versi\ + on: v\$ROsVerAvail\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThis update wil\ + l not be installed, because the script is set to install only patch update\ + s.\");\r\ + \n }\r\ + \n } else={\r\ + \n :set isOsNeedsToBeUpdated true;\r\ + \n }\r\ + \n }\r\ + \n # Checking If the script needs to create a backup\r\ + \n :if (\$forceBackup = true or \$BackupAndUpdateMode = \"backup\" or \$i\ + sOsNeedsToBeUpdated = true) do={\r\ + \n :log info (\"\$SMP Starting backup process.\");\r\ + \n :set isEmailNeedsToBeSent true;\r\ + \n :local backupName \$backupNameTemplate;\r\ + \n # This means it's the first step where we create a backup before the\ + \_update process\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :set backupName \$backupNameBeforeUpdate;\r\ + \n #Email body if the purpose of the script is to update the device\r\ + \n :set mailSubjectPartAction \"Update preparation\";\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nThe update proces\ + s for device '\$Identity' is scheduled to upgrade RouterOS from version v.\ + \$runningVersion to version v.\$ROsVerAvail (Update channel: \$updateChann\ + el)\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nPlease note: The \ + update will proceed only after a successful backup.\");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nA final report wi\ + th detailed information will be sent once the update process is completed.\ + \");\r\ + \n :set mailPtBodyAction (\$mailPtBodyAction . \"\\nIf you do not rec\ + eive a second email within the next 10 minutes, there may be an issue. Ple\ + ase check your device logs for further information.\");\r\ + \n }\r\ + \n :do {\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupName \$BackupPas\ + sword \$BackupSens];\r\ + \n :set mailPtSubjectBackup \"Backup created\";\r\ + \n :set mailPtBodyBackup \"System backups have been successfully crea\ + ted and attached to this email.\";\r\ + \n } on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :set mailPtSubjectBackup \"Backup failed\";\r\ + \n :set mailPtBodyBackup \"The script failed to create backups. Pleas\ + e check device logs for more details.\";\r\ + \n :log warning \"\$SMP Backup creation failed. Update process will b\ + e canceled if automatic update is enabled\";\r\ + \n }\r\ + \n }\r\ + \n :if (\$isEmailNeedsToBeSent = true) do={\r\ + \n :log info \"\$SMP Preparing to send email...\";\r\ + \n :local mailStep1Subject \$mailSubjectPrefix;\r\ + \n :local mailStep1Body \"\";\r\ + \n # subject\r\ + \n :if (\$mailSubjectPartAction != \"\") do={:set mailStep1Subject (\$\ + mailStep1Subject . \" - \" . \$mailSubjectPartAction)}\r\ + \n :if (\$mailPtSubjectBackup != \"\") do={:set mailStep1Subject (\$ma\ + ilStep1Subject . \" - \" . \$mailPtSubjectBackup)}\r\ + \n # body\r\ + \n :if (\$mailPtBodyAction != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyAction . \"\\n\\n\")}\r\ + \n :if (\$mailPtBodyBackup != \"\") do={:set mailStep1Body (\$mailStep1\ + Body . \$mailPtBodyBackup . \"\\n\\n\")}\r\ + \n :set mailStep1Body (\$mailStep1Body . \$mailBodyDeviceInfo . \"\\n__\ + ________\\n\" . \$mailBodyCopyright);\r\ + \n :set mailStep1Body (\$mailStep1Body . \"\\n[*** TEST START ***]\\n\\\ + \$DeviceInfo: \" . [ \$DeviceInfo ] . \"\\n[*** TEST END ***]\\n\");\r\ + \n # Send email with backups\r\ + \n :do {\$FuncSendEmailSafe \$EmailGeneralTo \$mailStep1Subject \$mailS\ + tep1Body \$mailAttachments} on-error={\r\ + \n :set isOsNeedsToBeUpdated false;\r\ + \n :log error \"\$SMP The script will not proceed with the update pro\ + cess, because the email was not sent.\";\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2s;\r\ + \n }\r\ + \n :if (\$isOsNeedsToBeUpdated = true) do={\r\ + \n :global OldMode;\r\ + \n :log info \"\$SMP everything is ready to install new RouterOS, going\ + \_to start the update process and reboot the device.\";\r\ + \n :do {\r\ + \n :local nextStep 2;\r\ + \n :if (\$isCloudHostedRouter = true) do={\r\ + \n :log info \"\$SMP The device is a cloud hosted router, the secon\ + d step updating the Routerboard firmware will be skipped.\";\r\ + \n :set nextStep 3;\r\ + \n }\r\ + \n :local scheduledCommand (\":delay 5s; /system/scheduler remove BKP\ + UPD-NEXT-BOOT-TASK; \\\r\ + \n :global buGlobalVarScriptStep \$nextStep; :global buGlobalVarTarg\ + etOsVersion \\\"\$ROsVerAvail\\\"; \\\r\ + \n :delay 10s; /system/script { run \$ScriptName; }\");\r\ + \n /system/scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\$schedu\ + ledCommand start-time=startup interval=0;\r\ + \n /system/package/update install;\r\ + \n } on-error={\r\ + \n # Failed to install new os version, remove the task and variables\ + \r\ + \n :do {\r\ + \n /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\r\ + \n :set BackupAndUpdateMode \$OldMode;\r\ + \n :delay 2;\r\ + \n :do {\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \"ERROR Remove\ + \_global variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n# :if ([ :len \$OldMode ] > 0) do={\r\ + \n# :do {\r\ + \n# :global OldMode (a);\r\ + \n# } on-error={\r\ + \n# :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Re\ + move global variable \\\$OldMode failed!\");\r\ + \n# }\r\ + \n# }\r\ + \n } on-error={\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Pleas\ + e check device logs for more details. \\\r\ + \n \\nAnd Failed to remove task and variables! Check it!\";\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove \ + task and global variables!\");\r\ + \n }\r\ + \n :log error \"\$SMP Failed to install new RouterOS version. Please \ + check device logs for more details.\";\r\ + \n :local mailUpdateErrorSubject (\$mailSubjectPrefix . \" - Update f\ + ailed\");\r\ + \n :local mailUpdateErrorBody \"The script was unable to install new \ + RouterOS version. Please check device logs for more details.\";\r\ + \n # Send email with error\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailUpdateErrorSubject \$ma\ + ilUpdateErrorBody \"\";\r\ + \n :error \$exitErrorMessage;\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n## STEP 2: (Post-reboot) Upgrade RouterBOARD firmware\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und\r\ + \n:if (\$scriptStep = 2) do={\r\ + \n :log info \"\$SMP The script is in the second step, updating Routerboa\ + rd firmware.\";\r\ + \n :log info \"\$SMP Upgrading routerboard firmware from v.\$deviceRbCurr\ + entFw to v.\$deviceRbUpgradeFw\";\r\ + \n /system routerboard upgrade;\r\ + \n :delay 2;\r\ + \n :log info \"\$SMP routerboard upgrade process was completed, going to \ + reboot in a moment!\";\r\ + \n ## Set task to send final report on the next boot\r\ + \n /system scheduler add name=BKPUPD-NEXT-BOOT-TASK on-event=\":delay 2; \ + :global buGlobalVarScriptStep 3; \\\r\ + \n :global buGlobalVarTargetOsVersion \\\"\$buGlobalVarTargetOsVersion\\\ + \"; :delay 10s; /system/script { run \$ScriptName; }; \\ \r\ + \n :delay 5s; /system/scheduler remove BKPUPD-NEXT-BOOT-TASK;\" start-ti\ + me=startup interval=0;\r\ + \n :delay 2;\r\ + \n /system reboot;\r\ + \n}\r\ + \n\r\ + \n## STEP 3: Final report (after second reboot, with delay).\r\ + \n## Runs only if auto-update is enabled and a new RouterOS version was fo\ + und.\r\ + \n:if (\$scriptStep = 3) do={\r\ + \n :log info (\"\$SMP The script is in the third step, sending final repo\ + rt.\");\r\ + \n :local targetOsVersion \$buGlobalVarTargetOsVersion;\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"buGlobalVarTargetOsV\ + ersion\"];\r\ + \n :global buGlobalVarTargetOsVersion (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR Remove glob\ + al variable \\\$buGlobalVarTargetOsVersion failed!\");\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$OldMode ] != 0) do={\r\ + \n :do {\r\ + \n# /system/script/environment remove [find name=\"OldMode\"];\r\ + \n :global OldMode (a);\r\ + \n } on-error={\r\ + \n :set \$mailSubjectPrefix (\$mailSubjectPrefix . \" ERROR! Remove\ + \_global variable \\\$OldMode failed!\");\r\ + \n }\r\ + \n }\r\ + \n :if ([:len \$targetOsVersion] = 0) do={\r\ + \n :log warning \"\$SMP Something is wrong, the script was unable to ge\ + t the target updated OS version from the global variable.\";\r\ + \n }\r\ + \n :local mailStep3Subject \$mailSubjectPrefix;\r\ + \n :local mailStep3Body \"\";\r\ + \n :if (\$targetOsVersion = \$runningVersion) do={\r\ + \n :log info \"\$SMP Successfully verified new RouterOS version: target\ + : `\$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update completed - \ + Backup created\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"RouterOS and routerboard upg\ + rade process was completed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\nNew RouterOS version: v.\ + \$targetOsVersion, routerboard firmware: v.\$deviceRbCurrentFw\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"\\n\$changelogUrl\\nBackups \ + of the upgraded system are in the attachment of this email.\\n\\n\$mailBod\ + yDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n :set mailAttachments [\$FuncCreateBackups \$backupNameAfterUpdate \$\ + BackupPassword \$BackupSens];\r\ + \n } else={\r\ + \n :log error \"\$SMP Failed to verify new RouterOS version: target: `\ + \$targetOsVersion`, current: `\$runningVersion`\";\r\ + \n :set mailStep3Subject (\$mailStep3Subject . \" - Update failed\");\r\ + \n :set mailStep3Body (\$mailStep3Body . \"The script was unable to ver\ + ify that the new RouterOS version was installed, target version: `\$target\ + OsVersion`, current version: `\$runningVersion`\\nCheck device logs for mo\ + re details.\\n\\n\$mailBodyDeviceInfo\\n\\n\$mailBodyCopyright\");\r\ + \n }\r\ + \n \$FuncSendEmailSafe \$EmailGeneralTo \$mailStep3Subject \$mailStep3Bod\ + y \$mailAttachments;\r\ + \n :if ([:len \$mailAttachments] > 0) do={\r\ + \n :log info \"\$SMP Cleaning up backup files from the file system...\"\ + ;\r\ + \n /file remove \$mailAttachments;\r\ + \n :delay 2;\r\ + \n }\r\ + \n :log info (\"\$SMP Final report email sent successfully, and the scrip\ + t has finished.\");\r\ + \n}\r\ + \n:log info (\"\$SMP the script has finished, script step: `\$scriptStep` \ + \\n\\n\");\r\ + \n\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add dont-require-permissions=no name=testGetPubIP owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global DevInfoIncludeIP;\r\ + \n:global CharacterReplace;\r\ + \n:global EscapeForRegEx;\r\ + \n:global UrlEncode;\r\ + \n\r\ + \n:if ([ \$DevInfoIncludeIP ] = true) do={\r\ + \n :global GetPubIp;\r\ + \n :local Char (\"\\n\\r\");\r\ + \n :local PublicIpAddress [\$GetPubIp];\r\ + \n# :if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 2) ] = \ + \"\\n\") do={:error true}; :set error falseon-error={:set PublicIpAddress \ + (\$PublicIpAddress . Char)};\r\ + \n#:if ([ :pick \$PublicIpAddress ([ :len \$PublicIpAddress ] - 1) ] = \"/\ + n\") do={\r\ + \n#:log warning \"N is = //n\"; \r\ + \n# :set PublicIpAddress [ \$CharacterReplace \$PublicIpAddress \$Char \"\ + \" ];\r\ + \n#}\r\ + \n# :set PublicIpAddress [ \$UrlEncode \$PublicIpAddress ];\r\ + \n#:local IpLen ([ :len \$PublicIpAddress ] -1);\r\ + \n#:set PublicIpAddress [:pick \$PublicIpAddress 0 \$IpLen];\r\ + \n :log warning \"Public IP address detected: \$PublicIpAddress , len = \ + \$IpLen\";\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=awg-env owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/envs/add list=awg-proxy-env key=AWG_LISTEN value=\":55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_REMOTE value=\"109.107.17\ + 7.79:55055\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H1 value=\"472437748-4724\ + 38637\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H2 value=\"707808381-7078\ + 09250\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H3 value=\"1609078552-160\ + 9079495\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_H4 value=\"1012329484-101\ + 2329741\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_I5 value=\"\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_SERVER_PUB value=\"o5IgCl\ + 1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-proxy-env key=AWG_CLIENT_PUB value=[/interf\ + ace/wireguard/get [find name=wg-awg-proxy] public-key]" +add dont-require-permissions=no name=awg-container-add owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + container/add file=sata1/tmp/awg-proxy-amd64.tar.gz interface=veth-awg-pro\ + xy envlist=awg-proxy-env \\\ + \n hostname=awg-proxy root-dir=sata1/awg-proxy logging=yes shm-size=4M \ + start-on-boot=yes\ + \n/container/start [find where tag~\"awg-proxy\"]" +add dont-require-permissions=yes name=awg2-webui owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + put \"Download image, and save him to usb1/tmp\"\ + \n/tool/fetch url=\"https://ros.vados.ru/docker/awg2-webui-chr.tar\" dst-p\ + ath=sata1/tmp/awg2-webui.tar\ + \n\ + \n:put \"1. Create veth interface\"\ + \n/interface veth add name=veth-awg address=10.9.9.2/24 gateway=10.9.9.1\ + \n\ + \n:put \"2. Create bridge and add veth\"\ + \n/interface bridge add name=br-awg\ + \n/interface bridge port add bridge=br-awg interface=veth-awg\ + \n\ + \n:put \"3. Assign IP to bridge\"\ + \n/ip address add address=10.9.9.1/24 interface=br-awg\ + \n\ + \n:put \"4. NAT: masquerade container traffic\"\ + \n/ip firewall nat add chain=srcnat src-address=10.9.9.0/24 action=masquer\ + ade\ + \n\ + \n:put \"5. Port forward: UDP 443 \? container (AmneziaWG QUIC mimicry)\"\ + \n/ip firewall nat add chain=dstnat protocol=udp dst-port=443 action=dst-n\ + at to-addresses=10.9.9.2 to-ports=55055 in-interface=ether1\ + \n\ + \n:put \"6. Port forward: HTTPS 9443 \? container Web UI\"\ + \n/ip firewall nat add chain=dstnat protocol=tcp dst-port=9443 action=dst-\ + nat to-addresses=10.9.9.2 to-ports=443 in-interface=ether1\ + \n\ + \n:put \"Create environment list..\"\ + \n/container envs add list=awgui-env key=WEB_USER value=vados\ + \n/container envs add list=awgui-env key=WEB_PASS value=zoomzoomrulezz\ + \n/container envs add list=awgui-env key=SECRET_KEY value=RanDomSecret32Sy\ + mboLs2325272931q\ + \n/container envs add list=awgui-env key=AWG_ENDPOINT value=10.30.30.10:44\ + 3\ + \n\ + \n:put \"Load and start container...\"\ + \n/container add file=sata1/tmp/awg2-webui.tar interface=veth-awg hostname\ + =awg2-webui \\\ + \nroot-dir=sata1/awg2-webui layer-dir=sata1/docker/awg2-webu/ envlist=awgu\ + i-env start-on-boot=yes logging=yes shm-size=4M\ + \n\ + \n:put \"Start...\"\ + \n/container start 0\ + \n\ + \n:put \"Verify...\"\ + \n/container print\ + \n\ + \n:put \"Should show: status=running\"\ + \n\ + \n/log print where topics~\"container\"\ + \n\ + \n:put \"Should show: AWG started, nginx running\"\ + \n" +add dont-require-permissions=no name=awg-proxy-go-Client owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:put \"[::::::::::::::: START :::::::::::::::]\"\ + \n:put \"\"\ + \n:put \"Add ram disk tmpfs\"\ + \n#/disk add type=tmpfs tmpfs-max-size=100M slot=ram\ + \n\ + \n:put \"veth and network:\"\ + \n /interface/bridge add name=docker port-cost-mode=short\ + \n /ip/address/add address=192.168.100.1/24 interface=docker\ + \n\ + \n /interface/veth add address=192.168.100.3/24 gateway=192.168.100.1 name\ + =awg-proxy-go-client\ + \n /interface/bridge/port add bridge=docker interface=awg-proxy-go-client\ + \n\ + \n:put \"add config-client.json\"\ + \n/file/add name=sata1/mounts/awg-proxy-go/config-client.json\ + \n/container/mounts/add src=sata1/mounts/awg-proxy-go/config-client.json d\ + st=/app/config.json list=awgcfg-client\ + \n\ + \n#:put \"Download image, and save him to sata1/tmp/awgproxy-0.0.1-0034-am\ + d64.tar.gz\"\ + \n#/tool/fetch url=\"https://ros.vados.ru/amneziawg/img/awgproxy-0.0.1-003\ + 4-amd64.tar.gz\" dst-#path=\"tmp/awgproxy-0.0.1-0034-amd64.tar.gz\"\ + \n\ + \n:put \"Add container\"\ + \n/container/add file=\"usb1/dst/awgproxy-0.0.1-0036-amd64.tar\" interface\ + =awg-proxy-go-client hostname=awg-proxy-go-client root-dir=sata1/awg-proxy\ + -client logging=yes start-on-boot=yes workdir=sata1/docker/ name=\"awg-pro\ + xy-go-client\" mountlists=awgcfg-client\ + \n\ + \n:put \"Start container\"\ + \n#/container/start awg-proxy-go-client\ + \n\ + \n:put \"Add user:\"\ + \n /user/add address=192.168.100.2 group=write name=awg-proxy-go password=\ + peskar55\ + \n\ + \n:put \"Add forwarding port web-ui\"\ + \n /ip firewall nat add action=dst-nat chain=dstnat dst-port=8089 in-inter\ + face=ether1 protocol=tcp to-addresses=192.168.100.3 to-port=8088\ + \n\ + \n:put \"Add native WireGuard-server wg-awg, add address.\"\ + \n /interface/wireguard/add name=wg-awg-client\ + \n /ip/address/add address=172.17.0.1/24 interface=wg-awg-client\ + \n\ + \n:put \"\"\ + \n:put \"[::::::::::::::: END :::::::::::::::]\"\ + \n" +add comment=awg2wg dont-require-permissions=no name=awg2wg-uninstall owner=\ + Manager policy=ftp,read,write,policy source="\r\ + \n :put \"Uninstalling AmneziaWG...\"\r\ + \n :log info \"Uninstalling AmneziaWG...\"\r\ + \n /ip/route/remove [find where comment=awg2wg-tunnel]\r\ + \n :do { /tool/netwatch/remove [find where comment=Monitor-AWG2WG] } on-e\ + rror={}\r\ + \n :do { /ip/route/remove [find where comment=Monitor-AWG2WG] } on-error=\ + {}\r\ + \n /container/stop [find where interface=veth-awg2wg]\r\ + \n :delay 7s\r\ + \n /interface/list/member/remove [find where interface=wg-awg2wg]\r\ + \n /container/remove [find where interface=veth-awg2wg]\r\ + \n /container/envs/remove [find where list=\"awg2wg-env\"]\r\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg2wg\"]\r\ + \n /ip/address/remove [find where address=\"172.20.0.1/30\"]\r\ + \n /interface/veth/remove [find where name=\"veth-awg2wg\"]\r\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg2wg\"]\ + \r\ + \n /ip/address/remove [find where interface=\"wg-awg2wg\"]\r\ + \n /interface/wireguard/remove [find where name=\"wg-awg2wg\"]\r\ + \n :do { /file/remove [find where name~\"awg2wg.+tar\"] } on-error={}\r\ + \n :do { /file/remove [find where name=\"disk1/awg2wg\"] } on-error={}\r\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\r\ + \n /system/script/remove [find where name=awg2wg-uninstall]\r\ + \n" +add dont-require-permissions=no name=amneziawg-mikrotik-c owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global imagesPath \"amneziawg/img/\";\ + \n:local Image \"awg-proxy-amd64-7.20-Docker.tar.gz\";\ + \n\ + \n:global DstDir \"sata1/dst/\";\ + \n\ + \n:local Url=(\$GlobalScriptsUrl . \$ImagesPath . \$Image);\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n\ + \n" +add comment=Generator dont-require-permissions=no name=awg-VDSina owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="# ============================================================\ + \n# AWG Proxy -- MikroTik RouterOS (protocol: v2)\ + \n# 2026-06-30 22:08:12\ + \n# ============================================================\ + \n\ + \n# 0. Check prerequisites\ + \n:if ([:len [/system/package/find where name=\"container\" disabled=no]] \ + = 0) do={\ + \n :put \"Container package is not installed or disabled. Install it and \ + reboot.\"\ + \n :error \"Usage: /system/device-mode/update container=yes\"\ + \n}\ + \n\ + \n# Auto-detect storage\ + \n:global awgDisk \"disk1\"\ + \n{\ + \n :local usbFree 0\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] free] \ + } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n :put (\"Using USB: usb1 (\" . (\$usbFree / 1048576) . \" MB free)\")\ + \n } else={\ + \n :if ([:len [/disk/find where slot=\"usb1\"]] > 0) do={\ + \n :put \"USB found but not mounted. Format as ext4\?\"\ + \n :put \"Press 'y' to confirm:\"\ + \n :local key [/terminal/inkey timeout=30]\ + \n :if (\$key = 121 || \$key = 89) do={\ + \n /disk/format-drive usb1 file-system=ext4 label=usb1\ + \n :delay 3s\ + \n :do { :set usbFree [/disk/get [find where mount-point=\"usb1\"] \ + free] } on-error={}\ + \n :if (\$usbFree > 0) do={\ + \n :set awgDisk \"usb1\"\ + \n } else={ :put \"Format failed, using disk1\" }\ + \n } else={ :put \"Using disk1\" }\ + \n } else={ :put \"No USB, using disk1\" }\ + \n }\ + \n}\ + \n\ + \n# 1. Uninstall script\ + \n/system/script/add name=awg-VDSina-uninstall comment=awg-VDSina source={\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n}\ + \n\ + \n# 2. Network infrastructure\ + \n/interface/veth/add name=veth-awg-VDSina address=172.19.75.210/30 gatewa\ + y=172.19.75.209\ + \n/ip/address/add address=172.19.75.209/30 interface=veth-awg-VDSina\ + \n/ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.19.7\ + 5.208/30\ + \n\ + \n# 3. WireGuard interface (MikroTik derives the public key automatically)\ + \n/interface/wireguard/add name=wg-awg-VDSina private-key=\"4CHyNhbOs923/E\ + yNDguMXJXdghL2I3UyzXPwrANVgHs=\" listen-port=14710 disabled=yes\ + \n/interface/wireguard/peers/add interface=wg-awg-VDSina public-key=\"o5Ig\ + Cl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\" preshared-key=\"RNvF7T1cg5tyXcY\ + QnD9N5BEp6e20vVJQTv0GMjyvHU0=\" endpoint-address=172.19.75.210 endpoint-po\ + rt=51820 allowed-address=0.0.0.0/0 persistent-keepalive=10\ + \n/ip/address/add address=10.9.0.3/32 interface=wg-awg-VDSina\ + \n\ + \n# 4. Container environment variables\ + \n/container/envs/add list=awg-VDSina-env key=AWG_LISTEN value=\":51820\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_REMOTE value=\"109.107.1\ + 77.79:55055\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JC value=\"9\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMIN value=\"105\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_JMAX value=\"920\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S1 value=\"90\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S2 value=\"136\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H1 value=\"472437748-472\ + 438637\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H2 value=\"707808381-707\ + 809250\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H3 value=\"1609078552-16\ + 09079495\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_H4 value=\"1012329484-10\ + 12329741\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_SERVER_PUB value=\"o5IgC\ + l1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_CLIENT_PUB value=[/inter\ + face/wireguard/get [find name=wg-awg-VDSina] public-key]\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S3 value=\"45\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_S4 value=\"27\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I1 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I2 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I3 value=\"\ + \"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I4 value=\"\"\ + \n/container/envs/add list=awg-VDSina-env key=AWG_I5 value=\"\"\ + \n\ + \n# 5. DNS\ + \n{ :local rawDNS [/ip/dns/get servers]; :local prevDNS \"\"; :foreach s i\ + n=[:toarray \$rawDNS] do={ :if ([:len \$prevDNS] > 0) do={ :set prevDNS \"\ + \$prevDNS,\$s\" } else={ :set prevDNS \$s } }; /container/envs/add list=aw\ + g-VDSina-env key=AWG_PREV_DNS value=\"\$prevDNS\" }\ + \n# NOTE: replaces existing DNS configuration\ + \n/ip/dns/set servers=109.107.177.79\ + \n/ip/route/add dst-address=109.107.177.79/32 gateway=wg-awg-VDSina distan\ + ce=1 comment=awg-VDSina-dns\ + \n\ + \n# 6. Download, create and start container\ + \n/container/envs/add list=awg-VDSina-env key=AWG_STORAGE value=\$awgDisk\ + \n:if (\$awgDisk != \"disk1\") do={\ + \n :local tmpPath (\$awgDisk . \"/pull\")\ + \n /container/envs/add list=awg-VDSina-env key=AWG_PREV_TMPDIR value=[/co\ + ntainer/config/get tmpdir]\ + \n /container/config set tmpdir=\$tmpPath memory-high=200M\ + \n}\ + \n{\ + \n :local arch [/system/resource/get architecture-name]\ + \n :local ver [/system/resource/get version]\ + \n :local dotPos [:find \$ver \".\"]\ + \n :local rest [:pick \$ver (\$dotPos + 1) [:len \$ver]]\ + \n :local endPos [:find \$rest \".\"]\ + \n :if ([:typeof \$endPos] = \"nil\") do={ :set endPos [:find \$rest \" \ + \"] }\ + \n :local minor [:tonum [:pick \$rest 0 \$endPos]]\ + \n :local suffix \"\"\ + \n :if (\$minor <= 20) do={ :set suffix \"-7.20-Docker\" }\ + \n :local file \"\"\ + \n :if (\$arch = \"arm64\") do={ :set file (\"awg-proxy-arm64\" . \$suffi\ + x . \".tar.gz\") }\ + \n :if (\$arch = \"arm\") do={ :set file (\"awg-proxy-arm\" . \$suffix . \ + \".tar.gz\") }\ + \n :if (\$arch ~ \"x86\") do={ :set file (\"awg-proxy-amd64\" . \$suffix \ + . \".tar.gz\") }\ + \n :if (\$file = \"\") do={ :error \"Unsupported architecture: \$arch\" }\ + \n :local url \"https://github.com/timbrs/amneziawg-mikrotik-c/releases/l\ + atest/download/\$file\"\ + \n :local filePath \$file\ + \n :if (\$awgDisk != \"disk1\") do={\ + \n :set filePath (\$awgDisk . \"/pull/\" . \$file)\ + \n :do { /file/make-directory (\$awgDisk . \"/pull\") } on-error={}\ + \n }\ + \n :if ([:len [/file/find where name=\$filePath]] = 0) do={\ + \n :local freeStorage 0\ + \n :if (\$awgDisk = \"disk1\") do={\ + \n :set freeStorage [/system/resource/get free-hdd-space]\ + \n } else={\ + \n :do { :set freeStorage [/disk/get [find where mount-point=\$awgDis\ + k] free] } on-error={}\ + \n }\ + \n :if (\$freeStorage < 262144) do={\ + \n :put (\"WARNING: Low disk space (\" . (\$freeStorage / 1024) . \"K\ + B free). Need at least 256KB.\")\ + \n :put \"See: https://github.com/timbrs/amneziawg-mikrotik-c#insuffi\ + cient-disk-space\"\ + \n :error \"Insufficient disk space\"\ + \n }\ + \n :put (\"Fetching: \$url -> \" . \$filePath)\ + \n /tool/fetch url=\$url dst-path=\$filePath http-max-redirect-count=10\ + \n } else={\ + \n :put (\"File already exists: \" . \$filePath)\ + \n }\ + \n :local rootDir (\$awgDisk . \"/awg-VDSina\")\ + \n /container/add file=\$filePath interface=veth-awg-VDSina envlist=awg-V\ + DSina-env hostname=awg-VDSina root-dir=\$rootDir logging=no start-on-boot=\ + yes comment=awg-VDSina\ + \n :if (\$minor > 20) do={ [:parse \"/container/set [find where interface\ + =veth-awg-VDSina] shm-size=4M\"] }\ + \n /file/remove \$filePath\ + \n :local freeMem [/system/resource/get free-memory]\ + \n :if (\$freeMem < 16777216) do={\ + \n :put (\"WARNING: Low memory (\" . (\$freeMem / 1048576) . \"MB free)\ + . 16MB+ recommended.\")\ + \n }\ + \n /container/start [find where interface=veth-awg-VDSina]\ + \n :do { /file/remove [find where name=\"console-dump.txt\"] } on-error={\ + }\ + \n :put \"Waiting for container to start...\"\ + \n :delay 5s\ + \n /interface/wireguard/enable wg-awg-VDSina\ + \n :put \"WireGuard interface enabled\"\ + \n :put \"Installation complete!\"\ + \n :put \"Ping test: 109.107.177.79 via AmneziaWG tunnel. repeat 10 times\ + \"\ + \n /ping 109.107.177.79 count=10 interval=1\ + \n :put \"\"\ + \n :put \"======= NEXT STEPS =======\"\ + \n :put \"\"\ + \n :put \"Route specific traffic through the AmneziaWG tunnel:\"\ + \n :put \"\"\ + \n :put \" Route a single host:\"\ + \n :put \" /ip/route/add dst-address=8.8.8.8/32 gateway=wg-awg-VDSina \ + comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Route a subnet:\"\ + \n :put \" /ip/route/add dst-address=100.0.0.0/8 gateway=wg-awg-VDSina\ + \_comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Remove a route:\"\ + \n :put \" /ip/route/remove [find where comment=awg-VDSina-tunnel dst-\ + address=8.8.8.8/32]\"\ + \n :put \"\"\ + \n :put \" Show all tunnel routes:\"\ + \n :put \" /ip/route/print where comment=awg-VDSina-tunnel\"\ + \n :put \"\"\ + \n :put \" Uninstall:\"\ + \n :put \" /system/script/run awg-VDSina-uninstall\"\ + \n :put \"=========================\"\ + \n}\ + \n\ + \n# 7. Verification\ + \n# /container/print\ + \n# /interface/wireguard/print\ + \n# /interface/wireguard/peers/print\ + \n" +add comment=awg-VDSina dont-require-permissions=no name=awg-VDSina-uninstall \ + owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ + \n :put \"Uninstallimg AmneziaWG...\"\ + \n :log info \"Uninstallimg AmneziaWG...\"\ + \n :local prevDNS \"\"\ + \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ + env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ + \n :local storageDisk \"disk1\"\ + \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ + ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ + \n :local prevTmpdir \"\"\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ + Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ + \n }\ + \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ + \n /ip/route/remove [find where comment=awg-VDSina-dns]\ + \n /container/stop [find where interface=veth-awg-VDSina]\ + \n :delay 7s\ + \n /container/remove [find where interface=veth-awg-VDSina]\ + \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ + \n :if (\$prevDNS != \"\") do={\ + \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ + \n :put (\"DNS restored to: \$prevDNS\")\ + \n }\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n /container/config set tmpdir=\$prevTmpdir\ + \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ + \n }\ + \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ + \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ + \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ + \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ + \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ + a\"]\ + \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ + \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ + \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ + \_} on-error={}\ + \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ + out.rsc\")] } on-error={}\ + \n :if (\$storageDisk != \"disk1\") do={\ + \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ + n-error={}\ + \n }\ + \n :put \"Uninstall AmneziaWG Proxy complete!\"\ + \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ + \n /system/script/remove [find where name=awg-VDSina-uninstall]\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +add name=manager policy="local,ssh,ftp,read,write,policy,api,rest-api,!telnet,\ + !reboot,!test,!winbox,!password,!web,!sniff,!sensitive,!romon" +/app +set cinny firewall-redirects=8094:80:tcp:web +set goaway container-command-lines=goaway:none:docker.io/pommee/goaway:latest +set home-assistant container-command-lines=\ + home-assistant:none:lscr.io/linuxserver/homeassistant +set n8n firewall-redirects=5678:5678:tcp:web +set nextcloud container-command-lines="db:none:docker.io/postgres:17,redis:non\ + e:docker.io/valkey/valkey:/bin/sh -c 'valkey-server --port 6379 --appendon\ + ly yes --requirepass \$VALKEY_PASSWORD',server:none:docker.io/nextcloud:ap\ + ache" +set pihole environment="pihole:FTLCONF_dns_listeningMode=all,pihole:FTLCONF_we\ + bserver_api_password=password" +set redlib firewall-redirects=8087:8080:tcp:web +set solr container-command-lines=solr:none:docker.io/solr:latest +set uptime-kuma container-command-lines=\ + uptime-kuma:none:docker.io/louislam/uptime-kuma:1 +/app settings +set auto-update=yes disk=*7 lan-bridge=*3 registry-mirrors="https://reg.vados.\ + ru:5000/:https://reg.vados.ru/,https://registry-1.docker.io" +/caps-man aaa +set called-format=ssid +/caps-man access-list +add action=reject allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-120..-80 ssid-regexp="" +add action=accept allow-signal-out-of-range=10s disabled=no interface=all \ + signal-range=-79..120 ssid-regexp="" +/caps-man configuration +add channel.band=2ghz-b/g/n country=no_country_set datapath=xs-DataPath mode=\ + ap name=xs-2G rx-chains=0,1,2,3 security=xs-Sec ssid=vados tx-chains=\ + 0,1,2,3 +add channel.band=5ghz-a/n/ac country=no_country_set datapath=xs-DataPath \ + installation=any mode=ap name=xs-5G rx-chains=0,1,2,3 security=xs-Sec \ + ssid=vados5g tx-chains=0,1,2,3 +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX .frequency=2422,2442,2462 .reselect-interval=20m country=belarus \ + datapath=DataPath datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes hw-protection-mode=rts-cts installation=any name=2G \ + rx-chains=0,1,2,3 security=WPA2 ssid=vados tx-chains=0,1,2,3 +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX .frequency=5180,5200,5220,5240,5260 .reselect-interval=20m \ + .skip-dfs-channels=yes country=belarus datapath=DataPath \ + datapath.client-to-client-forwarding=yes .local-forwarding=yes \ + hw-protection-mode=rts-cts installation=any name=5G security=WPA2 ssid=\ + vados5g +/caps-man datapath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + xs-DataPath +add bridge=*3 client-to-client-forwarding=yes local-forwarding=yes name=\ + DataPath +/caps-man manager +set ca-certificate=CAPsMAN-CA-51B25E507D07 certificate=CAPsMAN-51B25E507D07 \ + enabled=yes require-peer-certificate=yes +/caps-man manager interface +set [ find default=yes ] forbid=yes +add disabled=no interface=*100 +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=g,gn,b \ + master-configuration=2G name-format=prefix-identity name-prefix=2G +add action=create-dynamic-enabled hw-supported-modes=an,ac,a \ + master-configuration=5G name-format=prefix-identity name-prefix=5G +add action=create-dynamic-enabled disabled=yes hw-supported-modes=ac,an,a \ + master-configuration=2G name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled disabled=yes hw-supported-modes=an \ + master-configuration=5G name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set crl-store=system +/container config +set layer-dir=/sata1/docker/layers memory-high=200.0MiB memory-max=4096.0MiB \ + registry-url=https://registry-1.docker.io tmpdir=/sata1/tmp username=\ + amsternl +/container envs +add key=AWG_CLIENT_PUB list=awg-VDSina-env value=\ + "NAonhRSuFIrFpNKTs5X32ItcvFuO1kiJUigQZb95YlE=" +add key=AWG_H1 list=awg-VDSina-env value=472437748-472438637 +add key=AWG_H2 list=awg-VDSina-env value=707808381-707809250 +add key=AWG_H3 list=awg-VDSina-env value=1609078552-1609079495 +add key=AWG_H4 list=awg-VDSina-env value=1012329484-1012329741 +add key=AWG_I1 list=awg-VDSina-env value=\ + "" +add key=AWG_I2 list=awg-VDSina-env value="" +add key=AWG_I3 list=awg-VDSina-env value="" +add key=AWG_I4 list=awg-VDSina-env value="" +add key=AWG_I5 list=awg-VDSina-env value="" +add key=AWG_JC list=awg-VDSina-env value=9 +add key=AWG_JMAX list=awg-VDSina-env value=920 +add key=AWG_JMIN list=awg-VDSina-env value=105 +add key=AWG_LISTEN list=awg-VDSina-env value=:51820 +add key=AWG_PREV_DNS list=awg-VDSina-env value=10.30.30.33,109.107.177.79 +add key=AWG_REMOTE list=awg-VDSina-env value=109.107.177.79:55055 +add key=AWG_S1 list=awg-VDSina-env value=90 +add key=AWG_S2 list=awg-VDSina-env value=136 +add key=AWG_S3 list=awg-VDSina-env value=45 +add key=AWG_S4 list=awg-VDSina-env value=27 +add key=AWG_SERVER_PUB list=awg-VDSina-env value=\ + "o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +add key=AWG_STORAGE list=awg-VDSina-env value=disk1 +/ip smb +set enabled=no +/interface bridge port +add bridge=BridgeLAN interface=LAN +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes +/interface detect-internet +set detect-interface-list=all internet-interface-list=Internet \ + lan-interface-list=LAN wan-interface-list=WAN +/interface list member +add interface=ether1 list=WAN +/interface wifi cap +set discovery-interfaces=*DF +/interface wifi capsman +set package-path=/tmpfs/capsman-packages upgrade-policy=none +/interface wireguard peers +add allowed-address=0.0.0.0/0 endpoint-address=172.19.75.210 endpoint-port=\ + 51820 interface=wg-awg-VDSina name=peer4 persistent-keepalive=10s \ + public-key="o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +/ip address +add address=10.30.30.10/24 interface=BridgeLAN network=10.30.30.0 +add address=192.168.100.1/24 interface=*12B network=192.168.100.0 +add address=172.19.75.209/30 interface=veth-awg-VDSina network=172.19.75.208 +add address=10.9.0.3 interface=wg-awg-VDSina network=10.9.0.0 +/ip dhcp-client +add disabled=yes interface=ether1 name=client1 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set disabled=yes interface=*3 lease-script=\ + lease-script lease-time=10m name=nucDHCP server-address=10.30.30.10 +/ip dns +set allow-remote-requests=yes doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=109.107.177.79 verify-doh-cert=yes +/ip firewall nat +add action=masquerade chain=srcnat src-address=172.19.75.208/30 +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip route +add check-gateway=none disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ + BridgeLAN routing-table=main scope=30 target-scope=10 +add comment=awg-VDSina-dns distance=1 dst-address=109.107.177.79/32 gateway=\ + wg-awg-VDSina +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh port=2222 +set www-ssl port=4443 +set api-ssl disabled=yes +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-secure=no scep-plain=no webfig-plain=no \ + webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=*3 type=external +add interface=*B5 type=internal +/ipv6 firewall address-list +add address=2400:cb00::/32 list=CLOUDFLARE-IP-Address +add address=2606:4700::/32 list=CLOUDFLARE-IP-Address +add address=2803:f800::/32 list=CLOUDFLARE-IP-Address +add address=2405:b500::/32 list=CLOUDFLARE-IP-Address +add address=2405:8100::/32 list=CLOUDFLARE-IP-Address +add address=2a06:98c0::/29 list=CLOUDFLARE-IP-Address +add address=2c0f:f248::/32 list=CLOUDFLARE-IP-Address +/special-login +add port=serial0 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system gps +set set-system-time=yes +/system identity +set name=MikroNUC +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes +/system ntp client servers +add address=10.30.30.81 +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +/system scheduler +add comment="Every Day Set Global Environment Variables" disabled=yes name=\ + AM-SetGlobalEnv on-event=\ + "/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" disabled=yes interval=1d \ + name=AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" disabled=yes interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Telegram Chat Bot" disabled=yes interval=30s name=mod/AM-TG-Bot \ + on-event="/system/script/run mod/AM-TG-Bot;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment=\ + "Every 7 Day Check For Update and Backup send notification to EMail." \ + disabled=yes interval=1w name=AM-Backup-UpdateEmail on-event=\ + "/system/script { run AM-Backup-UpdateEmail; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-06-25 start-time=03:41:27 +/tool e-mail +set certificate-verification=no from=MikroNUC port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/user aaa +set accounting=no diff --git a/MikroNUC/history/20260701/20260701034001-Diff-Config.rsc b/MikroNUC/history/20260701/20260701034001-Diff-Config.rsc new file mode 100644 index 0000000..2d12711 --- /dev/null +++ b/MikroNUC/history/20260701/20260701034001-Diff-Config.rsc @@ -0,0 +1,122 @@ +24a25 +> add name=docker port-cost-mode=short +27,32d27 +< /interface veth +< add address=172.19.75.210/30 container-mac-address=38:5A:3A:BF:30:5E dhcp=no \ +< gateway=172.19.75.209 gateway6="" mac-address=38:5A:3A:BF:30:5D name=\ +< veth-awg-VDSina +< /interface wireguard +< add listen-port=14710 mtu=1420 name=wg-awg-VDSina +38,42d32 +< /container +< add comment=awg-VDSina envlists=awg-VDSina-env file=awg-proxy-amd64.tar.gz \ +< hostname=awg-VDSina interface=veth-awg-VDSina layer-dir=\ +< /sata1/docker/layers name=awg-proxy-amd64 root-dir=/disk1/awg-VDSina \ +< shm-size=4096.0KiB start-on-boot=yes +5059,5109d5048 +< add comment=awg-VDSina dont-require-permissions=no name=awg-VDSina-uninstall \ +< owner=vados policy=\ +< ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="\ +< \n :put \"Uninstallimg AmneziaWG...\"\ +< \n :log info \"Uninstallimg AmneziaWG...\"\ +< \n :local prevDNS \"\"\ +< \n :do { :set prevDNS [/container/envs/get [find where list=\"awg-VDSina-\ +< env\" key=\"AWG_PREV_DNS\"] value] } on-error={}\ +< \n :local storageDisk \"disk1\"\ +< \n :do { :set storageDisk [/container/envs/get [find where list=\"awg-VDS\ +< ina-env\" key=\"AWG_STORAGE\"] value] } on-error={}\ +< \n :local prevTmpdir \"\"\ +< \n :if (\$storageDisk != \"disk1\") do={\ +< \n :do { :set prevTmpdir [/container/envs/get [find where list=\"awg-VD\ +< Sina-env\" key=\"AWG_PREV_TMPDIR\"] value] } on-error={}\ +< \n }\ +< \n /ip/route/remove [find where comment=awg-VDSina-tunnel]\ +< \n /ip/route/remove [find where comment=awg-VDSina-dns]\ +< \n /container/stop [find where interface=veth-awg-VDSina]\ +< \n :delay 7s\ +< \n /container/remove [find where interface=veth-awg-VDSina]\ +< \n /container/envs/remove [find where list=\"awg-VDSina-env\"]\ +< \n :if (\$prevDNS != \"\") do={\ +< \n :do { /ip/dns/set servers=\"\$prevDNS\" } on-error={}\ +< \n :put (\"DNS restored to: \$prevDNS\")\ +< \n }\ +< \n :if (\$storageDisk != \"disk1\") do={\ +< \n /container/config set tmpdir=\$prevTmpdir\ +< \n :put (\"Container tmpdir restored to: \$prevTmpdir\")\ +< \n }\ +< \n /ip/firewall/nat/remove [find where out-interface=\"wg-awg-VDSina\"]\ +< \n /ip/firewall/nat/remove [find where src-address=\"172.19.75.208/30\"]\ +< \n /ip/address/remove [find where address=\"172.19.75.209/30\"]\ +< \n /interface/veth/remove [find where name=\"veth-awg-VDSina\"]\ +< \n /interface/wireguard/peers/remove [find where interface=\"wg-awg-VDSin\ +< a\"]\ +< \n /ip/address/remove [find where interface=\"wg-awg-VDSina\"]\ +< \n /interface/wireguard/remove [find where name=\"wg-awg-VDSina\"]\ +< \n :do { /file/remove [find where name~\"awg-VDSina.+tar\"] } on-error={}\ +< \n :do { /file/remove [find where name=(\$storageDisk . \"/awg-VDSina\")]\ +< \_} on-error={}\ +< \n :do { /file/remove [find where name=(\$storageDisk . \"/ru_ranges_time\ +< out.rsc\")] } on-error={}\ +< \n :if (\$storageDisk != \"disk1\") do={\ +< \n :do { /file/remove [find where name~(\$storageDisk . \"/pull\")] } o\ +< n-error={}\ +< \n }\ +< \n :put \"Uninstall AmneziaWG Proxy complete!\"\ +< \n :log info \"Uninstall AmneziaWG Proxy complete!\"\ +< \n /system/script/remove [find where name=awg-VDSina-uninstall]\ +< \n" +5185,5210d5123 +< /container envs +< add key=AWG_CLIENT_PUB list=awg-VDSina-env value=\ +< "NAonhRSuFIrFpNKTs5X32ItcvFuO1kiJUigQZb95YlE=" +< add key=AWG_H1 list=awg-VDSina-env value=472437748-472438637 +< add key=AWG_H2 list=awg-VDSina-env value=707808381-707809250 +< add key=AWG_H3 list=awg-VDSina-env value=1609078552-1609079495 +< add key=AWG_H4 list=awg-VDSina-env value=1012329484-1012329741 +< add key=AWG_I1 list=awg-VDSina-env value=\ +< "" +< add key=AWG_I2 list=awg-VDSina-env value="" +< add key=AWG_I3 list=awg-VDSina-env value="" +< add key=AWG_I4 list=awg-VDSina-env value="" +< add key=AWG_I5 list=awg-VDSina-env value="" +< add key=AWG_JC list=awg-VDSina-env value=9 +< add key=AWG_JMAX list=awg-VDSina-env value=920 +< add key=AWG_JMIN list=awg-VDSina-env value=105 +< add key=AWG_LISTEN list=awg-VDSina-env value=:51820 +< add key=AWG_PREV_DNS list=awg-VDSina-env value=10.30.30.33,109.107.177.79 +< add key=AWG_REMOTE list=awg-VDSina-env value=109.107.177.79:55055 +< add key=AWG_S1 list=awg-VDSina-env value=90 +< add key=AWG_S2 list=awg-VDSina-env value=136 +< add key=AWG_S3 list=awg-VDSina-env value=45 +< add key=AWG_S4 list=awg-VDSina-env value=27 +< add key=AWG_SERVER_PUB list=awg-VDSina-env value=\ +< "o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +< add key=AWG_STORAGE list=awg-VDSina-env value=disk1 +5213a5127 +> add bridge=docker interface=*12C +5226,5229d5139 +< /interface wireguard peers +< add allowed-address=0.0.0.0/0 endpoint-address=172.19.75.210 endpoint-port=\ +< 51820 interface=wg-awg-VDSina name=peer4 persistent-keepalive=10s \ +< public-key="o5IgCl1/G6xbl6j7sPaP4ZNYREeYOmqZjKbm+v0b9jU=" +5232,5234c5142 +< add address=192.168.100.1/24 interface=*12B network=192.168.100.0 +< add address=172.19.75.209/30 interface=veth-awg-VDSina network=172.19.75.208 +< add address=10.9.0.3 interface=wg-awg-VDSina network=10.9.0.0 +--- +> add address=192.168.100.1/24 interface=docker network=192.168.100.0 +5243,5245c5151,5152 +< doh-max-server-connections=20 servers=109.107.177.79 verify-doh-cert=yes +< /ip firewall nat +< add action=masquerade chain=srcnat src-address=172.19.75.208/30 +--- +> doh-max-server-connections=20 servers=10.30.30.33,109.107.177.79 \ +> verify-doh-cert=yes +5253,5256c5160,5161 +< add check-gateway=none disabled=no distance=2 dst-address=0.0.0.0/0 gateway=\ +< BridgeLAN routing-table=main scope=30 target-scope=10 +< add comment=awg-VDSina-dns distance=1 dst-address=109.107.177.79/32 gateway=\ +< wg-awg-VDSina +--- +> add check-gateway=none disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ +> 10.30.30.81 routing-table=main scope=30 target-scope=10 -- 2.52.0