From 46457e4060c667e9c0b9ad3685d81ce2aa36b97b Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 10:00:25 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 10:00:25. --- .../20260511/20260511100001-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511100001-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511100001-Diff-Config.rsc | 16 + 3 files changed, 4669 insertions(+) create mode 100644 MikroMaster/20260511/20260511100001-Binary.backup create mode 100644 MikroMaster/20260511/20260511100001-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511100001-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511100001-Binary.backup b/MikroMaster/20260511/20260511100001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..57fc66a4c1504b2f6e2c91218998bf5a7f487ba4 GIT binary patch literal 302647 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 z zhk_CErV*Iz0Z+rBA5Le1{D!dh^~YX{`&EMkNfcisn-!>%h^+tZGHo;!){7JDrqno z&G=&I&YgE8v{UukIyAmuYacF)`2R#4Rb{f1Lej;>Kl6+@s+jNNA;n49hB9$VqiVj< zGcCCJPS+$%^CoWCS!T~{ogHXjdu3#+k@b*i5J~6;l)A?{0_eWJ;CHH*p%jk~VERL~ zFWN-Ed7LoF!?2xNp6d6F_i=r(N(10mUZ2E%Xhv=lhlLuyG+x(O@r>(tD8Ls}*~|oP zzT?ugpk9_=_3ClT-FwuK%YkLf(&`|XL7SHqrl;cx2sBRI447)zG*0}=WU}6PNNX|4 zOMHcTJt@3vn2sXdQ&<58xo@GjG0Oqh$th;Llnwn_C2JbG#uGZ;kp&w%V*ntfiJTg~ z!XPmed+N-SQdzd@APAJ4c(%u$Qhs!-N`(h^UOWu`AMw+3#9>xvF8oQ5-^lX2h(l)s zzFlr6=a`J3Y;MEj<5kbU6>FdrhF9nQXHVY}--KyHf}8o}DHJGRw5$7ooK##0I=UYj zqFT zA<^F^k(KQcCl5pnhfgf$_q|gm&YpZ3gfO1uN<|KJzwe zrqektsPkyTD?W!+q6o^ zDB3tlQ$rIOvJ`Mj8jjI?XbwobD%U?BzhbUnGqLL+cRGCqK)CLa0f(RXw3ArCy>P;R zz2p+jGVuKuF;Ofktlc;DDZo9DpVE3+3!vKJY`)N0!-Nj#@ir*aKi39m%-J~&Rj_#X z#Gi?Lt(Ho~%idL>{Fe_N ztb)j@>{$iKA0ZNU>n5WDdU_|*G0%$pnC%*f7fMJo~^{lgNFKy z-i68S@V{K(h>K}FYFX>CVsPV?v@Mrm z2iD|5?5vb>P*OsedcO9JVk(#-SZDbDYh+kfLPL8S!3(l?QXfjDsKR*EjdjREMm6oD zP!I?Tk4XL8AB&~maiXCY;h5G31pMg?T62Cp3C`nww=}W^bGSlpF&wP-4sb$;dW-&2 z6)x(#H1GvTRVUM`Tub2c!q-(Ji-h!^Vp}k|gwlXzXOwS--Iz`Gv28Oi`|oW4y@|}4 ztC*M2wPy;UD%(V2%2Pi;QEoti;v+67RJMlVVeJP+BjncXaV3ekq&3CHdfnt84xTeE z_GGgRpARgX>q!VsAvx;9{6g>D2;pLgGs+NpJ0SLm7acdNpTQH^*qAO(3gmY-Gw7r& z%buUNGbNN(BrAp(+6?il%m-5d6_`2SE8rHSV>pXgAM(&Ph=5}b zg*u1u7}LWGQ?f`vPE&vp<#CyIRD#f1V(Tt=I(VnGsvPmw&2$zm^N%K7i3ebyi*=Yvq^k9t}E zc_p~FAoA_L4XhV22fQnU~i9Y(S4Vy>?1m+1KsugX~Qw_^@}>5&*HP~Yv zb&w2Hlo=#^cRg(~CQTHncH~I)xw6*W$&R2NEOn7c%zqXJmxa>#PD~+)eGz=^02=rl zne?S3c+za9jVAA zs6dl!=oKwqOkYlGH3zP$)d)gadIUF`Cp6)0-^nAU)-un!L#u$tbv+deT?q*Unnf2o z5dhE8_#3syQX0TT#y!7C=dWX2Rbmh&!%WBCeX+<}0F@75iBDz2q;X*sKk;&ol1-uu zq;#@sVhTsniN$;s{vGe@2rIbFPDu(@j+)vTT-aZ$BU#N~xv}4TZQTbKW9a>^rTnT^ z!9Dyn>8~*S<#o{wmqD(|F59*lzfJmIh^IbR#q(q3&gOIek}4oFXhPdMYHJ1M)W(=w zQF>+$zR8otUyau#6yAWrchahz5H=Ij`fI4P(Z^nhAWsWb(1EsJbWcZL5_Fu)WUTd6 zw{|Wn@J&`2s#OYV%=M3r?)K|L6`$}Z71vZj1GJ!axG&^=2;b!HZS+N-9AQ#?GIK~( z(+K`s6Q`VM157?hI$|4K-RhHaV~;$omC9o2?t_aD;t{I4a|RMo`r)aMmu#&=MUBGiQ*`)w%R@y&)YgON)3|(Ct+~}KSI3bwNTp|elMg|%Zq-Sr0-a5 zmy5ryaPY1(ExI?0IITo#5SCjBqQ8m_D(xw+ISnp(2B^L&BduxuD$ z;F0o4uS-QnBd5eM1TtPF1nR2Kl5ILu;J$bYZ=jl)UuCM_Dg`56ZkgS$83*o<&e>w9 zS3ymIOzZRUU+Y0h`ZV(ztSR!Auxk+0W~nfUf|SDFJ!SmS5cF`}@y1g2$m*l0ul;@- zXZmfhR)>-dg{hj${XM2S4ODur@+3;`WK^q<)=2FJAyIZ>@R`78_AE11V3*4ub#C!e zBLJ4UYv^AlgsDMXePw5hh84j&NXwuGA2IQ<&#Bfz6<#d9924q!Z}btG04IcfZpctUSbjzF^=(GKM=w7|pFf-n+ufw)Fisv%e z=p@$W(OR7iLEBLm7=AW}rTxwlWEx6emQ5J#HWFi<0O^FjR3^u-DtWWJv_`M;8~^I0 zT8tA9`>wD59xyy@;|IIB^_3f3&dVasi`6M~Bs`48B~nfc;@LNy^N|@|4x}=8K|hWX zZb>fcX^nd5KZfybcw)+3+=(BBR_7HsafDgV3~yO7^fDB|h;$|#@b$0zj3I9$7*1bM zmv53ELpy52v}FM;*I*xxC{CH3_YG4zfMI(LlLU0v^!JnXWQJNw)!wDV_vnAw(7|V92LY9Ku zNxjF+JxLOL%!qRN`YMkV=W~{8vGcQjNFcOtX`X3ogD7{V>|3i)sPWF z%{e+VqaK<9P^3A#0Ik(+R@I!}w_hNZuv`J$O7Z{G zO*cs?k68Sz?mD*B*S!|2)*PzvOtk~EG6JL00PUYiQNITfNny_}Zg`N^EO2GDn53`==(%M1{E8E@pj!!u&FxSW3 z%aA>{gu$z{O^tgRef_lOrp+YL7v@E0DLcH{$!J*2=~AH~=>e1Mlr)^CjHsKJwB5T* z6g0+5s$tqK_(7B1P`YG_N1@;O1g02sZM}%G zA7Lj!Cb___lR}KBZ-QH1SJK4%_;T97)gx%!PvQ5Tfc4zsxa~7|Kc=tGjdR=;@jxwm zlBU-jgcOpL(2vz=3!cuTrFE~VAB7?ko_{@74PNi{C08EX$3zBzlx*{+r1yoedFBNc znMUCFmVX4ZdkMBG%I5)G{?LV?c&a0e2%SBcF%Uw>5NFy>=O8hf&{dXTsgRpdSri(Z z?S8DwC+JaCX3?n{qV`3Oz$2HcOqJ1xRC)=YGM!EfB(fBN<8!VM(O2W3Fh@GBUkq>7 zL#>2C)mvI6?~hZ}4>o)03h=ovR6XCli|pWVA~Yz>QuO74QQgqeY?8gUf4bI&rA6l^ zvbS^Um~sfi>Iwl+{7p2MyeeF^Q+jhDI)?O29-IXSc^LCM)iRUkSXd+(N9KY+?e%{6 zk~?;mj$sz%jIjP9=fEZRf5oSP$=&wfX0oi6!G$Et3vlTPFUn#_g$?Wuuu_1H`XvjD z@9EVXawK{@vXgPgb4^`4!y_rxg|fsciPf6j`+MaJCbE69n3#x_#}y7*%skOZbLYYO zB!7Kt7$o?8atAFvKiO4cUCZN%@q1kKMcrmi6f77l@Ovumng-S_N*fO00AC0TNtN1E zo9>9xS*RQFFvSOd{| zH>{NcXTAkV2~zu6H9=C75Gi2ZR8%pA6JK&N=;ZIT6Ko~T&~CJiFF+{s>nGT5^Gu&I zN(%Qwa$FlwM{5YpL5Dmq(_|54l^=p7vik{S z^)^c&D`~F!_Svz*WwtT8R*n#5fWT-kBB{DCOHvBbquDKKcug(L;CP5%XY|qr*0jA3 zCQdD+ClYfB5-}lg%YjyOal+Z7NaYMN@lG|0MiohC=W_r}n#uOo1nE=2Z~-oiccz{k zX)aQMphfo`CRTCm1V=CxD1frCg!|@kO=?~SBCxE+psU?=1_i!BBVzB=+AwLwei#6WA>crgvl)~%I; zT+DzQ$wj3!+(2!++xQa4<5uUN(bq6xktz`yg|1usAlJihAiB`e_5Y#zEBdvGR_#5X z!QPFAlG8)X@j`7*)QXJe0a-A&hn5>Vmy~uNUHM>%dD&J44?Bv?s|g>fMiF!`gfjKg z4b1}djuWXXy&#rPL4lC!i5Kvy@V#<>MMTtmH-&$X4PKR;40c{E)~-V6zkt6C1}N(( zPX05}+&Y;bJ?qFqXcWNz&WC66i5!H!v&hXPP!pgTw0^?up4`<25Q7M{tmIZ<*&J~V(z-R*N`CQsM^35#AVL)QP@Hgp3Nxe zqNtTpF0ASUiC8sgBQRrN$JH|Oj)`mt==^Ka8OC(dv-bE^^_PHkwj4fv-p+hw?uqG5k`G=#lX>N2vGa`x{tM(CAA}5bDKViQV)-2f%B) zWKOWK!xN!vB=s#NonsxEtyh#eeW5k9rZuddWXB^VstZLgNsBLxHOQ6b&^|8boMsToCTU(R2B@rPdP@5ntexJ&tc~2f&PETDk*#M2qRJ6_R(OnN6Ejj z3J(ZeNEkm`D_S?$7RxtQK<~lsqaTDv#0v~iaOu0Obz>@BPbLz##W@iXhP(dq3geCT zEisB;8MR`>y;1L~L-4pWDBbn1S^!%}LPO6WXMjwb+QX3o!9zB++8;#H4I*JE(YOJD z1{Oy|7MFEwXFw5cucVWPfi9a*cRmm)KGn8HhWVtKVM|tW?@+T;1H`qv5$@X$RTH@+ z5Mw6fop}t=mW^h!LEI#h`cx@b6%@TOJ)#aT>d&R0M~BzEFL32EqHCRjym)Y7G@X2rxNWG?x%>yNg$?aOoHuwl-QxUB z(ohj|gLlO;@ni-D)`cPK;vV^=c>ITz-Sn2ERUEMtkWnNn;26o@nUf#tCw&zZ9p9`? z8KM^F+6k!%L(gknJXXf}NRZ2Y8hpvhyJHfu=2AR|L)eM!NanTdk;F`Ll^g$=DGr!_SzG^q%pozL)HbldHG627El-kF5FMceBS zBd68V^2);si`81P>TtUXpaV2|*n35vGqsW09@o~FBbi$RzK&L&?DK@N=C zpxbR#w_h?blOjI(pqP}@IHxS>JHw|u&ts${N~#kOct5Q}{x~CgN=zI5bL$Pa$H`+d zT=Hjf4Fo&}U-^8L-A3^w>rkSveXhTGTR> z=4OJ|8BU+QxIj-1hP($DiC5ekPSO*T_~1xS|ALLQu@MK38#iJ!O@OLk#h@`ROfWe4 z?mGV>53}C2qzb0x%Ug$tbh5r#GmK9yD<1bw4Xp|*PfOnjRo|*hN72<3;L@@RHZ4AL&761`xIsMwT#?8WpvEa^R`;L(n!$+jiFEcv8gZo)c*EuMmhmm8mD1uG@MM= z!dSlaThve+Ln%=<`vHG69r-$v5oGK?UK!beESc4VMrkKZhO5mL zU6iVRK>)WX5oI##Z815~)Mz~Gjltwz?0MRGe8_-5qw(fm;0m6VLEFN246hS%>Fa)i z_!@Ij^~bZ>tL<1SBTsn8q}6eMs839aK+E#-hyb{fU@{z!cynNIM_ zG0+2~lu51|!Vso*teR^bt_)?_PhL2cG>z?H7(0ZUyt`fXG|76 zzs#OUxkOoF!z!nzKL8^M&xTF0_2;?z0 zO1G3Ac-MXX29~VE>W)tyb;Q)_wpcYGKlG-irHeF9`YvWVo64Q%-0A}{E@qcptRjY5 z(%J$U@6cCmTfd)C`K#PDM-eZ3eDG zspI(s_X4WDpW-F|t(sLpYCB=(xuCqfycEyzo z8wHx}5&&#&?lf zEcb5fFzZp)W6l+p4WUJ;`}|A2WysV0{#Gon-}am}2djR3w%gWkgU#DUrA? zr|lN>EoARfdGm`%cS(?wWOsN4>t5PcuH63)d7w*kBvoBF?!`j#n4XH4zVB11TS{nT zqyVHlugsZ6rpgl`GL!cZh_C3RHTPY*7-U#}=VWJ8eA% z9_#Qkm@Wdmkze4wrQVwkH6j)+HvsaoJxIuyF-tc2sJH3&h#_}$^<|o&zRpO&{n6j6 zUCP#++~rr8NAz2nu2=)E#k_&h%q z3u?KSGEXdi{?T?&d)InIXu99I3#(tzCdJ!oj($a)se4`qN>6CxOmf`!8gz}3f_3-i+5`@EDbQ+%q+(X2s>i#3(`q% z86iHiK>XbD=JwWr!ulUEM?5#&EeGGi@&rMfm<2E$C_XXOirBi+knBQQ`NkEyzQw(N zW9%gR)}26&t1961^xgUy<+I6l7ySK?etww87-t#MH0d8VOMe+0s8Ev7V#+D%L?APLm?2m4Qq!@?Q<)*k(+@^%Br@zdes$Ido6Xp zI}(FNb?0&{y|hhkWlc#Gh56QhoN~jfE&3xLH>4|yJDugwCw0g`4JCv7UjiSkH!^T~ z@Obe^Df#L5KbZZz?u3R(c^2(Mf#r5hoa(tr62d9Y6ddmXKn$gl))b^lhh6*WfosPg`Uzv#0V&f zC|F`3bmhuq7`C^{F_pAd&ZtO%aUZl}r@M1alBEoKdONxB z-?Fif>ul=zJAtO8R#FP*?U7=0Y`jIRe9w1xpt5HC5QL)BVSJNGFoe_3RAUFI*Ig62 zJeYp7xiit>Mq51CA~jdlAVN0EZpJ3G-@DK=x=q8-IH_40Oga~#27TSC;xVpZ@Ykl0^}BML z>n&~|*&ngMvS{QNPA2~Q-ccX=_HtMi333~8|9RFxP<4S6IBCmI`XP$|1`qhGwtJ&P zivS1tykb@O^XmI9Hf#9Jno;||28w7#D8ipJ8H#L9QwC-)UT0yVi_W6NX?a~+Uv1eT z+y;}4c;gk;?J|UZZ2sXM7)?fGMy_+w%9LK2i^C*6Dl^P&jwz+$)8GI;7M8{b=*8>H zvx{=UhC)s`rJ1R7J#}oAZ;HI7icd)F3(~FT zA>eF2YPrH_+4)i_9~@c?^}9KNajTeMCkPf0IJ5RyXsklqG_Gpf z>cTxxbfFA3(#nAT$(-x4WqdCov%BDTP6O0yQ~^Pj;H5i?gr_u03{w0)!|S{h#KKiD zCqn-#(*=?QsD8s-CFRk@i(U4aKz-=VbT1pA(i(e!k2{DHV4m|CDPXWrWJ`g+XPHJZ z>JT~kwI)Xy!f3jHZWauZav*_WD!GX<-JE21`yIjoSz$@9y$W9Cz!wFXFB!3-cf;H5 zx#@2$`QT1h+AV+lBmG3|7ZSfJFk!+YDKf_~po%$D8IPwiO!G|JYPK*(`2AtRDeV-Z z*&}SCF&dT=N$zopUkQMV&+gO8HU9SzctR&U~~eG9{L(~-s{ex%+i%55XmNLVg+>Aj8Ln&2&izN(vn0&-?A#AjML*}oHP(x*-gR9@1!r3zSi7?SVT zfu3tc^c4}SnnThX!xZ7TbLIot+XvFx83B67O@~Dof(&n&GKh$LhDhJssloD)%*eTS zy%E;k(Re1m8ppKcDUk*{GgT(wfV1kF?$ImJjR7>-4>+w@z-Nj7J>X({rOEqWFL6LD zQKNm)0~t}H&g&m{tvm)l&^#tWtQ>*NRoGjIB8o-NxT$r3D?zU}-Z|hxEo4-kKAqWq za8!d?p=<49fE@}EUu8f2B8@R$yz-bqiHD$06Mr!HhLGu^KG|z^#Gj6aAi5XO}O-*>LGA`oOaNFAsJdznV+(h0fy=q_2|EfU0`U+*D<; z>qiN?$Vyw&aILiD9dzljUSjZ4IHY+~K;Cogu6E3%hyS|$O($uBTEj6QcPiUOnvbmU zcTB;TVDH?Twy5(-)zf9Bf^XO*{`qC^(>*r>sXrREI1pg8)vt*qxLxyAqbAOV@tYPa zVS&F{ntju+RJ_3r&(5GAs^b}-s3cHu8MCDvZOh)E55trnQ{+l?7EbzE)qUJZU&HI} zY$hsi0I+>=LhN%_l_4?jyE3bp@IG0=5YF^$B0OUve0EOiJk5FWUyqavo&QqF$M_LO zGI>%=k~Y&5&Fe7FW*1#g!D&+Vrt!f%kjtg!2&wf+Rsk;k#jcI#6B^Ew_x>fZ93%5Y zpW^ZTPuKo&YK@E@j4EZem|;Fn#Sn*0+mc)_w+QnZ)Hin*`4Immduo0^KXJq0@i|!K zpa0;Iz7mx;5X7Q%Q)w}N&E7fvu5?J&JzZaQq%jqU_T#+)T&3u>wD(bwdF>42oN+SPbV7`Y z?LycuWzX}!&z((b8T!o*W8G;`FeB6l6Z;OSCiy9G2*(1Sxj0+TZ5ZDmJ; z&9x;LXkgc6eMMO!h@S}{pI4L(f|8uq;dH#KNSo?o;4cD>|L;;#EeL_j%kdXh^QV;@ z&xV8HMEJ{Z$YM2}ks|Ij`*uQkUOBjWF(W9bqxF4nC||9aSiD=u)EIPbX=j*$jt#`U z4L>`|HN%siiRd5Oxl*^-PHiA&dXMTf{%LS4RqM^pu{fSiD7O%Dz+bszJ$SYhmDLd@ z?6g38uk!H8PikjuPS%L;#WmpQBDEdUs%RO|8>2%H$p^_;9C-!4R8eXag0>Q^27wYd zgA2e4C$d$H%Qj3$3qYCeWgmg3_2=1;4T#7)?Zhk9?%;`*&FQWl^eE4m#JNpTJ+K2M zerap5EW?+v0H)CI;XRAoKHggI_)mwKQCTAkTO6QuZ>3Q**XimbjU}pZHi(`k&r8hl zw5LgAu_dYRAI<11;cWvG5{frX`$7CLi!7Uq;cTwrMRfAzH9nt-ak&)+m7}DZ<`JJQ z3M}%d*cOL^zPIC5DW&~=)Pt)P_lrxBm?BPgcZR1YEsG@lCCb#8shOATZ2F0cYFp+W ziAi68R+Ytas*b`xKl3+odtwR3wHJ1Ax@`I9@Noak0PNliKZxDHAoB%V(4W&e9lE`S zvr?FW-dS*gn=LmaDE;JkfRB#rh{`DvU8k{pCA*_X=9hPk$!lu?QciU$fg1H)mpHyJ zEh93S#V=h{a6|up>hhj5S=aOV!fd4_-Tz0lV4X#lR z+{sc(Te)s28KOp#^K^bRCa39DF-F{}i(LqD)^5qCNmSXqXusqvxN^BY#LXc%2#>CT%Lz)_^bN zLG+R)NNn^d-8NJDPfGtcB7-nqam-2>Z=!(=M^O)oc&)}i#Ilr^Y#`tegI4xwR&TRz z!5w5#i;p|5)>d6+Nko7fmFHG*0j|vsEnn>r3mph#6gevGte;eidSta2vO*V_a)hF7*|dW*R!`@t1(l}aV{(3@J{n-dD6?fc zL$dL)mjuk0?RFQXzW~w-wRqbSmWQR*W$eqmvmNxNLldPD%lf57hf{_EcT30?apW z8p=$7$IEfV0p?fE?mH!qKA8$WUUbLV`0A@4{9lkz;eU=G$I)Kjg|7}7|2-b*=RqC%Xj^T z0)K8P_T#TFwq25(7r&j6J3u1j42D}8{YqYB**d_T8GMXE*I1Yk*lF6xs1=e+7_FGH zm%=-M8>Fq_BC0>itdMgGM8YJOUx#~(>cE!Jk5S(#%Not!#D3`-utvlPp^z|GMRW-@ zE@+vM#Hs5=y7Xj*VzTg`O?h$y13N~w>&(MDm;{m5lBee4#J;p}`c-Epu_jBzT9(FO_=cOCvE%X9>OttC>>6l~?oG!@TN~A?YG< z!TkD!PA=2u6St188i0dZQP`#G16*1?`7;dSK!Hr;*J3!4G4J4yaHWVU8=VZrIkU$Q z`)9_G%UO6_iDIkHH;3)lCML1yrsEq}k98)Ge?RcN2o`k!b9P*|Ea1uiSoO3ryL7x! zNgWmix+y=%lrKH3V2Iq3Ts=R-ANd=lCTO*F<090OdiR5f8)ZV1AhF!_Fi><_kW;H2 zEoa|l3!6IK=BqfgsK7G5!5JTcbo_o5Gjg=YICkN(?a!q=kSZo>rjK>+k#d1zxQ5el zfYMf$+)K*)X7axKa@uh2C@TTt&uY+HC4LJ+Pl;}Wi16$F*uCtrI6+Q1*QwqSxA+N8 zO)PeH7lo+^5Y@J(kuXGzGM~+i&5shAg4L!ksYRRO$fk-zGkraivtvkU!M2f9GUB&j zZkN+;!8#J_g_(Y)9s4AE&^HF@1yfY@?i`btq7{|e*qJbe#lk(>MlX8fnBJx`IeDC6 z(6c)(R0DZxw*TTvhp0;Jawta{TwZr?U3aE?RO+_LKD)ZE}>r5j%B-tYkW|18|y>e|G}DH3UOX3)b2eS_{Hni z4T#L_&Xp5T0KfxzuQf)EySd-cdYjPfT`gTYdGir+1jNoyRk5MlkzU|BEMMu$d9A!? zT9o)j_9P1DfF882U58PeqMZ2O&**N+CQM?|u%+#~eBT>uTr^YS{3!4P*rlq7p>4wQ zUhI9CI6(Q{?H{)s>CZvCTbB-_X>GzVYzmGo1$0S;HinZx>^gb_X#edexl2Z|G>f<7 zNl<~nFlyM1#j^q%mkX9$tDya-%SM=M?oE{^6~9chDpt~~w<)n1%wZP9$i!?Y zDt*+9qq+tj*YF}sm*KKa#c-L2i;7Kb4(b5D0%}c`w1`2-^?i>m5ju!|6wPC}fP@zA zy`M@Xg6n6$HveIg*F71o@DL01VK$!YU>{m$wu-l?)kG<_YD~!6m=wQUrAAb+LCFo; zyEQx8#cNaG_uBXW0?Q87Ql&z!!fXw6fQ6ilzCtXzE{uF+M!1o4ClT<&-whGby8vZk zk8qlq7*9ZR`#(#M&6k@T@+h)2ND>!H^ea{u0CMNJjssL3sJ&OQr!j^)g}~m|Drx<> zv-vq|%I$7!agS;JJ)zemZS-{DI1#|`FH{KW=uF}ECe7@ zOS;HyqoBK^y7+&_6ODU`jFu4Qf(lSLR2uFeDN7~{zUA0+IY{2Q0_-(wv7ZaxOK;yPmAN9V_Zj|d zO_fy7Llm@$0@n;|tIn_i-BWL-=b``K#b55lo63#=RsekavAlncTBmf-Yc0(W>yukx zs2`(~NZMHoYa98o(JqQ5zyc*BBLw`r!? zXy&F;s^0YaTVDLuYqE!E0-jKui+f`4J7;yEr7o{7IkU>@Brt(H^OS~r;SKRT9%qHR zGi`^>eVKG#zH6i#)Txz)0lTyoXuPiM$kP`;<+hwTqkS$XeW5J2?Q&(niazJtFj;`1 zb6ad(-PrgRP*qgtuF>4pgW$Pq!NC}1Fo^wDIH%v!7(^|ZeBkXSjjyn0< z&X3s-eB6D@az=kab#T;(&nM6+)7^hfxpNlYsEA_v?F@pWD!}f zoiNC@0WR0?N*o7@2nP$38MMzz4zim=bKk^u(+zHac@Hxr)6Moz@Kis9QdXCt7l&RR zC4e)?ymr45emhn}0rJ&7)zk8GJUpC+Mqn#Q3H^Azmv&|*_>ss>G;`doNL=*gy6T%E}}E~#3Anf@bmS`w$W zkc6(#gsi#7)aOe!NF%FDj{lPfpQ?+u>1P-d<0{HC5CdI~G@%=mE{@R|VjzM9kG^LJ zSx%zwBQb9 zz^BSy@NXdEP0s z{2d&#B%PcM9dyP!SRpy`QpXp_cL@3-g0S!%XCHMLjW}>uK2ZVlhM0M6eAf_oJsNui zj3-qd08mu~zf@(XgZ8n-5r|BH*|WBpU72^>RR1Hid}L!N>^3WEAbQ)s@*%SEzCW!8 zL5(h$Mhz>y@7F{T=AGGdI}K_nGc#0k|m6N>&F@$fd zf1GsswYMRpi_VVs)G{q@z%4i{hc!JY`3*__Zp(m5f)WR?)vyifoy4{dE>jDfk%)qx z*6zAxoOS;sYdHrT_LT{n_nZCh1xae)6?r_09`2YU!M_(oU+}$bdiyQq%h4u_$p^d- zv2fg@{3XQ@DE=N_teLY=d*u|75g)m5hR10us&H=Ham2pHxmYkMdTIOVm)L;77Ie37 z5xt;tij5U*6B50TRYq)&*&ist(hBRt6_0ryjS7st>f+PId|uYXf7X8ne8P;<9=4{o zOAMQy@S@QH_Dtnx9b*JK2i3+cF(R~aImLl1R`#*;w-Tc>*WX>ox73}l4o#K&+&#)8 zMF=#ygW=DTkNge^f&s8C?jwjzUQ4_Z0!?fkm16b^jN!-?#JUXg@z;1t>;dH)zeUt> zu@p7CUC65{e|KdVs4xC{IM2`G^Jmdl;ZBCgiJk0yfRfI>#4&G7B5GCLSFMQ zf$-k{qc758BFDWzs)BvIb%ZidHq2A~2e#KF=SqSz3MKP=r@4WwX3ftr6N5H!@ZkAI zm=5w3b_9)5ae|GZg755$&e%K+hnnJPi547PYY!{ykqJ@pR8UQ=dGKfhHG<>TvejYw z-SPFNuvHHWTM>kXdG$eUAF~O33Ag?XA}l!_FVdkF=QU+#Uc2l-Mc>ES=|Z4Na-`(d z?lw}s%u?U9Q{pGpXzU*CJem)mR=iL;iGEXw>gH-g#{tSO&?X->f(-M_YRW_GK4`R4GF2`{-Vl$1N_)hI$ z`=LBmkPhH`$+MV1LfvxXYg6pt;M1XieE(HF-KmHkb0fuCfe7E3oU3LG@D!M(ds^lC z5$Eat>ZH2l)r0=Gzj2{civ$&N=VuFV1K?){QX0rrF5b&%(FqGgMJK!KM`PLCe39&( zMXPBLJ+vpO=OnfAPsVQR@aJ`Ycb<7nOVQ^6@=nwq1`=c8+Msl0DS} z7`~+>6Z1l0RaX?E=Mnu5;?|7w;q>$BMcE<`ANDxsqLv39xqa-JyOY!3EhlcFxiVaF;Qy>_4bPL(zay zaS}s9Ged%#x5_+nd7Ax1VDAuj)DgbwA-0pln#HT$sM~snkqi$zBPR%QV^lK%tbtS-YI4`_^VUI#fr&DujE(F%48yC)-NIOE{^%xssL0d*1)S{c@xWeQb8jZD)XC+uQE8g;aDRV3RAp@;LSoh<+pS%wujmG4E zxx%8O#>8B$0_U#aK5af^o#z2OPpWNu%zw#gc!tLjmH%X~cmFQ6xUXrE3^HF6{=1!5 zN6_$MQnH|;-_K%;5js`&ENWt{^k*RO^x~o+=Ql7Ba-dE*tH4s`5e^`b|p z$&8A$O`#3`;^P)VqSfoQ7Z238N0-gi{Ya)i5ElM{=!^4#PMT5Q32pTOOFpsjpSvos zOPW$r>oU~^RJ{Mf@JuwH$v$SRk!P$m_D8$o>KK=jm-!oC^p3?`7D9^u_t%|{&9sn? zWxA82v*V!VMijE^l#qha0eoJ`nLKtD`J3%_Qu@mZh`Ga}0GUe5b)mUzG6aD9okd!{ zZu_)W?#SWH>kENU@loY__N{9Jvc-*?g%b<_#ZGB;(NRN*PwJ9w(h=Ut1}oB{GOA?7 zhX!R+GOEJO*fiI4&N9CbaGZ#Obxv!cqzF1N^_jLA1mnoV!9$qu zA6i8fi*DK=CvF;xKScVV^J|7qc>51Cr{nnk|7C-DuIo?=?Ks{ z2KOHAze{Di#|i>m^m0miV!qwFWVDs}cLy#G|9%IM)5J~A0>{b1gN~E=W)9{AmpxXe zt_AZrwuM`v4pUk;mnab67@g8^Vl^p1wb~0rZwZWw-q}})&6^Qg>^maU!LrY5xPvbs z!xLy{E>wpYO6ijH4Fm6P{_yd<34E2dyj`u`B0-v4BP2IypSktl51aDlAC`ZAHV$Jn zWUiETt?PZA%(W@3V;>i8nDU2!@=j@Zha=?mDqp~g>saU4E4ze#Awt%cov5zrgPJzW z0l1$&^DWfV^nODMm!6sp{=d_QU^?H>Y1ppTb?D5?N|J?-Q1bhl== zmqo)yrc^i<9LLC8-<##{(I(Ld2Rc8*Gcq}0VUE*_`O`GUy-pM|HF~aN3%r~QM;A)b zK$QSKCxPD{i3@%htu}n#*Ly2&1h0i-;ErUyG{zws@l&^kN1Coov|d0pFJEsUFvHCO z(_TCU97z1%4QN!}*>&6SPCUGdPuJ0Ob;TYLg?gETZBpIK|Ex>#vP zy~2@ajKC7zkca$~hSvCL26%i_8%-yjgC3$&^`34b?x*f6{Q&nZag6KN5QWL-D#p$% z(t9jhDi^*Lnl2k5N~T6aE8bLEvW(Z!$by;EKfY<_O|c^4-Pu?Kd7{WWpWoGAAb(eI z0#X*#;tOogX>PH5MRPZsM7Dr_5sUG>Z~B5Ch)Lns3T8Zm=;3BT+a7A-gVb0J#vo}+ zX+k*{SH*kg0|EW}$uX5_C`7;D;~V+C@Fa^>R(@2T#`SxJFKWV$)ekZ($67paC;4U) zqOsr-Wx)x0Re`fSAf{i4{cMW5#}p3zh&*HwX5*YAR8fQzbSxm#<{yEePV}XEC#qWM z{LR4iN#v7cRFIa51nRQ_4Hf&`X};hh8^h*5H7jaRod1KPpz0>UIkg4l>iT;KQP9^T zbeQLbA`;N=h7|?51+U^*+krzDNwFyqgrAWZmH?f_V}dHYVDz8j-2HbLy~I zP|K`g?}PMjxhSEj0g<5>d$Y=vZQv(Ovv+sjVEnyUmb^_3Ra!s#D}aI!5VpT54Oo2V zPQ0ii1O}PdJD+yu&)fdUfQowQ94oI$68-(iCB?=6p~b>T9$vR~SqOQnEMM%I?~G?& z;=VCwwVVDdzxR>?PNrzM^a_8Bb&Dd`gCvHD_=BE@NADiruicvPfOmF9eI#7a*m>zOGYil9x9!)(-W zM(NmqDQB9~I>`~BIQv14To6h$C>f_3>(1l!bE-Aj_i z#ob+wH7Yh5aPC>}4LVMMFF+_@SZUDwMpjBJOe64$MZS3bFS(L-QM)sL)`<_qYUfe& zEQgSFI_!-ts|BgS%~~EO38aSJk4LoQnhaZ{Zd``)Y1!J@>k;9y^AYhidEtstYvimT z>*XR0D1@gn&G*q)N8)moImy~4@vdt36jcQ?|4Kfr$azcz=h?6hE4QzUNYXMH*FKT$ z3}1%5q)`F@`uKreOtA%h=W3ly{d}TNJx)uOK6ayw-FsB%Eg)RorYED2%wtF? zY50;kL$-TdWw##uxziPoWx>)&+r*dX@`&B6Xl#JDa{@@SZb^S;ruda7*6*ArJ}M=&)mg33WZ;o$2JAnd__; z24H}x%(G~7P8M;ump$L~^Wa?4AM!UBionMM?{w-{cDt$yZ70-OdrAu( z$w67SpWu-TN+%+rmi(vD4=w~R$)2wSU=&M<&RzLh2l(G8>*oJoV)jTCud51`MM%S( D|LZ3& literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511100001-Config.rsc b/MikroMaster/20260511/20260511100001-Config.rsc new file mode 100644 index 0000000..f66af09 --- /dev/null +++ b/MikroMaster/20260511/20260511100001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 10:00:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address-list=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260511/20260511100001-Diff-Config.rsc b/MikroMaster/history/20260511/20260511100001-Diff-Config.rsc new file mode 100644 index 0000000..05314a7 --- /dev/null +++ b/MikroMaster/history/20260511/20260511100001-Diff-Config.rsc @@ -0,0 +1,16 @@ +4297d4296 +< add address=109.70.26.37 comment=grani.ru list=FuckRKN +4299c4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +--- +> add address=109.70.26.37 comment=grani.ru list=FuckRKN +4301c4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +--- +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4302a4302 +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN -- 2.52.0