From f9f7b87b06b07d336de8c52593d4b86ce069fe64 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 30 Apr 2026 12:20:08 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Apr 30 12:20:08. --- .../20260430/20260430122002-Binary.backup | Bin 0 -> 318025 bytes .../20260430/20260430122002-Config.rsc | 4613 +++++++++++++++++ .../20260430/20260430122002-Diff-Config.rsc | 14 + 3 files changed, 4627 insertions(+) create mode 100644 MikroMaster/20260430/20260430122002-Binary.backup create mode 100644 MikroMaster/20260430/20260430122002-Config.rsc create mode 100644 MikroMaster/history/20260430/20260430122002-Diff-Config.rsc diff --git a/MikroMaster/20260430/20260430122002-Binary.backup b/MikroMaster/20260430/20260430122002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..7ae44ef6d35e71aff1fe0deac610b9717b868951 GIT binary patch literal 318025 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 z
oc&t`ST2;|B1D&=H(1P4?AsQ~h#$}8MYt&t+qfzK9gW=GMG`NW%zhPnJgnskJJ0VVq#~iBUaR?8R=)=ghBw|=9d*Q!yJ*KuhDbBR*tk2PR; zF;6;2G|(~?(Hj$&sWf!9;R{EUfs+xpg$j_rzhI{sQlzgZI$I1T9Uq5&RTs9XDY+5g zUB_}$qq_vTr2EoNb>(89DPWEH*k*Xa=G8gD6C9zJ@z#wP&*xG<44E;Yt(41(BmNVy zz(-?u4>=?Dpbc(*A|DdGZo!%`IfowT%%V1VK{X6j98^5$XT&!m*h)j zZnZ%zVG{vxq|QugjF+OGc{SuyiXVYU|4pn~liyHBt8*F(bz#v^hC`NyZhfM%g%X2Hda+S+$@t6EPM(Pg0*o4#2ShW zPXei!zIV|Bb0ZUWuE;seck8UaB=OxB3t~*PAa_{u#tn;xvzgcJHo4`nYOc#HHa-q6 zD&vtp)@^e4_+z+jE?Miug-)t@g#i;Nhut#Y^qEhyQ+b95LfVcpzmZr=JLv0$La@F> zCK1>pYWT@`x_cV^ZyF_t)52A3TcW^kmvLfTS)#x@VzKw%1`)J{l9y^2R#%jlnt1`MfMig><2oYC-8oA1?A}OA={xLTd5_KQVSm7<^)$#MYCeP=f2@d!}s-i-? z?h6q&QOTv|k^#5&T397Ee=A9_$9e-!yJ5Ow?QJ>BRk)u`?hU3{4%sS+w_mZ%5fA*i z4J*{uShNCGGEt0&?kVt#*9V~O@+ooV8^Z748R5|wGu#6$FS1D;-X}xOK2(|%K$p@3UZc28W=$^Wl5H`DVAA^Ut0f^Q0u{T*9`rsqmT4>uWHMXS5EI1f1&7GiF zIiz7Wj4#-B9H<%*)Y4b;cMxas2W65QI5(@$=zzX0sp49{S&T#gic9^J9P-&rY)LW% z$TvX#@0=|a={2S>*!5Y{zQn1;9Hd_{?D2$T#b|fcy535GU&@Q9|-AZSYCyHca0UK>0@hp>_)%H4$Rj$n6fW?G2 z_6_D%!y5n_4Z=v*)1-fx6IiE$Ahs(7n??AwfSc8}DcK<6T#0zjQH+O_O-^|&o{6~k z8|fpV8=d%*5L?dzX*S#~+ZdCnE?G29^4Q&I{%-OdcAiP>(w1Z>8~zH_MMkEy?-CpB zrO>5ne&=&D17izWl)D)(--WF&ly0%}Dg+NeOTB>;-MJGB?P6Aj5nD|g*otaxO_~A) zOlg!EUh`Une?xdtrEXO!yaG~3)RLprsbpLRU&jrLr+uK5U85xC|o8YcYz*jDb55@Gw_XCnCw zD%OuQ0Z+cxyVA1}L|e|{ zq%P3R6?$_Yi;SxfL3c5D*}JlOK|hyAcRq9KIq6%g)Ikxt$TLED$6gK+w`U-?+5&J5 zNq!aJF_Ub;@8|hRL(3OGH?s3f^~#LkGNS%VqF!IhfeiAl1m;v4u>SOGtx-^j&lv<$ z9!M)AZm-HCSThp+hIgD*NbCWVYptZM=k3L1eu^q3u4hO<@1g+Kt>EgLP+Vx$?kNT@ zCj(5sQlobv#q7oY!s4b4qTBlRb zF%MpBMR9W{ITgsK6Er8&#e}Y8^S~J;ik)j}V`;U ziW7svPe@na4x(iB=>LCZ!|RYEe|A`)VagctJSND#rjwRS9F`DB#gcsL2O0Hq7LzV` z2wTG8j-bc|1JFX2I@cNUVshUYC@XwN<9~o%-!|0(e&EuI=h{}wk89UMWpD*T4klUqcZqywIz?`nD-t#sUi$7nqwypc5!aH8s#@Mhj~~IxVcZ9oC%vVA z#mhppwYax3ZI%cyXwMNXJXHl`9{bI8$K8#BP>n zGA^XzzNx>#$^lReahnCYoV`7CwC->`cK^kUht%t-qyj7b84e`ZQH7jI)fDd1duX}* zt$DBgqIz_BP^!T_sVuiGyNApRMdVkMG4s9L#o;Zt2o8(-fp-}MpR{$M+mwrdJR19( zsJ%*mocN=>$H2vf11ow}qYhMML_q&&lWN{G9Er({|u4XS1zRQwcf{4k(sM7ia z+s6sun&vfhO0+q7C&Dsgpez>#?-b&r)t!tAup zdl4mk=cH6*v4Z_0*ag)~QND5Xknj_@nTp)x4TvTSatAv>%RT*_vgD3%^=no?s2lk1Zb(1K+9l z=4HQ8VV2eVO()1kzs!{yh+VTuvKEwrB#AAGa488ZnRM@l?xsv~wCTijd5vdw0G}y1hOd45NJ0p~K@3`&=L=qwdvwO#ebUm7< zF1~AN@?rWyt}mWoK>o03Y}X)Om#Mr~6@$PrS@C2z(>1NqzIr-2lq3zmst8_=N#U5R zgIL-<=+FI{ox>Du%7(b^wuKCRvf5jn;qOlEaOA?V5d@KS ztOCx8*?iky_x#;oWn4lo^-{1G?q1 z$@GO;L9t&+eIUId*X%mU`5`296?o(M8EPx2$fn~*pcQ>a5ONyO9lekA;gXL8hR-|8 zA0!eO1UPhvMOUGG*FaOZLYs{5?}A}un@kOo&B;~@0zdY&2wvsq6&M3A%uU`UU-VD1*S9c)ej=&~!2V8`at$ozO82KwoG3sA-^S@&u+$ zwP4s6aq7)So~6HWtAe9&MiC8iWV17Q6NF+<_BuQZK1nBpzwCcOipvlp7@XLgX0ID- zJO9L8=O{zhXYp^Sc9$=gN(1%k(r=KMFa6RTB2h35Bm^+ZsJwU6Thh(Ase&zz&V3yiCadp078an6? zeN;SKc$ZsG12>erdaQDW281pG{HQBaJTPc!uOm@!r*yO zOI->Yp8$3PyHru!nwI{KfPN|@pG2nI*5YuwK+@9JGv9Wr7$ztq)~fRE2Zy@sdh zO@&PJDW(n0E(Nyj3=QqK)308ToV1!}x_=S0;o2aS2$lnihz7y_O6snsJqTa){{#M2 z$k*<-G4_=`uM6AySR~l8c4pMpG=9CZt0~aoX2jO)**oi~PPInq*fX~0JZ8_KU^aUDm`lC3 z(kBQ3*J2Cb2{E(LSal$Am!tM6_nbDBR0fyvZjy^2TnCB6l2ed&7#3?gvX(xGTj={d zWoK>VZwd?Tmx^N--&ZC*m4n^-PV-ri{T$%_ej+aq;X?YpQg*>{bU-eR%toZ~Y2w4g zWi%-(0NeIP^6BDAwkhznyN#8dS|vc?mWJ30N3jN@fb)nF>DzA&(U8qdgrZF?pQ`8` z%P)Llv$MWyjD&M$C0>!|o6%u(4fbR9=tWJSOAEY&k6r z(mUQRmmDp>tj`qNi2>w!V8Tfty;--p&7j=79j%PS0WBmgpn(Pa7x=^iL#5^7%$Q)5 zM4Danx@+{mK}uD=jlh}x^sjTJX^%SbQ+f|EGd?bArAVGPNV?j(ndW8|S1FnJJVx+% z1EdBu{{6*ieXIQy0_5peC6BCA-&f!?*v3y0S1Cv*3gcc5OShqmx@mC9*DKy8K>p2a z9>`ZZN+6;ETW^`$1mU*;HowWOdE_m`pUoBdX=uU~@k~K&&EA2zeLnNrk7xhbNub?g zC{x0f*XFjm!IEuEO_ElB1$-8Al$<@+KSlCs_KTR+04l>Y{fPInZX>Uy01zs>^g>_D3jiUa`+iA^)f|M$2G@M*)mrBL#3Vw|PmE`amM zhQqbWqyk;YkFS8_$lfuVE;(^8OreVFs|8ea{J6lep_I_?4_1kq6DfXT!rh%V4P&^J zcnwdAYd|zx(%pTxw!d#cHd&L7nJuQ$T1+CJf>BXK9v+^HGWr7s&Hx)aZ=}T0fbTC5 z0)il^Er|s5%jt&=p$2GDk>4PZOvf$*+%L*yTtvcdYA&~-C3vsw6pRY6-QT2sJ4;eq zs>N9&(*4W5z@}15ZK6YQlud0E2GX+fZnAo=O*@{BK!2iEk&_%G-M#ciMz)hbGuL|$ z+%?>yT`9VzX>wD`cm&6KVEbdXc+m#5VpfG}ZVp_B0GULcsxX=By#;$1J0m_zr;Am( zh-1#Z1mB*U457(P-!4>G zZ;(dr(GmINYB2(4HS%VkpqHxXSf)|VDHtkh94FQ?lPc54p}`T38R6-##Fd&E?DFjA~fp64CH1C%w7{P1m} z-Z@I8vD}wpQbX99-8Vj^XAEl0G?L4SD*!a?kE5vT-?E|$V>jgJMHX5ku|7Y|k)aHf zB0A_zjv8AR3~B@#;e_>vY-fNisCClYld)WT?KoPcZR+UT+nl70Xks54v&@*BH`S@< z#DBI{Yyk)O&32u_63^RM6JTp4k%iSv&k{s%+-&l7ogtc60~H~Zsl&St9#~k}qTH%- zlta>)S-(Bo>BzpwBLl6-dC|NY8oL#~S8hMO?$bbvXG84Kq_S)C)Y4BPuY+keIZ491 zkZVa)7D~-Me+@pIJRx>%$YvV_z8utFEAw7j;%6XT)S6?Hrg94#%O|yi=(*aihU2kA zK9BVe@0jJhq+hv3L}kRvvw55*3Htm$Te%>W*Ag;!7yoF9-7Y;^kLE#TlQXRRy6sqk z(xAG+qNq}N1F}0tm)j7!#0r(+4z5za#6x|-H_Y)c-wNu2eW#6w5g8eyl4xZcT!~XH zt3&7BwYAXTv9}m<9Z;dG3!WB5CUkk{fCFw04{2x|Cul?La%k&d9YcMmiQR@gF5*b< zWVK>XlfL6|!qI6qX?%5$`Y__KytFgOXue*LmfEiJZ)nuC3pCi(bzp%>W0Sgeg;~;X z*u^hxF9_rWl8MjbU^Ov@6kALL_WmWG7XfBT5w+CG&Q6+#3FNqNAvRU~YpqJzs?jo+ zi0qkETRrmR3@ZPqCBe{ZciiNHaB-b2K^^*KxsBpUvdqP6hI<#jT&dy0Ybjx zu_@Td%LeAt!DRp5R|^KSk3~pVpdr|{A|DIBf&T-98nZzi**5&!NGFe%(Dgf3P9_|p z1MtQV%F#eYbM${6TXZ?7wMfRhu?&XJ(5FI_tGf#VObstmrq_si21ZjJKSaHZSeA0i_V{8=+f7+RaO9{3^ zhiwl&VJ2t+Hns=)DYm_z?g%5XWIJrUDE%7l4vUDdzs&jPTikv-25l1g-yiCI$8_$) zF8ak!(AZRu{Y}Wr{SgM+N>Q;1mP8Lqz>J3p0ObQZjjTyg3S==k4p&UDCcXE%;0GLs z+uQNBj7U$=`tm{rgb~2KZ(|_)MYBGevxIKz;aJ!kO9FGVYO(VH2w3=%*Zh68~|L@i#RDAxo=d=xFV|QTb70VPBv*{p#dQlx^Hu z_PH0WRoIF9>vh3x%v5b=){uD*q22$F>oIz@)|Vj z){Ny|=pT_15?zQ=NUX@wZP*j))OrrA6l{+bBCSbwUP7yuz{3ap2s1o!cX>>WmKsk zFt0Cd{#R+FY1o5qI%TESr#M)MNgMZn8Ys$GL#B$1NxazjS1iTXsM~+98OZAR00Mgs z@1O+(MP2JI7cz885lmu?(EM!>wCMq)USS}`Nk>97>w>!XW8V_2z_eRU)9kM1b-gKM zq;myzF_4HNGYNv$l=|agjTK-pCtlk8@OFEljoE1pP@QVcr^HTAqtrAZqYMIaNJTy! z=SNG~UOW@QN(GuVJ<~<;b5U!$f1ldi#81(8vY&$R3IQCQ8DUOd&fF(OY+{Mjl}F;? zK?(sW2RhB0I$`$S&KHO#%+{@*(bAAMH$N_&RJV~TzGHf@3VLNwJZ5`1!+1mYE4FbYv#W^sE8?MVH>IVRoruCda(fVFG0 zOnrAYzDM4nS4KLpo-Lo7K?02sLTU?(nAFiyhjfTkkyT(^!-i{5@;SVRn_}vLJm8** z9kP|Tm5#0BTWH}H4{vI0fjsi=m;>Qg>Xk^}d8(ZD`MwPwCLqyn)s0!KQv%l2qpLFx z<2`^_Od&Tah^Pkz_ivg@J80-~pSlvTSb;Um#Bu3;phx{=L5#{BsAu zx)`z;DyQqhPq+`LL~>NRIZN!kQ+8(<61?5}&ISCA5Kr1$O5RVedPx~e!d4rm=P6>= zF~KSOulGM{)9O<22@+sjCy)r@xrX<)i%R{snyu0;X3YL99%oMD2)m#dqWYXGhXBQ! zkUzcsrqG0fB?1)?$NDAJ_3mX-JTd-s-i zqVspLUCJ;JIhdp%CQG%p=P_7p64a^oKDH!f&?@7upGwKo{d2y&Bh)yB+!X0hKYcU5Ove1CDKm(k z)X!6v3bPrnXy#%O?w z>LXyLGoAA=^;W+XGTW$d0r$lxb78?(V~X*avQ^ zfddbm&pZgHIiJXP#|db0LXm%ki8~XGPZ%OQlK0D}p&uo!xNVo{mKZs|&HDS5a5}8= zkY*L~an@h5r=GK#zmyyT+4X_K2c8U0h;9vVa0J496YGpA03;0Qlp(DsZL2pN{6=~2 zJT3|&BezWNkkw=*av(I}cXRHqwgoz^P7qsp$LOD?ah6#be;mK!D?D5%+cA>sst4WC zQ4GKs&zbAiekj0C*|g~67TI(ea%k;HKmbin#!x%-GZ>E(92DSqO~pl%;7;nPs_P3q zl%G2x5-OhJ`Z7eQ-$yKfvVjKcq<&+#2iP+qeUQcf7&D|?{QkZEH-9InH3&Js0|BB) zo-Pfk@Bw}ao$KnF(`ZqTnph{GQQ12_Q2?SkrjB55S`g?Q2Z8PKA}DCVolH@9V9n>~ zW7|ePuuuB`H2-3UKIMFR9FPv??=Kn~udK!G+Hxd`fZk*|)o#qzhEJK#dzjjEfqI(i zS)i`I+7MW7^WtXzEOKLtIQGk!7?c}OZWnU1jl>d7u`&dlR$(Cn4zQsnf_>c2Y@v-> zV6Kgtui=ZvY4Ze3lznjX#&AUlDTVltXk4v}Ey0~iA-90hKxsAF71|)WLPXkerB$q& zcHVkOtj3|(cO=-J!~u>{F*e*?{~n_81?sVWyAIE?f{`s&r&-`=7>ZdAg5=J>8k}w% z{Q$Q$n;-!leu9ZN@!WcfD*tqC&?Q;<&8f{ZJ}c8oo=%z6&MY}#jl);{%Fcozmh71! zO4q_CurFgX%_j`S2@|qm;_*@1;Y>3|gsi4zDl7()Pw_n>PfAUy&m~%~2 z&eM=A#+eR!j7LMSYj}*JAC?t5A4n*0QjiG)QD3$!M6Qu%G#f`5V!I!H}|NLYH~b>^TSAVM@~(wCc0*t zoyqoSiw_XvBkM+yyL^b%0u$oZ^<#jNZ{Qt)8P#8yvWj zq41FjZE_-xXai-fy^dLNhTV#WQDVrG`3^RyjtN=5PrAy4S+Soswklhexp}_k8W|B>=3H$%U`h;{E%yQ>2cT&+ zJ2y)^y#otJ35|5%MbFx5a}RAF9v_)1q2bNe35Y^-7X*#uY3-thbCir6p4;AJ2fNM9 z6H;w_%KhCRpCoM#S%B$(Y)za+sN0Re?(k*MA@9J3Gp1|8pc;?|r2v61$Dj|Md%X8B z8Y7W7t0woZB({76FYrQ`+{;vmd1mjnsdy?zu_{Yv=aE7s(CL6#!agE*R8Ij>ICbAu zieM_IIK7^*3Y$}kg45H`$Vi2i7#}ILx3yD=wkBW+^P-a}TzGLx0Hs#sr4y8jclSGW zs2gAWyJblES_MAn`CkcubF>P`?fwa!t+;|hyUi!FjxtEGK*Dfwnt;BHe%Jl{Eyjvn zvWnSeE8ciy?J!45;s=7}kHc!I-`&J*t;DYmT(V7Bv7mvn2;@S-xkqnZZZqBD^@3KzN458>!`YWaDKXi*UZOZsEGSl|m9-g`HQ;LtbMy zt0D!DNdu?5qwJq2m*+C;Qp6K?^*(;cE80R0A$iZH%|7F6TkaL4f6N4Nu?`)zDFdFJ zS_Ab=6xQ^SU9>>Jch!(z#D!u1hpA%r)n}!Di;sme!VS+ zw=Jp>JUNm7j%cs3QijS8c?z7ndg|4Jlh%3m9%yI;#TXG5F0?sRnnjP5tn;y;Qq(op z@H*1NiO%IZ6HqjM^Nl?M^by|WWXXG(GsW%Q``xGjOPVfiLbWA>gDbB+M;7v?0OD#{ zKLB(0z@W)lz#l1NY4CD58G1vqCSJc1PCoDp3+W|N`9sRHsTyFl*-K6%GhMBm(2+Pg z#2S(i2xNCN9GK#a_-Y6D8;`^YbR-<2xc4eYoUpQYW(otHYa?c@iSB+4{X zz12$Ofbx9`a5xp~rz20J2SJ&4w&vYh4VzHjeB%Y^jp6W^rwB#6J*4#UQ$x@9_CpoH zvHl{NTr2B~P@NR>JXCU1(^<(wVjU&DpTYcRVIJhW!#gCyAiQE%FL74A`PhtOPTp1D z2aFG#9RbQNNuw;neFFfc0nW8d@Oez#dKRtCVJ{hV z+=E#@V@)+=i-B5jZWw5nA`h4L)?WEV>hWREG`DNT7Ly)^8uaZf zml>VA8}}M=sB!uIPWN>uDN9wW!XYN~s@p@m5$w9rf!?E_fOH*%C~{ij=t63gW!3tz z&cp&m?0m-oGxg;+%>vD92EsPnqL8jJALKaATRlBb=b~6pz`0yx6I7)9FMU-jvHAIe!ZHzjC%`>=VMVvsJPp#kSV*dHc!| zj7!CmwMvq`8i*cw1hoVuH@dA-HsBSkQrg(|gGY2mRfGCCckC0L^D(2{hF7W8g~p`0 zsRTh0M!LiN6{H+_3j~+;7}YbDgQQ|f{FR1UxV``NaOe0FrpNL8$kwx zG{}4clLLh*V~H8W=HX@0T@t3U@w6f9dXYIQQ&_wIjJhB8h+CgZqQ2m#AY-Zm8@yfT zOasDtvmjqv7if{oTR;Dstk0OPs4wm~Z8prfhqO8@4%YP}Zux~WuT&7^ybtb)#g?ym zGcjMwRXc=aq>(86y^DI6IkLBQs){0lhVyfiyAzgkT6}rP#dpd3hLDv;;|N07Mr4+SpsM4$Vr$GWP8-q4B?Obb8@Eav3`&Uyv@i}J#cvY zg^Sx`*N1j0|5pOl<1pbf!+0Mk{v_tmcr?kkaC6)tjH9w7^cq7C7W9$GbdPucU7XoW z=WFWGe=RH8l{%tr8Yrjn2HZW8Or@n`R!W@B;*dk|b~^2%S^X^iS40vD4mE;ROG>>G zLe??#?b9iPscOm)f9?yRL0{^|w1xRR@^?07N^+ROaDgh=uZn8A#}S2c^@<1CY=Bhq z`sD05am$ArZ?|mLsid^`>eOw6S}K}$7AhxFkIt%cyf$S^3kgI+UCjDVj;DS>MlqPdw888atDZ z;Z|i4*5ty+CCLcVzRO z6Wxoi%h3y-P(Zt>3)=6zN(T~ACE+8vtgB9$7Qt*}VcogI-+=_6v}`sgDf-3+IARl2 zYBAG)-DGa$9A-AH)f5Bzho#^-%FdgZx3!+M!4%8MT!z(4ph~EaUf_zYthaXbnc0^K zga~ny9AQ6=zv~cw-lSNUdabb>DP5r_{^g&vpuXVJ#h#ZzOr}j58%i8A4nQ4Vp~F${Ly+Xu0lsR4jlbE~tV;>RWv9`3yR0!R z#FDA5AT&5nlT3bYV_S}|s4=n|V(Hk?Niiv6HHB%wK%a_0Fj+fdn&>2!pMI5>0e$yd zpo~Hr(adMQ1oHwjv}>1z11@jHwlQ8!mzYp_eGoDSjN$t*Dha6iYFro=nlKTz@Z@8xW#vd)-?U{k{zL0-(I(8G9k;K>u6h|Xr_q&CQ z`Ad7udv?g!aVeu6m05e$PrfMswQenWAK*#ztqD)NYz{Z+yJa=|j@jzVB>JLR9(Aee z!{9bJ0nqx5Ghi8eJQ2Y@83>#M0cH|{Y_csvUVVn!<%ZuQ9y+hn8aPh(s* zntMU51V*?w`1sS3<{Zujz#3iLoY`QLiy@S-la1_=6G7%qK9YU=-O1jw^7CCPidf?q z2gm_dM*u~GMz>@ejCUXBHnxs$^bR{)=Th3ZR-@P_4N#=Lf65t#aJmj9f>#j?GChH> zu;vAZ*ct`|i+{UI_isE>HBiEcpRJn@wpuS2=c}0dmdrcP0^#nMbzzmWKsm*%!t z7-w~}ZdeUwVAm9dJpeu?N_8r$gA)4ifE!0G3=h~0TdUR|#R%K3wtOr}7xeuz6fJr; zVIW70qKL=b;`;nX6}2JW+jQ#Gk$W2j0{!y9>k0w5s=Jj5G~Z`Z@G>>;J8;(a1;k4jYSy@zua@CRg8#$J&4FXCfE-IT zSc2_RoFJ@h5$7EqAxK=>{g!}#`BVBCB|?4LjJ(fd6&r0M^ZnO&B%KevKhmgz!gAU|0sAc zEuRZ*d=iijMFmTQ(V6b!kit#9^Jw$aJQ9?<49#*y_W_Ju#Vei&(5?}(=4d}MI-jl& z>L139T1Ja!h148kn8Q(?c zcLg0A>^&We`Z2Roms69IaK2xK+a!5r_Up|*?trda38)30AnD)aO)c|IkrQk;s@}3* zG-h3HR;MT~HrnP%(7YgAWUc6mXmNM5K*sN|f=R(CxxPT=lh%IU?CWE_#6Z}EnK=~e zk-(iW)SvxnvLXoz*13<0X+L`aPeK9UxuA`cNzQ8_BoIVEx+wD0riG2{;yfj7BXOqK zyxAj1bQx{lc1-lqJU}&xksOKp2X^5fp*vE=aVVpS-1xILA-s!Da~MG6i-dmY7($5c zL$|=c&%S{$Nz#>Mdf?I8LaDU_3tomVJ!IuRT+Rz^eTO+b@%g8)>c@iADh;fDG(O-l zuz~xP%FYh#XrN%mPS8(2?&FHtzqWe7EOR_)Q~5*_!vknML<|Oy!+DCp^YAT&*hDpu zWP-szvK1w6nFsqcEd1(5n-~MCn9IcZgPf#T@ISr;DuEn)calZRB+g4So*h zc}-k#n&pfNV%R2PM_i=B8M&vfQI;OcS3vOIlq$+m`9@8JB=ft+^=GXy<}@(xlFo~i zw+Iuabudj;clPk51Ay#1zTslE)OcOYeK(=T zCrNOT&}c6z=0h$W2=kzA-K{kzBq2BM(_I^`R--^S>}gR0i@y6vXIm+6j7dbm;QMME zzl)R3?$F0&oVPN#NHT^_4`=_(mZ^vBJ50!#7+qq3eDI?ir~JGj-J8243i zgr=NJ;Pd>+$3`X-<)7Yoq|{lQ4XM&mJdWcHnwT_Z>tLV>xP&ywl|<9IvdtSDVGsP%k_J77+7kfQU@fo2Z5FGP2 zmro~&YLeBD54Zy{&R=w3SMJ{KCCig%;KGMXrEImsAioh@2OZMq)OBRr{ z8PC+q6yYbuCX5^4x5Lxj{Le;dTGRF!{Z8;gc3-@NaANrQp+?JZDLf7&q;Ag*mWJgE z5;CWhQs=h_G{0pw(*p!ROsP4{HdGmtw~;>=!&T(;q6v+Ot;uyhAyiuyt_rRqcANC(VgHahHZLIGP!CE^KWj8scTHqKFta0Y#~3lY6oy3)kNpVlh9+{wH@p7Cq`)CT)XJrO=KPCt+5d z+g=sV=(A9f#u3}c%pKoGqlIakrfx5$zivT*MN($Y7r(lY-xfrk23unF#%E@%ASbQI zYUN~$QyV>8oY-43*u{9z27*-J$}SM{z!kB`lf^WVhWWXEtG10@gy~&!+iZvuQBB;; zn+3W&CvE(C70QjU;?~pAH4XjUnfQnxT^4|XoOQJ16Qxu}zV^s~@?{x~mVHfxM@HbO z!q0}yh;H`5XZ3ha#T6Mqg)?ijLl|ohQ3+0VfMhQ+wz++3g%i`3mK7 zAuPl3RE+;j3scKO-W9cR3au%HVg3~a*cBzR`++Cgb^oCRhtq~BrnHZKMMV+`20&i! zAvuQT1J#Q&a0CX8Ciy`hGE8H0U5|yr2R{3HNA`6Czd(_q64xdnv-MvYAi!hs?sZ3D zFdJ{>I<@3BNiUBqkTR?%ug$NE9-L+{xYN1|Xu%jA#b|Z=)o5}VI|&EpohI4O{YZM@ z1fM}B>C_0i<(l^>x|_u&=#mh=gV7X=;neg&2GLKuJi-hzF_>tKx zd0IZ!k_hS=(tp{+_H3~TeJ)w-n{x54qXfVGIgxmZe}bzh(Ssz>F)#-^{p+^BAn|zx zu;(E;ra0PEIN5Bl4rdu8mMt=7iYFk`7|HTb8rwOw+d>jvmL&|f|9YdB;st}iR}Vfx zDl|U?9DV#9+Z$cb+OV$!7&!uVM$fUBN=d{w$oJ?o6eg>Vu{XnY{siWP0wG%+++f8} zAv<#SIv%Q9eEH~2y#P=tzz}xWcsbJTduYr7r$R}BEhgP03zyItsSdKqvz5Z$s_bGe zGHM6ojmHx2c8zvk^rN&_+IfX2q=Ghx%X{^V@+RQ#(O^FE9NE{;>u~ zc#`2pRwzR&VGT4EoTl1b{!+P<(Wq0xQ2}a$f6cDlEa2X! z*QZZ)JSHONSc{OHlA;G2IJ^m@tJccHe)n$A)U9#T*DGcI9FMpXGH%geh0{`5uW^D;3DyQ}T<4bYxN=$l zZnq{TcE&lqS51A$Vh^2j1Yid3N5LIe4y}t0XYLGItCv<7P$~C}XK%9isLc*lM4Cmk zb$PP*Ve}rHJP1SDCK*UdX=e~}%V_=||Xqyq( zG@h3<do-2!9h=1CvnMI5u5FTv-#y_$PzQhMJM9df{@VNrfVqL z$*fRSg^nbwo|aDK?NN?NYJ@PP2)G;V=Z*+^@*{<8qIXe*1xYH`i;{3F44R`4=pC;R z;><1a;jTuckha;CAZQ?J^6s@L-fO~TL;!r^>@8W88RIRD$+(H{c{B6bt&nZnn28=< zk_^Fb!DkA#aM`lJ)^CMs5y*_nCHKUweb2^heBR>r99sBC;7Zc+aM-lIa22CW~vYNk1JCa;-zLG z^nIn-O{PBUbwp+skh~y3)f;1_umqh@nt*G|iBuqKrMdLAX80rO1a`7Pq1Xw-;f}NW zB|qUUq?HXzb$v38)0$`oW5e@<>W{bd3O=;GuGH z=~hZx{04pW_&DiisKrL;?-5wfhNq1fGoo8ntp ze8@f3uu*o8-EhxsVL>NH!{X?2KUoh_iGZDa9qY|n;%N@y*l#t@brrei4oB4pjOdxk z+9n8N70jNH|n`HKCT<7NS|Ke%S+^B5geF*82 z66BbB&uRSy%z9mo&BW$_G$Y*%NsGaNIY-es|1ascN#C|6a{~?6Hkt&j?oY2}7mmTc z-k`5;^s)tCHiUewclp+%&i1){7W2pZ^nycvYgoi})1|zll?07yJ&_~o|BKsqnb9$ey=AewmR@zsr=+L+CLw;TyB4-J}+5n!(dL$C|89&J�Sjpx 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%0AK!kL`wAv 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 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260430/20260430122002-Config.rsc b/MikroMaster/20260430/20260430122002-Config.rsc new file mode 100644 index 0000000..470e954 --- /dev/null +++ b/MikroMaster/20260430/20260430122002-Config.rsc @@ -0,0 +1,4613 @@ +# 2026-04-30 12:20:02 by RouterOS 7.22 +# software id = 2961-C4ZZ +# +# model = RBD52G-5HacD2HnD +# serial number = HCX084RAVFA +/interface bridge +add admin-mac=48:8F:5A:60:A1:0B auto-mac=no name=Bridge-LAN port-cost-mode=\ + short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + F6:BE:9D:85:53:F5 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +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 \ + station-roaming=enabled wds-default-bridge=Bridge-LAN wds-mode=\ + dynamic-mesh wireless-protocol=802.11 wmm-support=enabled wps-mode=\ + disabled +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +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 station-roaming=enabled \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface wireless nstreme +# managed by CAPsMAN +# channel: 2422/20-Ce/gn(17dBm), SSID: vados, local forwarding +set wlan1 enable-nstreme=yes +# managed by CAPsMAN +# channel: 5260/20-Ceee/ac/DP(17dBm), SSID: vados5g, local forwarding +set wlan2 enable-nstreme=yes +/caps-man security +add authentication-types=wpa-psk,wpa2-psk encryption=aes-ccm \ + group-encryption=aes-ccm name=security +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz security=security ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac security=security ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an security=security ssid=vados5g +/disk +add media-interface=lo slot=tmpfs tmpfs-max-size=44739242 type=tmpfs +/interface list +add comment=defconf name=WAN +add comment=defconf name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=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-AX disabled=no mode=ap name=5G-AX security=sec5G 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 +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +add name=mVados options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=m.blsp.at verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.150-10.30.30.200 +/ip dhcp-server +add add-arp=yes address-pool=dhcp dhcp-option-set=domain-search-set \ + dynamic-lease-identifiers=client-mac,client-id,opt-82 interface=\ + Bridge-LAN lease-time=10m name=masterDHCP server-address=10.30.30.81 \ + use-reconfigure=yes +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +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 dont-require-permissions=no name=create_mkdir_function owner=vados \ + policy=read,write source="# Written by Phillip Stromberg in 2019\r\ + \n# Distributed under the MIT license\r\ + \n# \r\ + \n# \r\ + \n# this creates a function called \$mkdir\r\ + \n# from the command line you will be able to just type \"\$mkdir some/new\ + /folder\"\r\ + \n# and all the folders that need to be created will be\r\ + \n# if the folder already existed, it is ignored\r\ + \n\r\ + \n:log info \"Creating \\\$mkdir function...\"\r\ + \n\r\ + \n:global mkdir do={\r\ + \n # \$1 refers to the input variable the user passed in to us\r\ + \n :local newFolder \$1;\r\ + \n\r\ + \n # we'll use this variable to report error messages that may arise\r\ + \n :local errorMsg;\r\ + \n\r\ + \n # if the user put a slash on the end of the new folder name, remove \ + it\r\ + \n # i.e. \"some/test/\" becomes \"some/test\"\r\ + \n :while (([:pick \$newFolder ([:len \$newFolder] - 1)]) = \"/\") do={\ + \r\ + \n :set newFolder [:pick \$newFolder 0 ([:len \$newFolder] - 1)]\r\ + \n }\r\ + \n\r\ + \n # if the user put a slash at the beginning of the new folder name, r\ + emove it\r\ + \n # i.e. \"/some/test\" becomes \"some/test\"\r\ + \n :while ([:pick \$newFolder 0] = \"/\") do={\r\ + \n :set newFolder [:pick \$newFolder 1 [:len \$newFolder]]\r\ + \n }\r\ + \n\r\ + \n :if ([/file find name=\$newFolder] != \"\") do={\r\ + \n :set errorMsg \"'\$newFolder' already exists.\";\r\ + \n :log debug \"mkdir: \$errorMsg\";\r\ + \n :return \$newFolder;\r\ + \n }\r\ + \n\r\ + \n # the name of the temp file to create\r\ + \n :local tempfile \"mkdir_temp_file.txt\";\r\ + \n\r\ + \n # port 0 is unlikely to be open to HTTP requests...\r\ + \n :local fakeURL \"http://127.0.0.1:0/should-not-exist.txt\";\r\ + \n\r\ + \n :local fullTempPath (\$newFolder . \"/\" . \$tempfile);\r\ + \n\r\ + \n # this is where the folder creation happens\r\ + \n # `as-value` prevents status messages from printing\r\ + \n # wrapping in a `:do {...} on-error` prevents error messages from pr\ + inting.\r\ + \n :do {\r\ + \n /tool fetch dst-path=\"\$fullTempPath\" url=\"\$fakeURL\" durati\ + on=0.001s as-value;\r\ + \n } on-error={}\r\ + \n\r\ + \n # this waits for the temporary dir to show up so there isn't a race \ + \r\ + \n # condition where you call mkdir and then try to do something before\ + \_the \r\ + \n # folder is actually created\r\ + \n :local count 0;\r\ + \n :while ([/file find name=\"\$newFolder\"] = \"\") do={\r\ + \n :if (\$count >= 50) do={\r\ + \n # after 50 * 0.1s delays, it's been 5 seconds, which should \ + be long enough\r\ + \n :set errorMsg \"New folder could not be created at \$newFold\ + er\";\r\ + \n :log error \"mkdir: \$errorMsg\"\r\ + \n :error \$errorMsg\r\ + \n }\r\ + \n :delay 0.1s;\r\ + \n :set count (\$count + 1);\r\ + \n }\r\ + \n\r\ + \n :return \$newFolder;\r\ + \n}\r\ + \n\r\ + \n:log info \"Created function \\\$mkdir\"\r\ + \n" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=CustomUpdate-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n/tool/fetch mode=https url=https://developers.cloudflare.com/ssl/static/\ + origin_ca_ecc_root.pem;\r\ + \n/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalRo\ + otCA.crt.pem;\r\ + \n/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\"\ + \";\r\ + \n/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalG\ + 2TLSRSASHA2562020CA1-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/DigiCertGlobal\ + G3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt.\ + pem passphrase=\"\";\r\ + \n\r\ + \n#:global AmScriptsUrl;\r\ + \n#google\r\ + \n#:local CertName \"GTS-Root-R1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-R4.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"ISRG-Root-X1.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \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#:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\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 dont-require-permissions=no name=AM-setup owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_RouterOS Setup Script: AM-setup\r\ + \n# \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## Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:if ([ :len [ /system/script/find where name=\$ScriptName ]] = 0 ) do={\ + \r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# :global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n# /system/script/add name=\$ScriptName owner=\$ScriptName source=([ /too\ + l/fetch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptNa\ + me . \".rsc\") output=user as-value ]->\"data\");\r\ + \n#}\r\ + \n# For run from terminal:\r\ + \n# /system/script/add name=AM-setup owner=AM-Setup source=([ /tool/fetch \ + check-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" ou\ + tput=user as-value ]->\"data\");\r\ + \n#\r\ + \n# /system/script/set source=[ :tocrlf [ get \$ScriptName source ] ] \$Sc\ + riptName;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:local RemoveThisScript false;\r\ + \n\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n{\r\ + \n :local ScriptName;\r\ + \n :local RemoveThisScript;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local AllDone;\r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :local CertSettings [ /certificate/settings/get ];\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:log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n /tool/fetch (\$GlobalScriptsUrl . \"certs/\" . \$CertFileName) dst-p\ + ath=\$CertFileName as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint \ + ] ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n };\r\ + \n\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 :put \"Add Schedulers...\";\r\ + \n :delay 1;\r\ + \n :put \"Add Global scheduler...\";\r\ + \n :local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFu\ + nc; }\";\r\ + \n :local Comment \"Setup Global Environment for scripts\";\r\ + \n :if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] \ + ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-\ + event=\$OnEvent start-time=startup;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Commen\ + t) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n }\r\ + \n :if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEve\ + nt) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Add 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-ScriptInstallUpda\ + te\" ] ] = 0) do={\r\ + \n /system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Commen\ + t start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n }\r\ + \n\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n /system/script { run AM-GlobalConfig; run AM-GlobalFunc; };\r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :set AllDone true;\r\ + \n } on-error={\r\ + \n :set AllDone false;\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$ScriptName . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n\r\ + \n :delay 5s;\r\ + \n :if (\$AllDone = true && \$RemoveThisScript = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :set OnEvent \":delay 30s; /system/script/remove [ find where name=\$S\ + criptName ]; :delay5s; /system/scheduler/remove [ find where name=\\\"_Rem\ + oveSetup\\\" ];\";\r\ + \n :set Comment \"_RemoveSetup tmp scheduler for remove setup script.\";\ + \r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-ti\ + me=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$ScriptName . \"\\nI've done everything, and now I'm ti\ + red... I'm leaving. ))\\nThere will be an error below, this is normal.\");\ + \r\ + \n }\r\ + \n};\r\ + \n" +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n#root.mnuc.backuper\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n#:local Script AM-GlobalConfig;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n#/usb1/mikro_bak_rsa.pub\r\ + \n:local FetchFile AM-DOHCert.rsc\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \"[usb1]/scripts/\" . \$FetchFile);\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/272/ec61099b\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 12:00:02 30.04.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 138;\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 GlobalEnvRemove;\r\ + \n:global MiniDateTimeStamp;\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 ExitError;\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 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 FetchLargeFiles;\r\ + \n:global FetchUserAgentStr;\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 LogPrint;\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$0 (\"Set updates channel to: \$updateChannel\");\ + \r\ + \n }\r\ + \n\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n \$LogPrint debug \$0 (\"Update Channel: \" . \$Channel . \".\");\r\ + \n\r\ + \n\r\ + \n :local StatusPkg \"undefined\";\r\ + \n \$LogPrint debug \$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 \$LogPrint debug \$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 \$LogPrint debug \$0 (\"\\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n \$LogPrint debug \$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\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\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\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\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\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: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: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# !!! The function is not ready !!!\r\ + \n:global FetchHttpInfo do={\r\ + \n :local Mac [ :tostr \$1 ];\r\ + \n :global CertificateAvailable;\r\ + \n :global IsMacLocallyAdministered;\r\ + \n :global LogPrint;\r\ + \n :local Url \"https://api.macvendors.com/\";\r\ + \n :if ([ \$IsMacLocallyAdministered \$Mac ] = true) do={:return \"locall\ + y administered\";}\r\ + \n :do {\r\ + \n :if ([ \$CertificateAvailable \"GTS Root R4\" \"fetch\" ] = false) d\ + o={\r\ + \n \$LogPrint warning \$0 (\"Downloading required certificate failed.\ + \");\r\ + \n :error false;\r\ + \n }\r\ + \n :local Vendor ([ /tool/fetch \r\ + \n (\$Url . [ :pick \$Mac 0 8 ]) output=user as-value ]->\"data\");\r\ + \n :return \$Vendor;\r\ + \n } on-error={\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl (\$Url) output=none \ + as-value;\r\ + \n \$LogPrint debug \$0 (\"The mac vendor is not known in database.\"\ + );\r\ + \n } do={ \$LogPrint warning \$0 (\"Failed getting mac vendor: \" . \$E\ + rr); }\r\ + \n :return \"unknown vendor\";\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n :global LogPrint;\r\ + \n \r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n\r\ + \n# :retry command={abc} delay=1 max=2 on-error={:put \"got error\"} \r\ + \n :do {\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using default s\ + ervice: \" . \$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={\$LogPrint error [ :jobname ] (\"Fail\ + ed to detect public IP using default service: \" . \$Url . \".\")}\r\ + \n #:error \"Failed to detect public IP using default service: \$Url\ + .\"};\r\ + \n } on-error={\r\ + \n \$LogPrint error \$0 (\"Failed to detect public IP using default s\ + ervice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n \$LogPrint debug \$0 (\"Trying to detect public IP using fallback \ + service: \" . \$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={\$LogPrint error [ :jobname ] (\"Fai\ + led to detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :if (\$PubIpAddr = false) do={\r\ + \n :set PubIpAddr \"not-detected\";\r\ + \n } else={\r\ + \n :set PubIpAddr [ :pick \$PubIpAddr 0 15];\r\ + \n }\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 :global CertificateDownload;\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :set UseFor [ \$EitherOr \$UseFor \"undefined\" ];\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 \$LogPrint 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 \$LogPrint 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 \$LogPrint info \$0 (\"Certificate with CommonName '\" . \$CommonNam\ + e . \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={:return fal\ + se}\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n \$LogPrint 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 \$LogPrint info \$0 (\"Certificate chain for '\" . \$CommonName . \ + \"' is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={:return fal\ + se}\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 GlobalScriptsUrl;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n \r\ + \n \$LogPrint info \$0 (\"Downloading and importing certificate with Comm\ + onName '\" . \$CommonName . \"'.\");\r\ + \n \r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({ [\ + \_\$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$GlobalScriptsUrl . \"certs/\" . \$FileName . \$GlobalScriptsUrl\ + Suffix) dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n \$LogPrint warning \$0 (\"Failed downloading certificate with Common\ + Name '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"Required certificate is not available.\"\ + );\r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl http-header-field=({\ + \_[ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n \"https://mkcert.org/generate/\" http-data=[ :serialize to=json \ + ({ \$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 \$LogPrint warning \$0 (\"Failed downloading certificate with Comm\ + onName '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n \$LogPrint warning \$0 (\"Certificate with CommonName '\" . \$Common\ + Name . \"' 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 :global LogPrint;\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 \$LogPrint 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 FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\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 (https://amster.vados.ru/; main/3419/3ee\ + 19780)\");\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 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 GetRandomNumber do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndnum from=0 to=[ \$EitherOr [ :tonum \$1 ] 4294967295 ] ]\ + \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: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 :global LogPrint;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n \$LogPrint 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 MiniDateTimeStamp do={\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 :return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\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={:return false}\r\ + \n :local FileVal false;\r\ + \n :do {: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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\$LogPrint debug \$0 (\"... which does not \ + exist.\"); :return true};\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\$LogPrint error \$0 (\"\ + Directory '\" . \$DirName . \"' is not a directory.\"); :return false};\r\ + \n :onerror Err {/file/remove \$DirName} do={\$LogPrint error \$0 (\"Remo\ + ving directory '\" . \$DirName . \"' failed: \" . \$Err); :return false};\ + \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 :global LogPrint;\r\ + \n \$LogPrint debug \$0 (\"Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\$LogPrint debug \$0 (\"... which does not\ + \_exist.\"); :return true}\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n \$LogPrint error \$0 (\"File '\" . \$FileName . \"' is not a file.\"\ + ); :return false}\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\$LogPrint error \$0 (\"Removing file '\" . \$FileName . \"' fai\ + led: \" . \$Err); :return false}\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 :global LogPrint;\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 \$LogPrint info \$0 (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n \$LogPrint 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 \$LogPrint 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 \$LogPrint debug \$0 (\"Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n \$LogPrint 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 \$LogPrint 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 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 [ :len\ + \_\$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 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 LogPrint;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n \$LogPrint 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 \$LogPrint warning \$0 (\"This \" . [ \$IfThenElse ([ :pick \$Call\ + er 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: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: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 LogPrint;\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 \$LogPrint error \$0 (\"A script named '\" . \$Script . \"' does not\ + \_exist!\");\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 \$LogPrint error \$0 (\"More tickets than running scripts '\" . \$Sc\ + ript . \"', 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: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: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:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global LogPrint;\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 \$LogPrint 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: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: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: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:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\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: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# read parts of a large file\r\ + \n:set FetchLargeFiles do={\r\ + \n :local ScriptName [:tostr \$1];\r\ + \n :local fetchUrl [:tostr \$2];\r\ + \n :local CheckCert [:tostr \$3];\r\ + \n :local fetchMode [:tostr \$4];\r\ + \n :local fetchMethod [:tostr \$5];\r\ + \n :local FetchString \"undefined\";\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 #:set fetchMode [ \$IfThenElse (\$fetchMode != \"false\") [:tostr (\"m\ + ode=\" . \$fetchMode)] ];\r\ + \n #:set fetchMethod [\$IfThenElse (\$fetchMethod != \"false\") [:tostr (\ + \"http-method=\\\"\" . \$fetchMethod . \"\\\"\") ]];\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 :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n #/tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName h\ + ttp-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-value;\r\ + \n #:log warning (\"\\\$fUrl =\" . \$2 . ({[ \$fMode ]}));\r\ + \n :onerror Err {\r\ + \n :set FetchString (\"/tool/fetch \" . \\\r\ + \n [\$IfThenElse ([\$fetchMethod] != \"false\") (\"http-method=\\\"\"\ + \_. \$fetchMethod . \"\\\" \")] . \\\r\ + \n \"check-certificate=\" . \$CheckCert . \" url=(\\\"\" . \$fetchUrl\ + \_. \"\\\") \" . \\\r\ + \n [\$IfThenElse ([\$fetchMode] != \"false\") (\"mode=\" . \$fetchMod\ + e . \" \")] . \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue);\r\ + \n :log warning (\"\\\$FetchSring = \" . \$FetchString);\r\ + \n :put [\$FetchString];\r\ + \n #:put [/tool/fetch \$fetchMode check-certificate=\$CheckCert url=(\$\ + fetchUrl) dst-path=(\$FileName) http-header-field=({ [ \$FetchUserAgentStr\ + \_\$ScriptName ] }) as-value];\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 \" . \$fetchUrl . \"\ + \_- \" . \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$fetchUrl . \ + \" did not show up.\");\r\ + \n :return false;\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 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={:set NotificationMessage (\$NotificationMessage . \"\\n\\nNe\ + ws and changes are not available.\")}\r\ + \n\r\ + \n :set GlobalConfChanges;\r\ + \n :set GlobalConfMigration;\r\ + \n }\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n# Global Environment clear. Use: \"\$GlobalEnvRemove True;\".\r\ + \n:set GlobalEnvRemove do={\r\ + \n :local doRmEnv [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ScriptsUrl;\r\ + \n :global LogPrint;\r\ + \n :if (\$doRmEnv != \"True\") do={\r\ + \n \$LogPrint error \"GlobalEnvRemove\" (\"This script is needed \\\"T\ + rue\\\" for confirm to remove global environment variables!\");\r\ + \n :return [];\r\ + \n :error true; \r\ + \n } else={\r\ + \n :set ScriptsUrl \$GlobalScriptsUrl;\r\ + \n :delay 5;\r\ + \n :foreach var in=[/system/script/environment print as-value] do={/sy\ + stem/script/environment remove (\$var->\".id\")}\r\ + \n :delay 5;\r\ + \n :global GlobalScriptsUrl \$ScriptsUrl;\r\ + \n \$LogPrint warning \"GlobalEnvRemove\" (\"Done!\");\r\ + \n :return [];\r\ + \n :error false;\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 \"Setup Global Environment for scripts\";\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#:local Resource [ /system/resource/get ];\r\ + \n#:log info (\$ScriptName . \" Loaded on \" . \$Resource->\"board-name\" \ + . \" with RouterOS \" . \$Resource->\"version\" . \" and Architecture \" .\ + \".\");\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# signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\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} do={:global ExitOnError; \$ExitOnError \$0 \$Err;}\r\ + \n\r\ + \n#} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n# log the successful load of the script, or an error if it failed\r\ + \n#:if ([\$GlobalFuncReady] = true && [\$GlobalConfReady] = true) do={\r\ + \n" +add comment="Import ssh keys for public key authentication" \ + dont-require-permissions=no name=AM-SshKeysImport owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-SshKeysImport\r\ + \n# Script comment: Import ssh keys for public key authentication\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 configs or functions not ready.\"); }; } del\ + ay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global SSHKeysImport;\r\ + \n:global SSHKeysImportFile;\r\ + \n\r\ + \n# import single key passed as string\r\ + \n:set SSHKeysImport do={ :onerror Err {\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n :if ([ :len \$Key ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass key and u\ + ser!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ :len [ /user/find where name=\$User ] ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"User '\" . \$User . \"' does not exist.\")\ + ;\r\ + \n :return false;\r\ + \n }\r\ + \n :local KeyVal ([ :deserialize \$Key delimiter=\" \" from=dsv options=d\ + sv.plain ]->0);\r\ + \n :if (!(\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\")) do\ + ={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' is\ + \_not supported.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FingerPrintMD5 [ :convert from=base64 transform=md5 to=hex (\$K\ + eyVal->1) ];\r\ + \n :local RegEx (\"\\\\bmd5=\" . \$FingerPrintMD5 . \"\\\\b\");\r\ + \n :if ([ :len [ /user/ssh-keys/find where user=\$User \\\r\ + \n (key-owner~\$RegEx or info~\$RegEx) ] ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The ssh public key (MD5:\" . \$FingerPrint\ + MD5 . \\\r\ + \n \") is already available for user '\" . \$User . \"'.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$MkDir \"tmpfs/ssh-keys-import\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Creating directory 'tmpfs/ssh-keys-import'\ + \_failed!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileName (\"tmpfs/ssh-keys-import/key-\" . [ \$GetRandom20CharA\ + lNum 6 ] . \".pub\");\r\ + \n /file/add name=\$FileName contents=(\$Key . \", md5=\" . \$FingerPrint\ + MD5);\r\ + \n \$WaitForFile \$FileName;\r\ + \n :onerror Err {\r\ + \n /user/ssh-keys/import public-key-file=\$FileName user=\$User;\r\ + \n \$LogPrint info \$0 (\"Imported ssh public key (\" . \$KeyVal->2 . \ + \", \" . \$KeyVal->0 . \", \" . \\\r\ + \n \"MD5:\" . \$FingerPrintMD5 . \") for user '\" . \$User . \"'.\");\ + \r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key: \" . \$Err);\r\ + \n \$RmDir \"tmpfs/ssh-keys-import\";\r\ + \n :return false;\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# import keys from a file\r\ + \n:set SSHKeysImportFile do={ :onerror Err {\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local User [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global FileExists;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global SSHKeysImport;\r\ + \n :if ([ :len \$FileName ] = 0 || [ :len \$User ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Missing argument(s), please pass file name\ + \_and user!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$FileExists \$FileName ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"File '\" . \$FileName . \"' does not exist\ + .\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local Keys [ :tolf [ /file/get \$FileName contents ] ];\r\ + \n :foreach KeyVal in=[ :deserialize \$Keys delimiter=\" \" from=dsv opti\ + ons=dsv.plain ] do={\r\ + \n :local Continue false;\r\ + \n :if (\$KeyVal->0 = \"ssh-ed25519\" || \$KeyVal->0 = \"ssh-rsa\") do=\ + {\r\ + \n :if ([ \$SSHKeysImport (\$KeyVal->0 . \" \" . \$KeyVal->1 . \" \" \ + . \$KeyVal->2) \$User ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Failed importing key for user '\" . \$\ + User . \"'.\");\r\ + \n }\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && \$KeyVal->0 = \"#\") do={\r\ + \n :set User [ \$EitherOr ([ \$ParseKeyValueStore (\$KeyVal->1) ]->\"\ + user\") \$User ];\r\ + \n :set Continue true;\r\ + \n }\r\ + \n :if (\$Continue = false && [ :len (\$KeyVal->0) ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"SSH key of type '\" . \$KeyVal->0 . \"' \ + is not supported.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n} do={:global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err}\r\ + \n" +add comment="Enable or disable ip addresses based on bridge port state" \ + dont-require-permissions=no name=mod/AM-IPbridge owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: mod/AM-IPbridge\r\ + \n# Script comment: Enable or disable ip addresses based on bridge port st\ + ate\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"SystemScheduler for script: \" . \$ScriptName . \" is NO\ + T SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Fake Bridges\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:foreach Bridge in=[ /interface/bridge/find ] do={\r\ + \n :local BrName [ /interface/bridge/get \$Bridge name ];\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName ] ] > \ + 0) do={\r\ + \n :if ([ :len [ /interface/bridge/port/find where bridge=\$BrName and \ + inactive=no ] ] = 0) do={\r\ + \n /ip/address/disable [ find where !dynamic interface=\$BrName ];\r\ + \n } else={\r\ + \n /ip/address/enable [ find where !dynamic interface=\$BrName ];\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Check for certificates validity" dont-require-permissions=no \ + name=AM-CheckCerts owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CheckCerts\r\ + \n# Script comment: Check for certificates validity\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 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 CertRenewTime;\r\ + \n :global CertRenewUrl;\r\ + \n :global CertWarnTime;\r\ + \n :global Identity;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EscapeForRegEx;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global ScriptLock;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global UrlEncode;\r\ + \n# :global WaitFullyConnected;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Renew Certificates\";\r\ + \n/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=sta\ + rtup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n\r\ + \n :local CheckCertificatesDownloadImport do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local CertName [ :tostr \$2 ];\r\ + \n :local FetchName [ :tostr \$3 ];\r\ + \n\r\ + \n :global CertRenewUrl;\r\ + \n :global CertRenewPass;\r\ + \n\r\ + \n :global CertificateNameByCN;\r\ + \n :global EscapeForRegEx;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global LogPrint;\r\ + \n :global RmFile;\r\ + \n :global UrlEncode;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :foreach Type in={ \"p12\"; \"pem\" } do={\r\ + \n :local CertFileName ([ \$UrlEncode \$FetchName ] . \".\" . \$Type)\ + ;\r\ + \n \$LogPrint debug \$ScriptName (\"Trying type '\" . \$Type . \"' fo\ + r '\" . \$CertName . \\\r\ + \n \"' (file '\" . \$CertFileName . \"')...\");\r\ + \n\r\ + \n :do {\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] \ + }) \\\r\ + \n (\$CertRenewUrl . \$CertFileName) dst-path=\$CertFileName \ + as-value;\r\ + \n } do={\r\ + \n :if (!(\$Err ~ \"[Ss]tatus 404\")) do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching certificate: \" . \ + \$Err);\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n \$WaitForFile \$CertFileName; \r\ + \n\r\ + \n :local DecryptionFailed true;\r\ + \n :foreach I,PassPhrase in=\$CertRenewPass do={\r\ + \n :do {\r\ + \n \$LogPrint debug \$ScriptName (\"Trying \" . \$I . \". passp\ + hrase... \");\r\ + \n :local Result [ /certificate/import file-name=\$CertFileName\ + \_passphrase=\$PassPhrase as-value ];\r\ + \n :if (\$Result->\"decryption-failures\" = 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Success!\");\r\ + \n :set DecryptionFailed false;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \$RmFile \$CertFileName;\r\ + \n\r\ + \n :if (\$DecryptionFailed = true) do={\r\ + \n \$LogPrint warning \$ScriptName (\"Decryption failed for certi\ + ficate file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n\r\ + \n :foreach CertInChain in=[ /certificate/find where common-name!=\ + \$CertName !private-key \\\r\ + \n name~(\"^\" . [ \$EscapeForRegEx \$CertFileName ] . \"_[0-9]\ + +\\\$\") \\\r\ + \n !(subject-alt-name~(\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRe\ + gEx \$CertName ] . \"(\\\\W|\\\$)\")) \\\r\ + \n !(common-name=[]) ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$CertInChain common-\ + name ];\r\ + \n }\r\ + \n\r\ + \n :return true;\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not download certificate \ + file '\" . \$CertFileName . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FormatInfo do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global FormatLine;\r\ + \n :global FormatMultiLines;\r\ + \n :global IfThenElse;\r\ + \n\r\ + \n :local FormatExpire do={\r\ + \n :global CharacterReplace;\r\ + \n :return [ \$CharacterReplace [ \$CharacterReplace [ :tostr \$1 ] \ + \"w\" \"w \" ] \"d\" \"d \" ];\r\ + \n }\r\ + \n\r\ + \n :local FormatCertChain do={\r\ + \n :local Cert \$1;\r\ + \n\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :typeof (\$CertVal->\"issuer\") ] = \"nothing\") do={\r\ + \n :return \"self-signed\";\r\ + \n }\r\ + \n\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=5 do={\r\ + \n :set Return (\$Return . [ \$ParseKeyValueStore (\$CertVal->\"iss\ + uer\") ]->\"CN\");\r\ + \n :if ([ :len [ /certificate/builtin/find where skid=(\$CertVal->\ + \"akid\") ] ] > 0) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :do {\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\ + \"akid\") ] ];\r\ + \n } on-error={\r\ + \n :return (\$Return . \" (possibly incomplete!)\");\r\ + \n }\r\ + \n :if ((\$CertVal->\"akid\") = \"\" || (\$CertVal->\"akid\") = (\$\ + CertVal->\"skid\")) do={\r\ + \n :return \$Return;\r\ + \n }\r\ + \n :set Return (\$Return . \" -> \");\r\ + \n }\r\ + \n :return (\$Return . \"...\");\r\ + \n }\r\ + \n\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Name\" (\$CertVal->\"name\") ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"common-name\") ] > 0) ([ \$Fo\ + rmatLine \"CommonName\" (\$CertVal->\"common-name\") ] . \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"subject-alt-name\") ] > 0) ([\ + \_\$FormatMultiLines \"SubjectAltNames\" (\$CertVal->\"subject-alt-name\")\ + \_] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \"Private key\" [ \$IfThenElse ((\$CertVal->\"priva\ + te-key\") = true) \"available\" \"missing\" ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \"Fingerprint\" (\$CertVal->\"fingerprint\") ] . \"\ + \\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$CertVal->\"ca\") ] > 0) [ \$FormatLine \ + \"Issuer\" (\$CertVal->\"ca\") ] [ \$FormatLine \"Issuer chain\" [ \$Forma\ + tCertChain \$Cert ] ] ] . \"\\n\" . \\\r\ + \n \"Validity:\\n\" . \\\r\ + \n [ \$FormatLine \" days\" (\$CertVal->\"days-valid\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" from\" (\$CertVal->\"invalid-before\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" to\" (\$CertVal->\"invalid-after\") ] . \"\\n\ + \" . \\\r\ + \n [ \$FormatLine \" time left\" [ \$IfThenElse ((\$CertVal->\"exp\ + ired\") = true) \"expired\" [ \$FormatExpire (\$CertVal->\"expires-after\"\ + ) ] ] ]);\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n# \$WaitFullyConnected;\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !ca !scep-url expi\ + res-after<\$CertRenewTime ] do={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n :local LastName;\r\ + \n :local FetchName;\r\ + \n\r\ + \n :do {\r\ + \n :if ([ :len \$CertRenewUrl ] = 0) do={\r\ + \n \$LogPrint info \$ScriptName (\"No CertRenewUrl given.\");\r\ + \n :error false;\r\ + \n }\r\ + \n \$LogPrint info \$ScriptName (\"Attempting to renew certificate '\ + \" . (\$CertVal->\"name\") . \"'.\");\r\ + \n\r\ + \n :local ImportSuccess false;\r\ + \n :if ([ :len (\$CertVal->\"common-name\") ] > 0) do={\r\ + \n :set LastName (\$CertVal->\"common-name\");\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$ScriptN\ + ame \$LastName \$FetchName ];\r\ + \n }\r\ + \n :foreach SAN in=(\$CertVal->\"subject-alt-name\") do={\r\ + \n :if (\$ImportSuccess = false) do={\r\ + \n :set LastName [ :pick \$SAN ([ :find \$SAN \":\" ] + 1) [ :len\ + \_\$SAN ] ];\r\ + \n :set FetchName \$LastName;\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scrip\ + tName \$LastName \$FetchName ];\r\ + \n :if (\$ImportSuccess = false && [ :pick \$LastName 0 2 ] = \"*\ + .\") do={\r\ + \n :set FetchName (\"star.\" . [ :pick \$LastName 2 [ :len \$La\ + stName ] ]);\r\ + \n :set ImportSuccess [ \$CheckCertificatesDownloadImport \$Scr\ + iptName \$LastName \$FetchName ];\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$ImportSuccess = false) do={ :error false; }\r\ + \n\r\ + \n :if ([ :len (\$CertVal->\"fingerprint\") ] > 0 && \$CertVal->\"fin\ + gerprint\" != [ /certificate/get \$Cert fingerprint ]) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was updated in place.\");\r\ + \n :set CertVal [ /certificate/get \$Cert ];\r\ + \n } else={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . \$CertVal->\"\ + name\" . \"' was not updated, but replaced.\");\r\ + \n\r\ + \n :local CertNew [ /certificate/find where name~(\"^\" . [ \$Escap\ + eForRegEx [ \$UrlEncode \$FetchName ] ] . \"\\\\.(p12|pem)_[0-9]+\\\$\") \ + \\\r\ + \n (common-name=(\$CertVal->\"common-name\") or subject-alt-name~\ + (\"(^|\\\\W)(DNS|IP):\" . [ \$EscapeForRegEx \$LastName ] . \"(\\\\W|\\\$)\ + \")) \\\r\ + \n fingerprint!=[ :tostr (\$CertVal->\"fingerprint\") ] ];\r\ + \n :local CertNewVal [ /certificate/get \$CertNew ];\r\ + \n\r\ + \n :if ((\$CertVal->\"expires-after\") > (\$CertNewVal->\"expires-a\ + fter\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate is newer th\ + an the new one. Aborting renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ((\$CertVal->\"private-key\") = true && (\$CertVal->\"privat\ + e-key\") != (\$CertNewVal->\"private-key\")) do={\r\ + \n /certificate/remove \$CertNew;\r\ + \n \$LogPrint warning \$ScriptName (\"Old certificate '\" . (\$Ce\ + rtVal->\"name\") . \"' has a private key, new certificate does not. Aborti\ + ng renew.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$CertificateAvailable ([ \$ParseKeyValueStore (\$CertNew\ + Val->\"issuer\") ]->\"CN\") \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$ScriptName (\"The certificate chain is no\ + t available!\");\r\ + \n }\r\ + \n\r\ + \n /ip/service/set certificate=(\$CertNewVal->\"name\") [ find wher\ + e certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/ipsec/identity/set certificate=(\$CertNewVal->\"name\") [ fi\ + nd where certificate=(\$CertVal->\"name\") ];\r\ + \n /ip/ipsec/identity/set remote-certificate=(\$CertNewVal->\"name\ + \") [ find where remote-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /ip/hotspot/profile/set ssl-certificate=(\$CertNewVal->\"name\")\ + \_[ find where ssl-certificate=(\$CertVal->\"name\") ];\r\ + \n\r\ + \n /certificate/remove \$Cert;\r\ + \n /certificate/set \$CertNew name=(\$CertVal->\"name\");\r\ + \n :set Cert \$CertNew;\r\ + \n :set CertVal [ /certificate/get \$CertNew ];\r\ + \n }\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; silent=true; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen\" ] . \"C\ + ertificate renewed: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" has been renewe\ + d.\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' has been renewed.\");\r\ + \n } on-error={\r\ + \n \$LogPrint debug \$ScriptName (\"Could not renew certificate '\" .\ + \_(\$CertVal->\"name\") . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Cert in=[ /certificate/find where !revoked !scep-url !(expire\ + s-after=[]) \\\r\ + \n expires-after<\$CertWarnTime !(fingerprint=[]) ] do\ + ={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n\r\ + \n :if ([ :len [ /certificate/scep-server/find where ca-cert=(\$CertVal\ + ->\"ca\") ] ] > 0) do={\r\ + \n \$LogPrint debug \$ScriptName (\"Certificate '\" . (\$CertVal->\"n\ + ame\") . \"' is handled by SCEP, skipping.\");\r\ + \n } else={\r\ + \n :local State [ \$IfThenElse ((\$CertVal->\"expired\") = true) \"ex\ + pired\" \"is about to expire\" ];\r\ + \n\r\ + \n \$SendNotification2 ({ origin=\$ScriptName; \\\r\ + \n subject=([ \$SymbolForNotification \"lock-with-ink-pen,warning-s\ + ign\" ] . \"Certificate warning: \" . (\$CertVal->\"name\")); \\\r\ + \n message=(\"A certificate on \" . \$Identity . \" \" . \$State . \ + \".\\n\\n\" . [ \$FormatInfo \$Cert ]) });\r\ + \n \$LogPrint info \$ScriptName (\"The certificate '\" . (\$CertVal->\ + \"name\") . \"' \" . \$State . \\\r\ + \n \", it is invalid after \" . (\$CertVal->\"invalid-after\") . \ + \".\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\ + \n# RouterOS script: AM-GlobalConfig\ + \n# Script comment: Global Config Script\ + \n# Copyright (c) 2007-2026 Vados \ + \n#\ + \n#\ + \n# Warning: Dont touch this line!\ + \n:global GlobalConfReady false;\ + \n#\ + \n#\ + \n# Global Url For Amster scripts to fetch\ + \n# most be defined in AM-Init-Script or AM-setup scripts\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\ + \n:global ScriptsUrlSuffix \"\";\ + \n:global CheckSumsVerify true;\ + \n\ + \n:global ScriptUpdatesCRLF true;\ + \n:global CommentsInScripts true;\ + \n\ + \n# Debug output:\ + \n:global PrintDebug true; #false;\ + \n\ + \n# Debug output for specific script:\ + \n:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\ + \n\ + \n# Debug logs\ + \n# Other actions (disk, email, remote or support) can be used as well.\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\ + \n#/system/logging/add topics=script,debug action=memory;\ + \n\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\ + \n:global Domain \"WORKGROUP\";\ + \n\ + \n:global EmailGeneralTo \"vados@vados.ru\";\ + \n#:global EmailGeneralCc \"\";\ + \n\ + \n# \$ScriptInstallUpdate mod/notification-telegram\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\ + \n# Use this to send notifications to a specific topic in group.\ + \n#:global TelegramThreadId \"30\";\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\ + \n# or user names. Groups allow to chat with devices simultaneously.\ + \n:global TelegramChatIdsTrusted {\ + \n \"454403445\"\ + \n \"-1003631309063\"\ + \n \"-5124482807\"\ + \n \"1087968824\";\ + \n};\ + \n# \"-5294757340\";\ + \n\ + \n:global TelegramChatGroups \"(all)\";\ + \n#:global TelegramChatGroups \"(all|home|office)\";\ + \n\ + \n:global NotificationFunctions {\ + \n \"email\"\ + \n \"telegram\";\ + \n};\ + \n# Toggle this to disable symbols in notifications.\ + \n:global NotificationsWithSymbols true;\ + \n:global TerminalColorOutput true;\ + \n\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\ + \n\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\ + \n:global updateChannel \"stable\";\ + \n\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\");\ + \n:global CertRenewTime 2w;\ + \n:global CertRenewPass {\ + \n \"\";\ + \n# \"v3ry-s3cr3t\";\ + \n# \"4n0th3r-s3cr3t\";\ + \n};\ + \n:global CertWarnTime 1w;\ + \n:global CertIssuedExportPass {\ + \n \"\";\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\ + \n};\ + \n\ + \n# Script BackupAndUpdate mode, possible values: backup,\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\ + \n# osnotify - Set `forceBackup` to always create backups on every run\ + \n:global DevInfoIncludeIP true;\ + \n:global BackupAndUpdateMode \"osnotify\"\ + \n\ + \n:global forceBackup true;\ + \n:global BackupPassword \"Peskar55\";\ + \n\ + \n# SFTP Backup Variables\ + \n:global BackupRandomDelay 0;\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\ + \n:global BackupUploadUser \$Identity;\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\ + \n\ + \n:global BackupSendBinary true;\ + \n:global BackupSendExport true;\ + \n:global BackupSendGlobalConfig true;\ + \n:global BackupSendScripts true;\ + \n\ + \n# Remove local file after uploading if no errors\ + \n:global BackupRmLocal true;\ + \n\ + \n# Local Backups Root Directory \ + \n:global BackupLocalRoot \"tmpfs\";\ + \n\ + \n# Encrypt Backup\ + \n:global BackupEncrypt true;\ + \n\ + \n# Sensitive information in Backups\ + \n:global BackupSens true;\ + \n\ + \n# User Export\ + \n:global BackupUser true;\ + \n\ + \n# License Export (not for CHR, will silently skip)\ + \n:global BackupLicense false;\ + \n\ + \n# SSH Keys\ + \n:global BackupSshKeys true;\ + \n\ + \n# Certificate Export\ + \n:global BackupCerts true;\ + \n\ + \n# Certificate Password\ + \n:global BackupCertsPasswd \"\";\ + \n\ + \n# User-Manager Export\ + \n:global BackupUserMan false;\ + \n\ + \n# The Dude Export\ + \n:global BackupDude false;\ + \n\ + \n# User Files to export, comma-separated string or array of strings\ + \n# User Files are not removed on backup\ + \n# Any directory paths will be removed (/ -> _) on remote file\ + \n# Nonpresent files are silently skipped\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\ + \n\ + \n# load functions and any custom scripts\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\ + \n#\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \n# :onerror Err {\ + \n# /system/script/run \$Script;\ + \n# } do={\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\ + \n# }\ + \n#}\ + \n#:log info \"\\ndevMode = \$devMode\";\ + \n#:log info \"\\ndevRunning = \$devRunning\";\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\ + \n :onerror Err {\ + \n /system/script/run \$Script;\ + \n } do={\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\ + \n }\ + \n}\ + \n\ + \n# signal we are ready\ + \n:set GlobalConfReady true;\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\ + \n" +add comment="Renew locally issued certificates" dont-require-permissions=no \ + name=AM-CertsRenew owner=AM-CertsRenew policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-CertsRenew\r\ + \n# Script comment: Renew locally issued certificates\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n#\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 CertIssuedExportPass;\r\ + \n\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global ScriptLock;\r\ + \n\r\ + \n# Add this Script scheduler\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n:log warning (\"System Scheduler for script: \" . \$ScriptName . \" is N\ + OT SET! Fix It Now!\");\r\ + \n:local OnEvent \"/system/script/run \$ScriptName;\";\r\ + \n:local Comment \"Every Day Check For Update Local Issued Certificates.\"\ + ;\r\ + \n#/system/scheduler/add name=\$ScriptName comment=\$Comment start-time=st\ + artup interval=1d on-event=\$OnEvent;\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 :foreach Cert in=[ /certificate/find where issued expires-after<3w ] d\ + o={\r\ + \n :local CertVal [ /certificate/get \$Cert ];\r\ + \n /certificate/issued-revoke \$Cert;\r\ + \n /certificate/set name=(\$CertVal->\"name\" . \"-revoked-\" . [ /syst\ + em/clock/get date ]) \$Cert;\r\ + \n /certificate/add name=(\$CertVal->\"name\") common-name=(\$CertVal->\ + \"common-name\") \\\r\ + \n key-usage=(\$CertVal->\"key-usage\") subject-alt-name=(\$CertVal\ + ->\"subject-alt-name\");\r\ + \n /certificate/sign (\$CertVal->\"name\") ca=(\$CertVal->\"ca\");\r\ + \n :if ([ :typeof (\$CertIssuedExportPass->(\$CertVal->\"common-name\")\ + ) ] = \"str\") do={\r\ + \n :if ([ \$MkDir \"cert-issued\" ] = true) do={\r\ + \n /certificate/export-certificate (\$CertVal->\"name\") type=pkcs1\ + 2 \\\r\ + \n file-name=(\"cert-issued/\" . \$CertVal->\"common-name\") \\\ + \r\ + \n export-passphrase=(\$CertIssuedExportPass->(\$CertVal->\"com\ + mon-name\"));\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\"\ + \_. \$CertVal->\"common-name\" . \\\r\ + \n \"', exported to 'cert-issued/\" . \$CertVal->\"common-name\" \ + . \".p12'.\");\r\ + \n } else={\r\ + \n \$LogPrint warning \$ScriptName (\"Failed creating directory, no\ + t exporting certificate.\");\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint info \$ScriptName (\"Issued a new certificate for '\" .\ + \_\$CertVal->\"common-name\" . \"'.\");\r\ + \n }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add dont-require-permissions=no name=AM-Backup-UpdateEmail owner=\ + AM-Backup-UpdateEmail policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "#!rsc by Vados\ + \n" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/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=fetch +/disk settings +set auto-media-interface=lo default-mount-point-template=usb1 +/ip smb +set comment=MikroVados domain=WORKGROUP enabled=yes interfaces=Bridge-LAN +/interface bridge port +add bridge=Bridge-LAN ingress-filtering=no interface=ether2 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=LEN ingress-filtering=no interface=ether3 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN comment=NUC ingress-filtering=no interface=ether4 \ + internal-path-cost=10 path-cost=10 +add bridge=Bridge-LAN ingress-filtering=no interface=ether5 \ + internal-path-cost=10 path-cost=10 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set disable-ipv6=yes 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 comment=WAN 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 cap +set caps-man-addresses=10.30.30.10 certificate=request discovery-interfaces=\ + wlan1,wlan2 lock-to-caps-man=no slaves-static=no +/interface wifi capsman +set package-path="" require-peer-certificate=no upgrade-policy=none +/interface wifi provisioning +add action=create-dynamic-enabled disabled=no master-configuration=2G-N \ + name-format=2G-%I slave-configurations=2G-G supported-bands=\ + 2ghz-n,2ghz-g,2ghz-g +add action=create-dynamic-enabled disabled=no master-configuration=5G-AC \ + name-format=5G-%I supported-bands=5ghz-ac,5ghz-ac +/interface wireguard peers +add allowed-address=10.8.0.2/32,0.0.0.0/0 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s 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-18FD746E5814 discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/interface wireless sniffer +set file-name=24g +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main interface="ether1 - Unet" name="ether1 - Unet" \ + use-peer-dns=no +/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.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.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=1:20:72:a9:d3:34:36 dhcp-option=HostName \ + dhcp-option-set=MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP \ + use-src-mac=yes +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 +add address=10.30.30.86 dhcp-option=HostName dhcp-option-set=MikroYellow \ + mac-address=48:8F:5A:8E:1A:C2 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.8.8,8.8.4.4 verify-doh-cert=yes +/ip dns static +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru 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=git.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=ros.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=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.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.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" 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=2606:4700:4700::1111 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +add address=2606:4700:4700::1001 disabled=yes name=\ + security.cloudflare-dns.com type=AAAA +/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=amster-nuc disabled=yes list=NoWG +add address=10.30.30.11 comment=MikroNUC list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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=10.30.30.95 comment=NUC list=NoWG +add address=glb.tas02.cws-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.cws.update.microsoft.com list=windowsupdateslist +add address=glb.cwsapp.prod.dcat.dsp.trafficmanager.net. comment=\ + glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas01.cwsapp-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas01.cwsapp.update.microsoft.com list=windowsupdateslist +add address=disc601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid disabled=yes +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 +add action=fasttrack-connection chain=forward comment=\ + "FastTrack main traffic" connection-state=established,related disabled=\ + yes +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=\ + !10.30.30.0/24 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=!NoVdsina log-prefix=VPN-all \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp tcp-flags=syn tcp-mss=1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 dst-address-list=!NoVdsina log=yes log-prefix=VPN-Net \ + new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + in-interface=Bridge-LAN log-prefix=WG-nat out-interface=WG routing-mark=\ + To-VPN +add action=dst-nat chain=dstnat comment=npm disabled=yes dst-port=81 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps disabled=yes \ + dst-port=443 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + disabled=yes dst-port=80 in-interface="ether1 - Unet" protocol=tcp \ + to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=80 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=80 +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 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-address=146.120.64.211 dst-port=32000 \ + in-interface="ether1 - Unet" protocol=udp to-addresses=10.30.30.95 \ + to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=tcp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +add action=dst-nat chain=dstnat dst-port=32000 protocol=udp routing-mark=\ + To-VPN to-addresses=10.30.30.95 to-ports=32000 +/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=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 log=yes +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 walled-garden +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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=yes distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet 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 +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 +/ipv6 firewall address-list +add address=::/128 comment="defconf: unspecified address" list=bad_ipv6 +add address=::1/128 comment="defconf: lo" list=bad_ipv6 +add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6 +add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6 +add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6 +add address=100::/64 comment="defconf: discard only " list=bad_ipv6 +add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6 +add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6 +add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6 +/ipv6 firewall filter +add action=add-src-to-address-list address-list=bad_ipv6 \ + address-list-timeout=none-dynamic chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked in-interface=WG in-interface-list=WAN \ + src-address-list="" +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=input comment="defconf: accept UDP traceroute" \ + dst-port=33434-33534 protocol=udp +add action=accept chain=input comment=\ + "defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\ + udp src-address=fe80::/10 +add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \ + protocol=udp +add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=input comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=input comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +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 packets with bad src ipv6" src-address-list=bad_ipv6 +add action=drop chain=forward comment=\ + "defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6 +add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \ + hop-limit=equal:1 protocol=icmpv6 +add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\ + icmpv6 +add action=accept chain=forward comment="defconf: accept HIP" protocol=139 +add action=accept chain=forward comment="defconf: accept IKE" dst-port=\ + 500,4500 protocol=udp +add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\ + ipsec-ah +add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\ + ipsec-esp +add action=accept chain=forward comment=\ + "defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec +add action=drop chain=forward comment=\ + "defconf: drop everything else not coming from LAN" in-interface-list=\ + !LAN +/ipv6 nd +set [ find default=yes ] advertise-dns=yes +/ppp secret +add local-address=192.168.60.1 name=vados remote-address=192.168.60.2 \ + service=l2tp +/routing bfd configuration +add disabled=no +/snmp +set contact=@AmsterNL enabled=yes engine-id-suffix=MikroMaster location=NL \ + src-address=10.30.30.81 trap-interfaces=Bridge-LAN,WG trap-target=\ + 10.30.30.10 +/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 ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Windows Update script" interval=2d5m name=WU-script-run-schedule \ + on-event=WU-add-to-list policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2014-02-11 start-time=00:00:00 +add comment="Backup Every Week" disabled=yes interval=1w name=BackupEveryWeek \ + on-event=BackupAndUpdate policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-07-07 start-time=03:41:27 +add comment="DoH Cache Flush" interval=1d name="DNS Cache Flush" on-event=\ + DNS_Flush_Cache policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2019-12-06 start-time=05:30:00 +add comment="Create mkdir function on startup" name=\ + create_mkdir_function_on_startup on-event=\ + "/system script run create_mkdir_function;" policy=read,write,policy,test \ + start-time=startup +add comment="Scheduler for Update Certificates CloudFlare Quad9" 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="Setup Global Environment for scripts" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Fake Bridges" interval=1d name=\ + mod/AM-IPbridge on-event="/system/script/run mod/AM-IPbridge;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Renew Certificates" interval=1d name=\ + AM-CheckCerts on-event="/system/script/run AM-CheckCerts;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Auto-update Cloudflare Root CA for DoH" interval=2w name=\ + AM-DOHCert on-event="/import AM-DOHCert.rsc" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2026-04-15 start-time=03:00:00 +/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/20260430/20260430122002-Diff-Config.rsc b/MikroMaster/history/20260430/20260430122002-Diff-Config.rsc new file mode 100644 index 0000000..b405803 --- /dev/null +++ b/MikroMaster/history/20260430/20260430122002-Diff-Config.rsc @@ -0,0 +1,14 @@ +695c695 +< \n:global CommitId \"main/272/ec61099b\";\r\ +--- +> \n:global CommitId \"main/268/e6e9840c\";\r\ +698c698 +< r: root, in 12:00:02 30.04.2026.\";\r\ +--- +> r: root, in 10:40:03 30.04.2026.\";\r\ +4557a4558,4562 +> add comment="Scheduler for Amster-Backup-UpdateEmail" disabled=yes interval=\ +> 1w name=Amster-Backup-UpdateEmail on-event=\ +> "/system/script { run Amster-Backup-UpdateEmail; }" policy=\ +> ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ +> start-date=2026-02-13 start-time=03:41:27 -- 2.52.0