From 2b4d14b56012626d814228c778b6897faa935c6b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Sat, 9 May 2026 00:40:48 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 09 00:40:48. --- .../20260509/20260509004001-Binary.backup | Bin 0 -> 298264 bytes .../20260509/20260509004001-Config.rsc | 4639 +++++++++++++++++ .../20260509/20260509004001-Diff-Config.rsc | 12 + 3 files changed, 4651 insertions(+) create mode 100644 MikroMaster/20260509/20260509004001-Binary.backup create mode 100644 MikroMaster/20260509/20260509004001-Config.rsc create mode 100644 MikroMaster/history/20260509/20260509004001-Diff-Config.rsc diff --git a/MikroMaster/20260509/20260509004001-Binary.backup b/MikroMaster/20260509/20260509004001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..38486a622b260db562b642e2638244ec96ad016d GIT binary patch literal 298264 zcmV+aKLEh*sF8CRjRXJ@)&mrOIc!ux%zMTv1y7v-000O80004Z`T(2&Lur_pc^lL> z?Sr-XueOnDLIK(SPW;{n+?V=+WE>lrFNB}(QSxPWu0k+JF+PPnykY3rEei(dKodPg zZPh|6F}8M*=iSDxm=y7odGR)_NrBsEfGinaBU}s_fyvb4CZ`i1$wcJVzMrdcFo9}j zbz;Xo*zSYk2O*7vjo!i|YLYk*k#lX{vo8yzm`xoj z98wIZb!AZ)=Mxz70A3#UN_z@-CA*{H8(q(25NabQ%!i_vDOf9drA;*nyH?x8iD4V% z`h(6F28SX^j5E$GY3-E@J?>_{<#f(~^`e`F%6jnxT>^%rCE-H_MT$6I0`Po-WQ;E` z&x)k=2PXavl$vb2wy~fK@?jX{fUZNd{@S? z&ySW?VoJNZsNTV!VJzX8KO^U=`0r;)dCdOR#1EYp!lY;?qRrXT4_d9bI%xMd9p-ME zBDRBxlCHZ?5&9Yr^b%(u1(+k9%jhRNI8v6un4R{IaOc)YlV{1R$>Y5|y9ZS}at2mr z-Az(j;?>8a53ibYYLZUqVt6RZsnV<}@%moo1V4gNixByJz6y`6+nN$L%HHKwN$tYC zDIdY2vE$%y79pywI4(~oVbxBJFqJ=K8ow#0?E#f;`PHDis?j`!O0PQCyyf=X7(Eg93MI# z?fr;ZNq`>3InURHCN{LjMZ0JZ@HmXeylzjxT|!wD%w}c-9Q6x*Az|7M9x4}m6_yqP zH;Yj7#W)0@8GAc$1L&yk!90&ro+9&f^g7LjPOtjYMzs)(`sxX^_#laDJ(LEf)aJ;HLrMX z9|~?eXaIQ`V?jNAT$ye{M^Z`DhUnA@Ok2ruwHO{5vYZL&&-$e`SeLyX{BvB(;5)$? zMHGvkWVbRe=jsc2KA4N- zmnQ0+WB!Kb2YWs>B=50y;9;Top5~D`VYqheAh_xHZ@7X$>$4Yads7(q1ocS`E#F3g#U0pTRyS?Q+!`tnun|2<1ov#|wI`BP}SrJ9#cly4Bpu3R8^p54-WJQS=#)n^xJD_s!gmz1z=I!H63 z2~Gp_Dq2dpdF?b$pR?DlRX)JL2)UVb(;-{H6~+G-wDCnRNq{e2pDUjvVdHIHmTrTQ z|84?P#qhn2W`*xPR9+wmq zKlq-u8|j?2p{^Xclp>54h@wbh>oYvms>t2APVFFuOi~~#J*F>X2l~Wkykae5t{HUj z@asu~F{53^*zF&@du4&&>+Ru$i0=zH_ZRoz$yks{6ByaEWMF=7yVQ4 zeslr!XQO;g=56 zNmSGx>V4suxf`H>$8n{*hG)^58Jicmmh+z|RwEx-!SIaLrNFQI9nMfU=v(I?4LNcC z4n;JP1-ZizrNe;$o*k2i1r7{%Z8lzkUp=T|$+djCvG$|a<)jMMU29OuSYN!OGt#{n zwizkc;KwE`pOj~_QvJ|o+U)cUJf8}?Vip}>@=s%?O3ysCgui8q@qCqj4$V;z?G+Ka zzm-Vc7iuRlnAt>~9@gO%{*4jfo%5+6zD80ZlT(E_kcKCh&4};owGH#Q9jItLIBM4E z!FQeNM01qfP~X~cdoLeC{7$y5`G@g~(KOo=UkZl83i+bw!$7T`$tbUvY8H{ixvt%Z z1HNt*(o8V%OnP@_D8NyZ7CZ=Ub`5N{U988W;B#7h9tscK>_Nr33KA9(xga`e&2ar< z3R4J!-&SWnfWP)l1tzj@@YOM1&;=gerf3yL56)R1CI_aH27F!wWFtTUyuyH8aJ$Oa zlZNfSncA`3+#1`1N^iIiJ1>)pfKr{RV@p5(bHOA_n`}>2gPSkb>$y<&hf2D2f4(`y-*A+7KtLl%IC8JOIX z0lO?01KIzfNuCoKQn3Q3)=7*82fN88w>a=1QGw-M9+YrJ_IP`8 z;?9P;nN}~I7eS7}4}y#S_^H&V<{dz9S@yr$a&H>4xp1c-OiuViA15=wI<+WHX{MgX z7RMkaXS{vv3kySb?5pW^^9yvfwGQfGNlhL@nC)0i=4UeI7t)=DOn}xNlN5K6&oo(a zDgliW0QE+d{Qls*lZx=WAINP|7$2sH^D?|FVt8)K6s*Rv(=oJ}cKn}s_yq($mHCJ_ zZYbv$16qK+x(EA5;lsaE6zi7=`|}oo#^CxV2T010$=7sR!4mD4<~@Nk2OTmJakaL? zkM~y_q0P%7wCEm=Qw@c`t@sx5gohf>2v=R*O(6L8|)p6sPq0=rZ5U)i1!<$Iol0 zZ?>(MRge4(hr}IX){4g`_>)Ay2f5~GaYqQJdjXt$)@$@md_6?bp|Hr^AN*@@9DlzY zt&sl=qt(F1EakdsLcb=^`;9gFo%|keOgjD~m;(Sy$`91LQl&{gIrAuX)K>C7PkSWU~eRj2PT+#C>Siy4K%}xDSNI! za&yyx(Z6?sP=W3vuB(oiOv2&yf(tY>6Alp2nkUkoUDg}Eu7@#T=v?A+uW=SX4LOBZ zrFAEljQMfKvt?_@!2cRHpwJ-97p4#_M2lS)@XuXDXXpgpk9vrQSc}fD;%%klS^DpUpbs0?Uy^`DfB2Fp>TjY` zS2knhWg+0P!o_a>uOOb?D}p(AcfFC|aVK%QhxhRql29@h%l%yFE`VoA$v6^#ms^Kb z<4DY~4!en(;gtHns$Q&g|0(q%XF4*l9j_W(`i&B?e!0(I#kZ>~r?F&Zzi8hh676q? zCyVf!FP0sd?4=vIp%r;>)I+0{3L1^l&c~(s%N;c59Os4Q3T=VVI-!{pTG0Kf#Bm>k zUV~PqQa$M?pE#~qknhhfA&mrlh?``vwz_z7&pypQ+ar?)E;fN&&6C{GTiIC5bdpPh zc5{{G-FMnrPQjB(YC2x*w$zh8YLM>;i*8lCbUQ_tSZOo}*D-dc23ksfCqe#o69QRBxL!>ksfrS@_ZMf>?;K0rfDt^G)i9P#O(g?1A2AuZPsZw zlY>YDK^Em#F$8ahrSQ5z@)i6|VPA9~B8?Xm)*)olE5|6F4Qyk694h6RK<=X%Yq2@A zZFkFBUNdZYBd{DYF=By4klnjp`Pj>SbAUEXG5iHHXz@_J1!O8-?;0KAg?^BMFLF77 zL^bCvwDu+)w+2%SBdXs|gPdym^PeS{U3j+P_>(Ekzc1kY!|=w(D~YsXCRbbExM! z`S#;;nloV?Q#Od}&i>&aGzVnU(Sx}F==Cq#Cxpt_#nZNIY!tyfV)jOoui&c*^#$C| zaxsa8GH+hNwV z*?tM=$qG}x&!&IF;(@=HaI<*4_T`)ZGAgDMAljqlx89n#)zT8*Z&bH*c|hEnubt* zSzbCdGan(v?SFtZ2r_c_x#^WocLnp^DoZi3cu$f14#v+O%en*O!A3C#yq<4xIR=kX zhNT@w7!b>9ocNz`#F0Q>M8D6uz!XzsrZL>K_3eM;2r=l2L_=73!EVkvX-?z!stFXA z)i4zU^aYf}4z5d@RJeMt__1p;kf|Cp2%BO${_#g;BodfQAIa_O!!o%21AC_=`XN*G zv6t$+~s9;nl4rhK}f)aLiPQt8p3zI6t=jX@UUM%i7+f^q@vd zZts9mh|=)3gCI;BC^;^4g*E8HgOq*=8(i6TIv%LeTA$}9c5#X213LU*o6B~fzk<0R z80cD3FBo7e5d$aHzgFAaDD3MUP)BFCSE%2|eoJ%r*{Iyx-A>X_LNQ=5cZWB4q#B@2 z^XY(DrFx1gmA4suo7J)j%^^38bHw!}7#_j(yaKGExAfgbqykGsLbJx#ljFdE?)bU8 z+vPS@5JD!u>Yj*l6)NDo4aA7`^yCfYSx`F!Mc$WhI&fGre~hRY%Bg;@W|$v$Ya(Y6%?60L^{kkSU=+vKf@^?|j_4RAf2rzdJ-5rzJ=#c_?T z5y5M{DhUW>Y|Dr%K!PnBfOLO^vP4*Bqb1Df&#QsYx6ibgyU_!ZCzlXdrSCM3>@~_! zw584eF>!D3eFU2=2pE2};4@S*kqUhd|MtyT5a3_ARthZu`}AVpWi}|lJq$Pc@f1>9 zxEsQ^`|}0~j}k4~TPI;8-mhT1eWAg#8Gv0J%Wj~GmGK7uh}$N2TfgIF1d zZNZn*^v9_1Q`d?|i_0&J}Tw$@(eE;zkalN_HmuwYJ!uxq&8 z+gFHiZvFKgFrs>|plC|Z4THq+ksZ}uo5&&Z560K$%A)(`OiHqe;O^r@{TzwVByj}$ zEyZV+c1-yt#?vUgbmk_=7M`^Io1*|M?w$5$x5?Rq1e^Orb6FiAQACGKHQHte81k+hQ5n%os z3R0D~=I{%!5IcG_w1so2gH-Sm?`D(r0(|R7h3`Uv93sRj<3du{3UG_KoJb+0Y#0tV zVb_{+hXSF?mNBc$k#L59fWvu@Au;*HsN=-D?vN42mz#kd{j_aTG0D7ruOF&%4Ufz0ZGXL^1%va9I!2I|b2sxDG{Y#vP^(>D6aeLRdW#U}%Pb z;zw#`s{kz_i9!30-*Q=VtQ(x(u$XO3g&6=}3s5 z5HN5*6w!8+1C6ZBxsrhCU;`@kgaLBw&VtguRu(1RoI!~p%2$6Qy#}1gH zCVLwC`$?aq-pM_E!BB0QRjtZ=cE{4@CLNQ&heFKolU?~!DO@AHskXbRTAKpf)eGH( zjaFVMIHXrQN5aYUV@Q$W=`^SAej}%$l1RIP?v?8NCACX*tt#}Jo`VybP)4hY{)pqH zm!Tbvkb`KvE04w2)CF!S9|6P=Jg4pqHVC4&^WXe`y9H1)9IHmXr+(LOwF72wn(6yq zM>;iiBsx%etXak^QF&@2ax0=O-B61nuavYts79z`$ilteA4=IyIT^y6U@$mzF?(J3pmD7S*XLR^eSJk5)+O@}(&o+KzAcwp_|Km_ENY1f=U**WO8$?orL z%MS80e*F@;39zO zbSyL(Yk6Wg^kNeBo821F9-hwgPkv#^?QthZ&Y}TPwX2ki1uI}4yGCJKn+#ZVI~nU6 ze!rqPr$ZB&K5Kv%hdethTz*#>5H+Wgtx<;bUQ>lL0#~FT5Eo4 zsA<~ZjovyQgXea%unjR#Q&RHJT%oJ>h>;^?|7xhZTN~kY5(sZ`@(NQiY3wbJ_r^Dm z6sH|cA58(K&;0#9O>fq1Rd{%OqmUX1pBlE0Z?&=~WT@A)2({}5$&8uPJ?AWi#y~tx zL5a){6Nrsx;%*+n3$!;Qx6=Kq-c@tgWvOmhm~X`J{#JtbXCGkh_?F0eHu~HfeYP&X z`UXfLQC@eYLEuyQffW3`%Q}Q6deZ^g8x4u|$!udbaf(z5Hu4ZVkF~#`;I@}iZIPlc zU-?6su4QS@A1uF@$Lenm7$Exz*CH?tql8K%{3fn5q1CX~j&@P)DleTuJVsugvRw!V zpeykx@xitdV1}QkG?MA8SG~i{VAP!nK)woih@25D>h#@Ln&vIqn$ewOQ4kT_RJMKF z{(utM4Kc|mP@w{ev_PBxtFW*{3!deDB`08^=3Soi!&A9DRqo%)3IaW{zPESs1_Y_3 z{$AYFZ*P_5Wpd1KrBx(tNqnwT9fqXTRq57LNy zp|=ru4CH>O$?~sIe)73+KCR(H*LH!xf!dU{mMZxN1>WNbaklOpK8dE8QN4TM*Yw^U zk)^Pae=)QMPta*i{~eC6PbW{VR}qU+S0M!cwT*g(x)Oro}SrQ@7E0Ga!V;_S+v;hyvsY8^@E$r*7 zv7#@&LZf{c9zRfh0%w%!+pN!D+CuI~ImRP_11Va#Jv-;{5}7V5u$Mi5sENZX-r?Ci z3r$IyZ8UTImB3ND4wzT&3;0Zqka-ex{@uIgLL+M---SD`{4qjghGgpo2ic53nKbFj zGRR8pAtgdzA(%}OvE+g$b~zD7*7b%xnuo;Nsq$qd3vNfJB>GtXYt+VVJbMb8z)!sE zT0VFe;}%oWmoX%SW-I>MTZ8i9&s&HEojux4tYyq}wJ#bzFZA!62&Y*3(hTBbtq-;n zk|I|X8W~shVF1Dbsnbp10K~5>w6r193Aqu4fe@GdFa`wpeqO>~ccz5;_ zcL=2!Y@THBiDQw_$0K}o_`x|03)wa3UdxP4cNq71H>isC%XuiI%q4AEQ))>* z-ziohg#iJoqMxfDhmz0RRVi>vSyMwBmfR(}7WJpbEZB=lFTUhfU>{vaY>K9?kCA!eD`)6B8O!RnboRiWqVI3R zNe@35)h*6XR53^k2vO@&q!Mb&&mrwDl6^`LRZKTfZEIoRnAA2KDCI^rdJvwMQWmV= z>62&w*)mTfZZz>%Bz~;42G|LoKGC*HV1cqK_Z#zN(B~E?pN4=xg8VkF&XT6`Pgjl>kl%2Uz=>ZJy_4KP?R!*VE%B=tA z|7IgAL529G*NZNcwl&!!r72s5JZjPAcO7Dc&?3K80`t^};(#h^dGwnyW5blZm&v%h zl+YP>DDom_Zl#`ZqG$omVDOgF^|3-70Fb4 z^>rY-WDqUL#r`cf^6&;s-21l%mZ1{-wvzM@*?!I{^z}Qg07;8LP~(WnSwJe}iyKm%xJ4W__V6nTG8Ma8dxGhA2#G^KTh#-!X0pxQu&BaM% zoH#CH<&|t(5jMhCsBA|U2vEr(S_(LVe(kr3|t6kL=e+-{(55R^Z(ewx?4Drq7z#Cc1w7{mo zhVUAw-pF_|kF{OM=&&&LJ_f?{4GD8uHUm>7skaYpO&vmB;~`YIr{0B5RmAl=vSdQPpD- znvO9h;Oj~%%aQC5Yv?tu2P_BP zTM>9|j_HwquBqvitmbhrpCDeS-c~wzlv3}KklM8sy0L^BR>n{brl#1UfdAR{O#Wd4 zLp~=%n15XI6pGh;)4&kk3EMkp%i4aCACxa)4NrM8&kK(D!m#1jqT?N$^uh`2Gpros zh@)p%+2d%RHHcdRN1`%Lu)s}l9200P#rmyX354tOs1k{3>c(k6>=Fr13JPEDg8@Qu z51dt_yZaPoG%DQ%Cjiwd$XT3{BA57+7V6X0pH25JK7Uqen>*H%?FQkoZw+t!0bDdr<}rZ+;YZ0D39m`-5iTW+U8X|= z&Azj=_WM3UkGL9&{{f(`alH~VE%vZu+rTd<$Bzttz^i;&PyQ8bC{9iLuH-WFBx4=h zNg}-Bd~z=jwc*blGBj1eSS3O%lgy$4@8cPHjV%IlFS<9r=W8l$EG$1isu~0@nklOK zAq+;H!z74%%n(iy7p6SGFSfA~NA#v6&#|u*%~^nXJOS-4Iin&??1wS$x5>m{{6KcM zO<>Wf*i1OVdH44BhZnxl=-*6N&A2>3yTPhcfFh_ zw$DT8kBEAh9#r@QU5o<-Wa^#-fHDKAm3zCyx*aRt0SK+8;f4O$BQ{HerdW+Jc7t0= z=sB;X`qdb{CkOM{2P7LU^hXguKp+lU5BexiIf|`<4iFvsD4mn;;{@aNqd8M&a>DBY&X?|+WjY66nfDX^Q6?$&if2@O+t^$O0zmnnf^^`K^hYyvk8~5RG z`)HsRVSFrqVXMmN0SBrs)glF*;#$s(mpf4AvuUuxRGokxga5>RQE#-=)|7Yd#x=Qa z3`ki*jNOc|cbaBojLID?t2Bw!G(%9y*P+gH4iiP6eobhh(!U*WaVW53Gq_<<-hMbT z>;B6&!v8_1E0YWCHg;_TkL(%!AC&;ui3z8tDq8gnuSj(%i7A;oMyc+5d%*X9M(hxC zL7;5$+UjQU&pY_ntIEb77%lEysb>m;@{lt^p7Nq|Wocy-NCXif zfS&~aKwIaSQ`>&_QJzdilIU92sIAF9Rl~!q2G0D_2#g=7SN3_)VEv6JU1Wj=CTloD zNr_K4u>I+?0ZxI-FEnY^nE7rslz8E|{8TX@foRVezPq2DBDRz2vw99wEofaXuKQB~esl7J{6uF?aH~k-Ov>@RUa{z@Qu0P^#EHxX6~Y}p zt6l^T+61cQRqE$Z?;aLz0Bz>D?ux>i3|&By2x8f>miYz^C&~MxwNLjlA})CgVSUbd zdbLM=wGZ0t?h5n%Gl{{}6Pn=c%z}Gx|66Cv0L)fg!LI)5XjM{KRg@#vC!-Bd9>*jF zJ^EBE+Er9*e>`rEp<~WF=y{oWeNPGe5 z$&GgSpv4XnJN?X;DX19&67yD%MYS~1LT$itC+S#s7wUCv*^YYI0BOoyCuc)?FC&eH zP9zk+>R3(_!^s_lil`glS|ybU$&@*1luSNImjUFb6L3$a$|GbGB9_k%0jiwudS4;d z<@J{luYigI^lwP-V~zun(TiLo&b*RM8xd)|xmY~CZ~0Gx1OFjtNCZ_8KO-V&88r{J z{p>>c68_0tJ3!8nWE#00ig^zROfBQ1jbpp#*MK^oKBqgQR?g&S6*+*&4z;@SqX9(I z(b~Z2Ik898S*4LIw7wRtG)901aHqX^s>=7E32($*f_a*2mnPIq;80)r;`7l3w_8Zu zeC*0xXPp1MzP+88ol#0d`;ajNs;VcfgmMfy%Ij{ts3`^tPMmT$2vZ>zoi|El49R&7 z4B1=S(YsW0oYL>tXV&UDg4htG{h9^z#a(TwIMD1w17Ui5 z#fx`O(2+u~$n8$#?sw=jB_8tk^`va7b{Tf#QY;Hp$4bMDQql-;1{<~{@Ku94zO(Pqi1O6p$deu&IV)|ySd62`(?12qA(VI9zR~Biy^OhF zKAPPz=aPfE@6I3V_;Gh}F%EOm;+5w}!?ny8K}*_hB-(#0hIGBqupKCCBTin6jPMl@ zxK6XnTtD}Oka1>D0@JMy=O4j%Du zF}9&9?sEb1Qf`P1PCS3pAzwmZBz^Q#lXg+WNub&JPhmkR31_glxIVgJPLDXRN~S#u zrK{`h*I7A*N*B-huo}ynji>(=rlrtG(kZoq|IwRj26d=X+ugdFFwcvVjPN!!otM{rSRIMG;V?Ywfck{HoPy1EHHJRxLcV=PE6vF5#6T(t_YkSU>DvAz#Y8(~kOl4O$q^_EF zIEy?SfU;Kc4{b5oyQS?(KPehdWTXWLGFSoKYluQ40;M-YsBO3=`6BDW(HF(qRS&OI z#m_Pq^A3@LiSwGmvk|%Dw6qOaLu{+dK73DQbL>4;!|8hleo{$ENNDrrs_cR{SsOfk zT^jAv8e3Q|#-&Dvb8uA)(pS+`N)?%v&C}hZZ3^0M({C8u_|5h1(f7Rz_aVXek+eP> zVMF!ERd~zPO`FDsJABKfjX6LubXaSCe(vH`kpU$vL%Ld=UEA=Y)OCk06UCuYMA77a zpJ#3;FkjSe!4Af9*gn7v34VFmQ}s$IqB~gYOCNEF+lxm^Q%yOtL-t40Kz8Q~L`Z0i z+Yx|inHNLz3J>{(fVyo6Zo* zow0A3wGkTW54VrW64?bG*yzDy7rb^s0h9A)_i76`8S-DTot^w1dSeEce@V%NuG zbHwmRHZW}FjWheR6lJNfHXW54S|cyf$L|`VKKG3LDS8L>o>GTGUe(-mpxs1ZL&YZ% zH^hT*P7bcH_v}wxNxCeMK`^!oDgwm3%HwYb)k)J!(uHYw8<<9)2E%a{4CDE51J_JZ zL>u}fTHx4>n(@U(sT-7y=LQCj6ztcp1Dj9J7o3JfGX!S=3-9a(vyeG zuwN;iL+MEXQndn8V4Gjk+^gb9tQF@~<)JmEXNO!k^6*{d}Zq8A`+KU#XrnL8TcfW*lQ0uVCR z`Ym0s(dwjz$*uw^nfUB*6*LZu6%oI7beS{x$M*aWTc?~$nnEG1N3v~cDgRB9x&XeC zZ#ZFQu)^}(G~)UmSY5`9D(hzET6Cm{9I+2^0N-i`qs~3E64+=p(zcD*=q8Vg03*mh z(L1BNJ>-25UEP&DuLydSX`a0@)yBR~p&KU2Vtc>7`L04vOcQ&MrbC!CUzNyCcC-ifJ{**d)vKybMg@$P0sDh4y#MdBk<&K!EzZTv}#1iI1z zR#?UxB<_x5!(RJgH^kI}i+E90vS3BPvDh-wK-0~-Z;T(}u8U~np11EKt-|%LQwvwr zW*ZjE;xrco8upNNU3F5hOJm0FPPUM{hRDq7<`yhvjz33VZLs&Ug=D`RIcBtksrnuX zgFIgkxy$}_WDWcfGvE(H=TmlRw$Hgw#17u;ywB=4`2ezs{&On2C?!Ph@-b=pF=X?# zsX8EORb3NopG(|{7PxVB#x$2x^}b$bg90vC_2;=LP}F}Y)UH1Sq<;uu3k)mHgNNMa zRzW_}o*8{eS+5IJ0$j`t5=xxE5pULZv5ajDwl5ij?1bhv#}X)P#4YM|kv6kza1*U# z1l$Altg^HpOGns942L@)4J!XF0mw0@M)@wns{BIYDKem36U8=U<@zYU9hi;B&(9)$ z10;xh!_3*jvo=XkN(-}s*M}kl)B&WEPnx6akApdHAxKc?JFZ%??J5Y`KlYzWp-{;J zBH(vHdc2nJDs*EgBUE-aL4hJXW(N85{jN`_iOih z#EG}h9cGtfWq4(P>iVzM4gD_+j8CzZJ%v7+v(NUO6oepQ`8dY@o7;Cll;AKDzHy3J z*ylSN&d#~0@~B=x559eZnW1A|KpbX}Eqa5<_r4?Y35LhsG;6iQYt|;jAK_L_tO*a$tatDN9wFs2GEG z#}+qjf3uPLasNd#E^>#Pq`?s4szo)W1xK4Fo*#TbMc}{^vJVRQ~e%FOtH zJ6D4+s+i%qZYAV`D6ey#DfJcF&{<7>ZAu!xgFuzf9*`zGhH-DTuCfd-rGx1R|5xCINXElb z#yQ#MKKPE`Y>PBVqDjuLg!Gk zB5oOQZ{l7MdZ3*or58-sJX5nGrGsDPwgS34Jan^Vo=p0u(e7?;yUh`Gqy|?XJ26%y zn%#;rVq3QRxK2K`XT{A~&V7$)jaZV~2||?$Q6fYQo^JgESdg6;02OBX;fBiRWCri+ z%g)<~60^Q1cfaEtgA2@@+Qiht_$3z4W3+|cs=YMYmsak>tmH`5t=HhigB)_(14u&l zZC^EOI>FyhXm{oZAuA#O8SO>Ck$NUxmM12BC}tFKuvQrOQh-XC&YYSNpZsng>wc0L zuD%}A4ErOp-s?Zg)CO9T+6%9KSMz0uho|smFzeBP_7As3VkKpkX+YUGIwmviT?-1D zW?N100=E~{!Q2O>w?C&f&Zr*?>px6`P0+jHxvjvo4T>xxcAh}_f2epWI{nl%ZV1|} zs)#N<7GcoU1e=PM6Lx?DXzbyF&-Gu=rQo7)o;nfe@>^*JhGl zQK}}fPB!ITKwD9DlT*!`rB}zg^?=(Fl5HBs32ma6uib!j>$fpB*!j^` zUhH(IaZe1Cb|(MZ7oT1=r_2voGA9&C? zxnNhfw2ZC(9UF4zKwoc-#|~2&1)0vM(Ds#F=0ONL1wX}s{c?~9cm{Pv%d#mes@;|^ z@iSI_X}TC1pT$d}BMKeNe>}HSOKZn`nD}sDJo6DRy$|KCl9swz`cr^-hT;8^9V(v-E2cE{p8>Jkf|2r>U0+kqf9kQ80iGvPxU;CO zgta5VvB%N#KKC>iPOoz4s7(z}^m(h@ZC~xrfJUpsr6LCNy>VudktYIKcdLK2)}?Ss z`u|W>?*(2eWEtM-R;NoPqGBE>G9j`Gg#pR4?(v8HYiN8pi(N_}-rH|(qH=qmNj+69 zQ*XsngC_3SI&PsdO{up(H`*A^h`ZSrHwIKM z@B1lab7=(m{KY@H8}Ou2Uxh7c2xxsG6eWUaGfhNQdGQOkrgq%%3EvxxSttPRl6Qfa zKTN(cwh@62LW%Xqqel$2sr#Ww>tK=!aNsaFeu?-fo)I>tn|8qVdBv#R|C9O!gzbOZ z5)|YTQ^GX&QO173ZL?JZgc{iRDGJOQjTiU4R^Q;ty?=5nZLlt?P}NYGAn9RKe@-28 zhWxBdyZ*==Uk;l2i26|aO@ZBG*8#Ux{HF07OSgR!d)shEuGf%I$Q#JHH)J+Di25d! zf~WX)(0sB|HR1f4H4XmtO(W4HHLz;>uic_%0CX4ok%iKlGRMc7ThTVjGpBKIW@iVs z?Wy3{2Z?K28mooE7yx*Q$)uaDxdJ3drwBrr4?aI?0B5eBKRV%mf0Z*x_eY5e6UET3 z{^hU7l>adD!a_>_MDO}r7TSuM=OKq-Yf~?3HFxN?m(iJy zEmNYp5yY;jYW}W8cf$-`3K=Fe3p#q@$>hT%1Q3(^+j{a@?WIzl}1oiOH=SvmPvd+ zWoiZlgV>hG!DsM<^DEYWoUY@~k&r27HbZHc?5c;gYZT~#skOtVkyK=_tZ7#rF#zj0 z!*dS}!K$3*kbKEa)cKCd=!LKmDoWQx3IAsS=eu|v31t#+`iFPzsy`)kk71zA`YWVV z*d3FJreS)%@wP1>tT=Xm9>bF^fR7Q?ax(&kD_zO|f`=_`76=7No2XJM#>pCuG zS#TIp_BXP}w|AX992&Tp7NEXI?qbvY;N3ks6H39)QI(?S-||K=;ObRj`bUcxxC#Dv z9dDFX+95s~0_t4{MrHXzhc|zlifeF`*UDJ`N1BJP9RP1Y##%P{!mg|{R1w$&8x~R9 z&e&Cv`8~l-f)1ncAL5;>0_o$ z^ajI*ImWhRL|xb9k41d1bATLe-1-X)jRbRj(!v>3w8Mk^8X;xFw?RMn=QO1#wMQR% z_Gn4K6zRs+LNg-S@_htRAg;R#+3hc@Hp!nJ*_D^Tx8l1 z@Gj>K@{^&N;ND4JlZm3560VXTqZ^$YflYhBcfM$Cye<^O#85L@{Myfdosj#Jg2{=W z%B^3EXOecxe-Y2C0c;A+7_pNu5>*0DUxTQiS0u@MDAwO6V;9xswQVNcHQc<(XmzK4E1cm0{MnL406^Q;aUyK)s-x z>ZQsK2+pZh%?x<;Y-x8ob+QP;=4+J@jBoxn)4(fnb=-TWve$^+wu{YWiyvkXr@NpC z9T7nfQl@ElG)Hw-A>PeLJFi!{zNKk|gk;m=!V@w4zwt3cl>snMHIlCvzvyY-o72DI zmf*(pzaJB*_PUbwj6y%72Ml-qHc-*hu2b4dGV>D=g#SDyO5rqx8GJ;ya`!Ax=;qhp zc}D?~80E*)z+#+Bq#WSJC8(Gu_bm!0`u5Z8o3B4r~6|I{l|n^4SVuCr8Qo`Q%7`%bMxVb(ttv^#|t>~tww6ts5+uLY&2qpv;+38 zK@9|=P4(04h?smJ&I zWrjT1aNJG@yc2h@Sz8OI7=SxtX76~F`4Q^V8$vs ztF7t6@s^h~+h*Ukq%MAlt6ZNt`lsJ2_4j#7$~VAdOUGOVV{uDuVjO8@)4g%q-nMR2+fj%4eEpDzAs18cniMeIdTI?3%E zr<86ul+4^ZmRsN}x-Q)-LVjfCk@(QcXy8&C*e4!*2m|~x#=;kYBS)US>rVMO~PS=%PJ>|1ZcC7@qx=o}8SZ}=T$fdBWe!mcCX57ULnjo$j{P!GaP(##>Qp4VHb#Vyly_JHv(;*ozS3oW* zoeBWq>gX%TXP{>`cPI73Y!)WdBo`SlJ0Iy?V>$ZU?0{7KUyxStPR$}wO~4e&v;P<6 zUPIYF6N{a^zTSnk472AN_Y`1h7?;#&XA>K&uPdR_uSW?9; ?*eP*WfUnmTl1Ef_ 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

iImvnjkOeEEPkH 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 z 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

_5HHbNJl^8izZ6gR*E)6!5)p*>hW? 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 dyXov@ZShF61ex6zxe%T8-n*b*IH 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 z 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260509/20260509004001-Config.rsc b/MikroMaster/20260509/20260509004001-Config.rsc new file mode 100644 index 0000000..d35722b --- /dev/null +++ b/MikroMaster/20260509/20260509004001-Config.rsc @@ -0,0 +1,4639 @@ +# 2026-05-09 00:40:04 by RouterOS 7.22.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \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\ + \n#\ + \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 Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\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\"; \"mod/AM-\ + Certs-By-Ident\" } 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 :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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, 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 comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\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# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260509/20260509004001-Diff-Config.rsc b/MikroMaster/history/20260509/20260509004001-Diff-Config.rsc new file mode 100644 index 0000000..7b0cf63 --- /dev/null +++ b/MikroMaster/history/20260509/20260509004001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4295d4294 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0