From 17d18705619b69345db6d3a162da21fd76f20608 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 15:00:19 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 15:00:19. --- .../20260512/20260512150002-Binary.backup | Bin 0 -> 302653 bytes .../20260512/20260512150002-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512150002-Diff-Config.rsc | 10 + 3 files changed, 4663 insertions(+) create mode 100644 MikroMaster/20260512/20260512150002-Binary.backup create mode 100644 MikroMaster/20260512/20260512150002-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512150002-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512150002-Binary.backup b/MikroMaster/20260512/20260512150002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..6c4fbd7dfa1e9bf7d38f2e3e2475e1ef7b0aa491 GIT binary patch literal 302653 zcmV+aKLEh*sF8C$o&*3umo0#L+NkSnT0_ej{1%A-000O80004Z`SAPzLud#e>!ZKe zzc_D(pGA7$uG=s3aVec;pypM0aO+l?B$4Ar>8ThHA#3ZRFTN-j6W*{CR9+BOnB!G~ zw)2W$TJu?-LyOt2G6psWz@h6%g)z~ex;++r{e)C0kf&B}MaPx}1ob$v=A?_&1y8{8 zY}dANt8Q{8u8 zxgUA;8@*;73w4?)#FMgkvE)m2eWf>dkWYsViGE=);A-U@8l~F%V87t$A^5Z9D24vT zB*DTdieX~{Cf%uTuWN8VvceR}Am?5&ygj=3rM6A9m!h&QJATy8SSdasKUv|b`3@?{ zk?K6H_0)7vxI3UBTV{luZ9QgaDMPXXS+2|6vFK4!4!$}`JAv?MCISGh<2O6uW?8!- z$>VV1RkD`ZNK%8bDh5zhISFWq$GN^c9vg*>=|H2wg7-gjm_+_DDsVT}B?{ zyqMgTqw)FGAN0)Zd51(vbb2?6=X>_$YY+na;PWsrQX>KM|26MG{i_@^T_bvOTt^Mp z0E4GjcTggQm>LE}27Ft-xD&t3TD#a6Mcr9e7Aua1vZoMyRYNmUyaZsr9awrq%@;Xf zi2+aEwM0rL5N5%qPRdpEU^R@;u6hT?+uczK8J>7%7dAcOdr|S^hG~bYhz7ymBN(pHFPVa0-2~1O37aA9ce*n;}hE+67^`?^epOwcOBJkC;NZzwrkM(;!{z|=u ze{;0H*5a|C)Du5fv*4y#xO*;YaG;dksY|nZa3i{+hW|t`JMw=sxIQ(-WfYuURs}q% zDYDH3<<1Xw$dX3ae^@#%l4jat*X|$8+x121%GmaADPj@5# z{D67Q?WF|aQ={0B_IwV{17Pua|CR<=GLy(zXV8Dq8$iyS-&2;Y-hv3h;0iJX`jHB2 zQO8XYLPO*PGnd! z%sp(iEeF`<$O%t3?4t#y6eTLeI9f&X$!e~A4qwO`#zdrfX(&*0eG|_&!O&Qj5NFf` z*mY7vrpg}nwn|2Vqn9icVBhzD(|D)&2cNe?SB7|7P>)t&^0R@m1>52(y^w@vVuKJxj4;t^UDaZ=* z=}6vlruM~@TShj|2zpJ2`xM(Zb;GvVtqI)LvP_@3`JBK{o%d=B6XKtCL2WULviu&E zirzZH`Z!}M(g#R(6$R82YMUCPJ-Vg`cRRES^`=8fU@_2^>>teqM zf5UOat{e!?RG~!7$~g)>co+6VPf;2^Gax9j^d%hcjJHs= zImSlz%T>#9Ife2ABkHbN9Wq>n!6fGhp|oH4L2@Rpa~zkLwZF8zx)T4F`Sk2M!w&*~ zq%s>ZmsJNHZoI2#L~)VN06W_nVN^&73{HgWe;}s<1w&AZx|uVspt9V2G9MO!ftmFT zRsBLJ>S5U8SJ^;vTrSIXO+M=CjN!H?eYtEeb`qml1QXXMZ!X#0yW5Ww+hE2sin&Yc zCnpa5z44wVi+8#*UjA$f#QK?Tf|oy$cRxhK^bwW4p{S&Z-}0>Z(}{(cGMWvYiRY{f zgfyd_N`v(vcx)n=!OQN#-Q=^vCs_lo;OR*n(36Hdda5WMLag-ripYbw9#}1{WIM!_ zK#`KNUY;nGon1^qNUNhK_P5@ii-*SQl0F@!PXyS>_XfF~$@y3e84 zj}0V4?Q;nWEzO_oh699JupkPEM2)5GR2BAjNS7Mi3RAFT-3?e>Ysoc>K(>30#8~o7 zn$+Gttc$ZrbY2$>IESOWnD7yj*tM2*^t2XNA&E$flP)FpxW=d;cD)(x0V(5?ZFNG} z$NAOV;6BCwD`SyYI`1%T-~XWt0zP7uNy0i+_QcGq1-e9Ygny);J(>c@BV9vTbfjC& zhMN+djvIebvvprL1kfp=B=<9bAYIyNos6&ML)EqLHqbsq{E0k%n!gVqS3K0?+EQ6) zw*q7l0=CJ>_=4|!@V*S;iGhW;{OP+Am)?WSFg8EQ56U5s)kkjXPzYQ6rx-41%jpL?a}qu4N?O5r zhw$Ar>Bt0Klmql=^MQl#R!x%OwFujUoi#LRa<>y|!eAV|qA|CxG5aVAO1>@R|5AS& zq-rMAGtu*4(9!EYsPQ%zY!r~`R_j4p8tY$V!=c$6T{Y_~ zq^qVKPyIUno5LTDfl(ZHif37-nyB97?LcQ+_baRMoO3Y>B)jUXjt4CTl;|S-ZcUfw ze6F4KF&+;E%u-;uz#ONKM0crmC7rF6qTd)gQe-2h8MT}q76ZCEv z%(rkS@uN~V1>+|m8CJePaBbF&O^B$zc4Y6V2+)dGfojYGe**Vk%Tvl&dHE1kM}-QJ zhal%PR!kT)Q2eE;~*A_ z72L@(?(XT;OqRV``6rDL8$6VWovEh*7mSb&r9hTIbNURW!z!|Z+^pwvtD)Y@;~P8} z^gbxnZKlUkHAwsb@_^p*$SEl`kHzEK=%~5V9LDN6F?7NyJgdLK(dqCuCj(;$PFsjJ z!_@>MEzM<*4t{$uk=K2KCk(NGn~=W$#zjM3JTAW2#Ccp5w-ZUW0i_+Kv)t|ZtF581gS2@bJ_lF{V0RyrpxroC;odI#F;#Ouk}YKQ7(0$U&AqU-H;HA$12d6EQLU}>*> zYm)QL0oHmYKk+I?+3}LS;Dfyd2mX&@>xK*3!X1E7-*NW{?CF z{P*l`i!?)Rqyk~J=GJvP1hWqXEL!>76aCDahZ!M5n67GPZ%2)`-@5Q&k1FFFh1kiB zUn}teZ*|OIX6t>7AY+EJ?VJlu5h`qgzM1`d8hhd@!9MN=?NeDEo46P5+vJT&JArS* z<8=pJWh*0-W2teeUq86jWIH7dytPsY<>r421q8)5pHUG_<&&%Fad7;p0x7}yldUY3 zU<{fQAmB+gr-Mm_eiB{Gm!iJGF46*Z`yYfL>&%76Qu1AqdEx~AxD2|Azx!{Du)Af~ zNcNNG3U9=|-75G8F#*#^4LP_gwa@XN58%6Zwl#7NHq8Xi#9{S($7))5*oIeZr1-Yw zC)t$k$1KK8W=DzYOFdXow}(6X})?0BSQhNg{Uejty>XbSUf{vWpv$hv2u>!k4dbiNmqZ^ z2o?I?8((}NzWvqZ4W8(|f=3#bwSW>Oi_ED^NB5muirqY$YE1eSQrMd3A$>u?c50U_ zwhDa}&I4BZWftaa2gh}Cbgl~Us@Yux3%%^8%x|n9XU2*fJ)hQ;q|%B$g{X!omGEQ- z>CB$%OvuUiCyVaBhzL#!lKDr~joBEg_t;s>c8SvO=E?~M6dSZcF7h^p6$AJ=z|&gp zgnKxI;?4K7a#Q~h49$uDKXfZ$#nf^JR84sQl}3;jf}?bwwXO1V*vRQpzPI6+$vS09{s0n)9#s*GHe zY>6h=C$O+5-guvUOb^d`=6Ak?;6a^ck>`&OIqv%rn~@QUf_=&v ztmV}-%Lpl~$D@mBy@)@(u2eoyvw=1gMDR3NGC&ELh8GjFfmI6`jaefpq}1eMIyy&X zi}*7c@ag>qYae)yIVyw-UCyu;#1Fg7=j|}Em1(e}qy4+J%`{m(zWnGQdktS01naq; z0l}S&;MoD=q}fyA>^i*ZP#_NWGI{(nF?LM}snHF^3QLrlWAYTVNOFkhiVdS+&0Y|B zs({}bL?p9Uj41#!R?pmtQxggWE4*v9YeykY;L5nvXHdH&3`4e&0Z37bIt^*=L7f$9 zYV4x~5AGr8+E-bN9XK>t{#O*N`V4>lbGUGCWKXVp&39RpJQaXt@*~S=x$et+fgi<`$Ils zoSjipS?swQ7YoVKv}k|=^!gT)SwG*sEdc-D_CF_xfOynGzeZkeuxG;gF$BX))7)Zi zCU#X$Vj)+6Y{l_`(gdh}E%F$oR1=e_NRGqLjSVIR(qx$dxvFf}{$vR*2e}qorp!5I zq!rB2(gX()&wal|C1fTNtBdyQ&<8jx1Jo1&gyJ#j8i_aJd;1Aj1_$`eM|9NM;UP`B z@&&|@`!2lpIY?#nS6-H)q80+U%T+ykWOttS1Plnp8D)e{92;89e~Uyha0$5+T5K2CXV{eePyx6Dc2tklSx8R%-5J2$-Rk4# z9$s({)D{o$b-X%GRx^3j5&D&F$|8rs((^Uh0FqN$!8|pG7McY}$huujuQrDgui(8B zEEy;?9kyGX@~=ccpF_Sh?F%!Sk>uPyEd!#Z(k7*Ug|1vF_n39bY9MALvE7x7ifUT! zJw!`AFeM2`X|j3Abp^=ZI^$53rG0QzSB+Xxmf2p4YgPza80&m9(4q?#LzZDBqm<^X zRLhscLfwZ3-HVweTb?R}=q=wjQ7_UWK{P-Ke{O_-gCsU{8)jJT#JLm&{+XDUEYc;6t-+&-fMD2$6X+F_s0~0sgUEH)O@&GeF2WGFd60pA9FOi zpzM;=TiiKK%I+IrigKar!3BptbW{MinDxIc349TMaH8f%vy79p1ZlSLj>=iN3Tjvl zKC%T;YWu0iyl-1hm!w148rqCzjU6yvJVR4u24|fvp@+qmkfeg`fx(axg-2qYZ+(qn zxi7%YH|ZHFjskDN7PF&r4)t_vFJ>wAg*WL*JZXuI()fuJfnn8L%Kb zL+F+*DfoS@n1yoUMIUZ(K+9;uZ4CMyj8f{{hy{eH#|oxH-6nv$G3g&qC>wfg0`~e7 zO7An=&Y#(MIb$mU|0E+;%+-sEhx*0i)F6Fb3k@taXJSS?zr-x4@F>TpL7k1*5xGzm zLI{Zu_&`dJo>$LL`+j~R)L7g$`6ui5H5aZJgn#;J5&WIldPfwm0I68Yp=5+m!1B@n3c16vQ4 zuwN~oT%8b={xdqamT}xH_d7CLM~^TgGp%bY#`y8O+B*_8)HL@8ahsAfp12(wFMOSF zwM^=qH)N12)P)c5q!*mB*UX}$3b2Ia!^HR%YpFFEk@yuhOB^GzbHA-JEpuaR!1i>1 z#vKxt0+w$hxoC~4-t7LV0{0)cyc3 zAsBdh@}A=QqEMwqo?NB=&NiC`jE1HAPq&_8rZdHVAdSF{q_p&*&nQ=}DG3oc*ug0~ zPc+!)VdK3)gJ$hyQI3@Yf+qN(EWBP+py1pM^d2h;=epfAZ#gNO_TzkZiV3hbbYN*9aD0U7sAT0})RvzN4Y6J1BP+f}|gq6D(Kx37RBR2fU?>lHSd6RUR?gsU{z01(gg;bIzF_9wj z5KC2mj9p41mc*Z1Tat0>aW*P41LhySFF~*1sL@u#67|#+i~+^=axfPkaiB{Cce1N$Ur@ zDbKZb{?!)tDgtW@7FclJ)Sdt?{Ax>B=4K_8yG>sEel=$POm^_$;_BQbHI!{s@%e7R zobXly12BC)mX?s%kikRI-)qZw0(v&32ig@Bi*nk z9yN?v+(Xkl;kQdx?6*N<$-AwPJQafTdRZ{ii6CcEy!RjwBlW(z`0S6Bv2@<1E*OXf zX?Z}wLplt!Ylq3z>LBsQJ2+=5hspe>a!0d^zHprxkr{8q5V3wQ0Iup?W%cK`DDFPW zJ`>@Szt$)FN!q?Io3i%YBk*Vg^(Q0Zahq?3%C+*7l4SeyyloISCXBih3|{|o3~~1_ z)G=2r^hG?LjKpd}<9oP&BL20LBI@yBcudzzH5V!|>DihKnY`iTQ~Es$iEedfjd}2< zB|5fH<$-D;(Dh_o=5_4gg7JO=msAY5F9?1pJ@bsGk$4C-_xt}1hlF_CYmz`kZ9cy@dyPS^wf6r)g4?{q zT4M`Y-zQw~;{ya)_AF0=Dgr4fD-Z<*>IyAA`>J&C6TjJ~Y{aOt;|!~adZ(n*TbEk( zput6A7_Y7$PyZ9sOQ;=TB&aKW%B?5=QwOb<1`p=`(6cPX>*p~0b7uXD{FXARPegqU zRhGAvEP;BLzg2O}c0jFES6LHSUj9hC#^`@FCcUoUv1j({hTR{KuhjI-*>2r+(zy6}R1UKYTQRN@Rqb#8reTuhp?>$fvK z5$7B9bK!IOe;zLwOR?;Q9yR&}{)_!V=aE?>UYZKz#xZsBcA;Mc+&SBR=qO&j%-t1c zV@5${9wq6f)I)S`_{aCm*sNTeo5^w)3!EMF{$da0>>`z! zuB?#C4x4mKi>`dPSe-){3o%e5LVWsW@?5@nw?C>H0-MrdNrk%A-PUm;cPBWiugT)? zjG4`4!IB^8`P~*Om}pM>3j^Li1>#mA}+S;nXu>H$7Q z8^4zLlhS>dk{Sptm1W{KCZLv~DTaZjL1V6Q%ckkggr2ZEmj|`BU=#D>{}gHf_*_P9 zueqmWu9TDTT-}z0ULCr^7wR)D0rRPSPNQ;sO3lv}g_cq`0g)hZzGeKSLI~x9 zRxRTAe%-+XdjZ^*lpy*m$cMHHG#(Z-TB#YsFo%FQ9sc9Gq#bi(JXXolvhppl#UYas zq&s0SA@;GgBoy$b^;UOEYY#rIVWed6WhYCm+bniMbEkaJmXL{Q&hkO zn6LG7ch~p6y_^)b`^n_X9tF?e>rDA3rhj`BX?D+h1SN#RXc@IlzH2x;r2tNhHs}3aeD&v{Et>pOHi$#B;yVB3Y4vnWHL(}Go(4_|Bhku%8 zb1*b*k!8;Ww$2dEqLrc zH|z{3G@kXM-svh4nLqFH=XRM`?MB1-R4kOse?KF=^6HxZ6u3;nWr=|BvOJ4p9m5=| zV!@3Od*BD7ET$n;e|?>(Ny|Ja=r|n(?T9TTc_%ELPozNVL6 z!wmqLh5Z33LM5IBXB91UyVf2hq-KULwGz>ENy)>`!@i1Spyj7Zl{x4exC5%X3U)*i zH(mYsZrTwE?j0$w>_GI`hScYXk)1s+p~p~yDR1n&!O=q7Z-PuQ!TpaSZHcig8xNl_ zTMF*dXj65xn8Ax^!R4xvmwe~SYd-{ILgvd;k#MfJXa7dNd%giQ=qOUJg zXua;hQ#qQ5TkmBN>SW5;*b8jgz1?r~;(Q4g8PqRVIv<{IdPN8137bTlTvN!RGrWoL zr|+-#ic5qVZEW`$j+^n*;aqJSJUmWn+s2a{=cEz{eA0P9^MLO#pLr`hpG^^H*1t4j zllbRSyJ8G>=@+--KLzVo8NP`mY0G+a44pCPaQ0YK%80Z2ltCDG2sFaDoVU>`gzR>& zhlJH93)S~DIH$ORf_WuY<`x_`Ht9$&@cWyKho+JUJ!Tr%ot4Yn#zut}GoGzCk@lfP z%kz3wNAh<;og-v4`!`)H0WFBnl-r}Pxr&>Ib{kEx$T7kiZud-pm@~&_4|C#|#sgmv z;QO1?uo9r3dfk`qIK+w^A4a7E*-WPBwRY=ZRh$>;#VE8Iv1_WR6k%@up0X(v^`pOs zVe|aH(ukaUjy!m=jzZLHub#SROhNl9`GQiBiVtW=3#G|g6MnAg!|TUnGH3>FCfC0O z(2bICI^C$iY@^4emkez@>_FNdx)C2Asmb$;@s+J?lvj#U}e|PXk%Ak_Gnzib?Bdb z*g>1m19d(aZ1uhbCK25*R#%Nb{N8ab;{z`dxOFsgQF%ml5_U7-O<9uk)GQ^9W8?F> z{Cj`TRo0GvY2PYV2Y~pYSZU@BN{dYQ1idfLm%-S~_-xb1{V($-=~uMTViR=u9_mf~ zZEx?}#Hx-vp*RHLKLl@HThcf{A%rC?kik=a{DLL(Pw+m^9gpmBS~^jiY%`Fd_wIt# z_6t_#d5U?;YIOQ2`^~WC>P$gzGVG^5WI<)8uhxfvPe>kfi-Qd$arCSK2q4=CqjD5G z=?1bhGKQDM9kz6kLTq7)O3>#q{*v!53sq!Tw)#*L2*qY=@oQ5=&|gR%Sa|geZ+-5Z zuYVKF9G~l?8lZ<@5f{)YjgnDuIPIm1v9=Csg z?qkufFkf(;bbQsm9AaCRurkXpkEZ1C+)MhlVm7kxWRX=Dxi)Ua+Xk9Uu`;B)NvQ=M z$UnA!Xf=;e#x|PJKdD{1BRK%H1P_sOzzr!dof6w;F8r2Ole0@~T%@s7rYni(s?2N_ z%v{E%5{uM#^il$&;+iBk7jEB)bD3Mv_ zX+R>fv8i3=ysXY)3h;OUo?GIq6AUY}vq~x_+pl_X1-F|fz-Nz4jq7y)*y8&_pxICk zIdhB~(iIi{2I@tE#|QI_Ie<=coDy3-iW;D-NwWPtmCm*0*r!;XH*H<4b~+!btwG8t znApBsK7>FGUWLp9XZ0qc&1t)5tb`{eC$J44*Yo)Fb61N!b2iy+mO{7IL|S0C3_BVJ zkj^u;R6k26#Jk2((TBmFlQP*UqP+&O*O*OMwxP-y-ZnU*2^_w9c$X<2a+{H{f-Vwo zJC$hVKngV}MNY_}IE5m%ganr!>P_>7^qKWxM+QgQBoxP!9)%rDCj$kApYniVVm@F- z56`-pnzJm?`T@Rj44$Y%r*b;tBIfT0kq(DRk^!HlAI!yRk62tx-B?sl1R|_kMV9Ds-L_73_rVu_ZIB?Y=T>76SE4WyHUs$4*X-mm$yVIk>5t!+G@bd10qMzx?(mSj9`$?RQ zu7{2>U zQU>RpCw>|3nLmr3%nlG3nBLyZuU05#Ipp5aglsGS0?+|gtUUwoxGoinidjK@6YxMM zsZ-(v-N~uNU4tpkN-w3-Y^eMEm9ytd^B#_7u2%@UjjFciTGIOENz@M4JN1*5aa`^} z*>+9Aa7BI(orDP|`;JahiowYr^ogW6n2!;l?}wpC-hIlW6&%>OKH`H3<~|;94d4At zqCCD|pp{BMds(X>E0lB3F)~ur!J)8gMv=y;^=PacNCPQF>VgU5hdp1uap8QUojHg) zlEK~)B+lHgZcwy)Sp7;?_`xH_<~L^%%sH)DF2JVpBx~d`@AUp8HWIQh)$n`T(SfuW zTKBl5v^UUf-tkAkWVFs;L**Map(~{O8lV~Tjy4Qos0qTEXxvK;fL=` zgQhk%O~sD%TMG%e>uTLp4vrZQSnoMa=7wVmw2nBwM*@sPWr-!FveYd+tN!ME0f_b* z(iO+UV$u#kCotysG3F9(MDjD&2)z*tzTi7o>3!#qe?0Jr*RlHl6pMdsM&lkd@EO;U zOnL;@3ujfv@&6HpV}CD(b`#y${UAizRPJ@m)l!L3G;cku>U~o*;a=cdFyHerAt5?& z`dT#h`iibIjYw+RhKj%+Zg?_;iTA-cJdpoZlF?(T3^^JvwSfCa?GZBH4m#fEdHq2L za?oFWp%z(s@ZE}cm;Rh97uw=s&Og3N6;Ku z#Kd2x!~p_$)N3Wf_uRB)I$fJClvLmolYXJ62mSbXD3uC!4KslcwhQ` z+JKFBhAMW1{ws?dP~|$M3Qe@<^E1;+VIv4GKcG)*eOSgr#9ulu6UugI0*jUcbF^He) zMx4V4ruoZ<{#r6)9VqLTu`0;v@Znz-q~b6FbC29ntp1gowoelzKe#)(E2Gj@A?-$x zBh$9~GeM43t{3O_#Yjf*UTggWCYuF4$p>z*#n9Cr%xy=tyv0piHn6$zoL;nRZubezgo7e>JcRjeE!9LJYrt9IYFsSP$KL7q9MipBB5l0=8a^wm$EF zF^9m)C3K(aJ6i?2ao+pvkm(tJH|PbOD(1O5qsj}^4c5B(Q2?S*y$2~r>89OkXZN;0 zo7-+;@|R+>bM^ofpnDc$-vxJ%Mg>Mpk9f88(sdv$GHKS3gYsz~cTr)?hJaQ+m}>2Y zk-X+8(C2F9{?oTjPGy2G^DOl)+EHI*%z%c8*<@Hh#i%@;s=KDm=Bk<$$9B=wY$4P2 z@#z4TZgn@zbMf$BfR{P#nSBO8P3=f%%op)k__KpnN-x39uaIMtus|Z9;W1!J+?C8D z<<8KO-2|^?F(%FpJ84`Z>D4TTBr6G;!{^}&P^JdtE#AOe#;gs4-fL_i`NNh;r|L!U zN)+S^P}JqeZ-qvzAu?7kiSv|FnF=mjYa=VN9{TfGcvZJf@frA_*F^RjF1@7M?kCn1 z>5f0;t>i<3X(A{8%;CId6tV2_$mDWzy$es4KGIViSP}*s*oyNvNaK{}k@G0<_g3nB z9Fa{7J)lpOX57EKP@=+IFwcTu`7C^X{Mwy$cGe`KI`vM1-lH(pXWzc7 zu04AUeEv27IpB~>xu>6<=gT5YjhE&X-rFKPnS`5!PgtdY9Vxuo#YfOHH*%!Th{t>; z9uT8HiHPLG<36|dGkm&~W;!*(s?|%CD@iIPQo{d?er62)b<^+b{6bC1iTRN-Wbf8H zNXG(QP#XZ%mWT<;;c!e&J1eZh5!M=vH@s^Cu;{GWfy&kT^??*4bs-#c5oR$V?7Cm> zSaaIPs*H<4t#8k)asehp39KCtWRpGF4H)&XIO8QN(^>#-zOFnZCcWE7xB12v>ff6& zq#>#sjDsXd(K1gg2>iqlwCbc6QEKHwTzxryZN{8-M20k;Du#|evAM9wfp9Ov04Cf9 zEGvkUUaPGPz}%C~V>l;u9?$2J1AZ@u@5g<_mFU6p>a~*AlMWr>W~tV`4L2DU;%I1n zxZyZ)=5GrKRZ#(iK5jUCW9>uCz1|31NJylbO8Y#NE>CGC5|$JNsWbzAsYFD*17AL2y&$W7UAkh zV)^W|n|n$yJ6Q0y6`;&Ig;fNO(wzmegi^9p0QuIK3sM1nscVtkw&GA5SenQN1U6do zO!~B9-0pkg0MN!sVo^E_5RAuIxd2_w#3}y7O{za+qoLmN&gsEi$@WEaf)grU&=(G} z8OrKOq0iYJW{mF{^PvbH?Ol&GYqZvXTlk*zi|uda$E@11WcW_MH<#i?C=Og)_&9rmU$pWsGDGztd;9$|Z~jwEB;#S4~ZAKLLeO=uomG=&(y@z=^dySz)b7=M+1p?mvo z_zKl>;qbMokJVz_mFQBh%Zxe{>=p`5O6=0MKHMZXKfGJyJ>qfT z2Flft<8d0v%z?HgvybzZ8Eyi_NBn)2S8oX&UNe=hR~ZhHy?h{EzwXF{K~YHm+&o}Y z*yzI;D0*H9PBT&4$3=K#1*))A5q*_YH@#UX?c%#ZlMU(_7OSXOy-0=>CA>C?^68U8 z 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

U77vn3 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 JO|DYz^3?\"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/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.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 +# same mac-address as ether1 - Unet +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 +# same mac-address as ether1 - Unet +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,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/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 +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set 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,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s 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 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/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" disabled=yes 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!!!! 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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=104.20.28.254 comment=dou.ua list=FuckRKN +add address=172.66.164.200 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 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=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=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" disabled=yes 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=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +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 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=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-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +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 passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +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 passthrough=no \ + 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" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +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" disabled=yes \ + 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 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 +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/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 package update +set channel=development +/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/20260512/20260512150002-Diff-Config.rsc b/MikroMaster/history/20260512/20260512150002-Diff-Config.rsc new file mode 100644 index 0000000..480e93c --- /dev/null +++ b/MikroMaster/history/20260512/20260512150002-Diff-Config.rsc @@ -0,0 +1,10 @@ +4299d4298 +< add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.3.81 comment=xhamster.com list=FuckRKN +4306,4307c4306,4307 +< add address=104.20.28.254 comment=dou.ua list=FuckRKN +< add address=172.66.164.200 comment=dou.ua list=FuckRKN +--- +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0