From 3fe68194c8ab7e9ef6b0269b4cbf1a130496f404 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 20:20:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 20:20:18. --- .../20260511/20260511202002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511202002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511202002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511202002-Binary.backup create mode 100644 MikroMaster/20260511/20260511202002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511202002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511202002-Binary.backup b/MikroMaster/20260511/20260511202002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..742f65bb7f9a1351018952815daff2061e2e793d GIT binary patch literal 302647 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 z zSJ-?_@1_8oc^hkZ;T!U`Tz77)3ijzhEAUVL<$fU^ zx^FO)I9f9CW3|R=*3Ln2!>AsT3mrk)%@_t|FG4LYW-H@$y{L>z?hAzqNdk(z26A(o zDvqbvi4hzM+N)LPU$6xzAyhdW_O#8U{GZxeuYb-rloJy{*tj{lI{<@8M%`Z z-;fBmZTRSI@do_Pw;=WB1AERL`0e&j7hFZ8#Oz!c=Hm3HW=erJuUdFL1iU)WR_SPH`^cDDUQ}{EN0);`1%i&e_8sG(KJ9^(I1= zB0#Xi%7ZKvOAFWvQt?tB=}U>f?N(FbBb$tv73>4bH`Y(vjSH_4^Vfj83G7Iu5mO19nq)kvK*^Z^sxw4rZ zpLJ@47YZ`b0&gYk_DNgvv8EfI0x@91LkjtD`5Feai5%7KyCOnhD*mBlY;e}3dwW=h zi(38msd6Mv6Q-(v<8j78AZ)f7ol@a zBdDF9zjpbw;M++3LU23uVQ`Ts%nAc%6vv5BlP$p0 z!VaLY=@>n^fFj(>?3e}jk>lxa+&M!v@W|huNd!iY5v(b0@Dt`?kTf{QA%sq$b~kr* zSN-U0gM3pz5eZX^Un18qc@;s<;Z%BqAJH(hI)RHFor;v$e#(_{ zQ2GP*Zw>JgLD>j_x($9Rr-n}+&j`QY99{#Ezu-aw1${$Qm8blRHuj2K$9hVoNGkSf z4A_z{#3Wq{2JV_8ALcu7m3t5GeNmche7KVn4Y)M=HEtS3nKgz@bMykC?8GS7il4_4 za+HYQEJUVVEl*tm5&qCL)n5<=uQ^lourzaGVQ6g#Yzw!vf$Sq-s?R@Az4^%@D@Z4H zP=y07>56G@G!(-+XOK}>YiaB5E^n;0Q49~a#tH)87v}=MA>m%*nx4+MjPBmqJx8Fu za!MD>Y2kvrPF~EM?4`?e++GUuI($7PAg+yo8*7$TNFb5vjd@z)((KjBl|>Nr;ulP^ zqJI+Wog;aak(=OnI;gn4NNVOToQN!R5aSL;gcpL@Qu!~jCOR?(=#`TvV>n5cLq`=y zZ;Cw$t=|0%a8nc9UG9oJ!t0wuH`+91?JFn}dF8Hr3Gc+37yPYp_auE1~JY0Lx~-u@fc~GKcnf59yag zD2rQ^@P>c>;TaRAyg2lfzY$gK0|DyczUtZds-7l&$rBhFaOEiI4aTGbL?8~l7zLv6 z5-%S2z;%eN-2u3rBAozCTwJH=BJ#PIMe19rnHmgAs3tmb;IaWUU+^jPqB9teW8VJ< z2Re&o$+@>fzQrap>!H>@CtVR!s2T5vSCXo7AAPmyN zfex0TD#5R*OslUa8-yT-huvdFe&(@)p*Q4Zun^jhKp$(e3<%S484G^g2TxIvnRhtL& zxR1HtYE9|4jNi%lnt0{y{to^WJHBL48l8~{jbE1W0k=Ju^P1zQq+K+Lp-sh9aq<6i z=QW%L7Z8$y8;XAB5G-O=_+6Zf?^%GpEmFH)yjD+1GO>P&mCEL%pl2Kc_H8Uk9B7WC zedTeEgV$g^*6dM2fznFxglzKrUaNhj5WKK!{X*B^j51wa=b=6zjV-RUS{Te7oC~G^ zIAp{#4)G>U4EZo&#_edo!6Wa}ekY9X`GGT4WS&XrzgGUsr_*pj8+vxos33FV$b0Qp zJ*9TJYv*J(=dhIiYFJ*K2q7Y=v+h%+O3%gve~5^wE^97#MHsycG@DHgAvXZy2jO}( zKgo|%1x4&93PFf3Ntv~DmYO#d>^98HY*F1a=Mi@xNIdHIvTPa^mDp*p0kN3xizOem zCpW3}$Z)<_3MBm|8ALS+_Xsh`RWQ`D!!m?xL?!BkL63i&_>j6y#mG4} zEnGF+?fVV2FAOc5+VxWelUPl>9q?p|>bfyFx{bcn7GpiI?$JtQX}|F0T8MON>2@T% zpbhykk6w*=D(oKU_|y(#tAl8>L$^;y68IM9BqynxB&ZDq+nf+Yje(N_c%|5?yV{^O zkQ?TYc1k#F>0a#vmgKc}i+G2~Sk4ts+RhFSE6H%xwHb|o4dYQ(F1v9^)W)riZ2(=A z2+e2ZCtyon@_?Ymo5-B(-c{Y|cH^5pZxF$#@AxiWh{CmhpwDPC-aAk+wC3c_D1Bs3 zZ8vI74>b6P>(Pz7MZ(oz?#@{08A1xRMX@S7Ea1(w2^-AzP_+rSU=I)(?>8eVN=>#< z8zZ6g{idkVE7nz~5-XfG=N;;gW2}viD3T_7c9jR8MOsX#|FX=`HNR|%TwtUVCy4uEqc~DT zASP8#AuuEgpDQXSQW^9Y1w?B-$!|FWe1z-V`@f7GTbt93<%z~jN8mp7vX)|XY((eL z5H7@mPJop)`$rLO`|~~{PFS$XXq;}R6kF=NiwZ@R#D@K{+fkbQ+O0?KQVxC&C+P=S z+sbh+NJgGD_2u}xhMCxZl0V*}DGF|7GDKi_YM&cs(tdA-e7F zPOw!5KDbU=rLp6Bt5{hz7hhjQy#w=LP4S{I;NbMq#_*LbY~#9=Amj$Ar(n+rP&4cQ zF|>w>zyjk$TSA0_PECQQ)raLlI;pRU`TPDGouA3avs{Qe<$k&MZ)x$DzL)eQCikru=PaY^l@hEz=!?(d7t4MF%g)TNum&Ewr(WE zFG%ul36&==wkq+(yKW#(NzSRDCy`yEGdYRCXMMz>_Zxv@^v8dpT`oJ#M$6f8hSW9TNC zih!O;!F#PdJ#s5&;>)mZyiMi1P3H^2O~&W6m&Gn8&PcJT0!^N+M>!eKq^&WJ zp2=PAts9AaFIYkEF=LR6%!BTS0t>swuT#75Lxj;%TQRD5Uqyk&QbV+%(FNL5z(b^- zd&&y5&#FE#2fNh=a`{1Phq7cS${#So7o^|98z;{J_rN51K=?#U>xpJ3)FS$A7EPA5 z(#>$$`sgON$BALLcJCmAYai8zE+z^euKz@D#`mjXC@sGz0GM9gg%z@$WOjz z4)fX+ep4J;CD^w$@6`I5#;HO_q`=0-ZuFs+{D9ewvK~2Y;}T?WY%Bw%&axz8H8NuqK3=O2T zW4UvG!}!*I>^wgIXu}HV!MMN^r!p{kp{g}AqC}K2{!W9klAgvzFJ&mtU|4Ok=3f~d z+ox7_YkVcGE3&nwN?_sS^M@L!0NAJx1}J9f{3RlF=&Jq39HNc6Y0;t)+C$06b#xgVWqJ2~k z59uVrRu1H30v|W5xi_D3agO&n2r%Sb^Dbcd=-uc^RzgRgwOH)mh1aZCzNa7aKkr zUu9eHN(`@-UC1W@K%mEeiruSvi8Z29cr>^3`O0 ze6Ji4{Br)}y^P>JKfw6k4FDg{H1Tj`9y?~#;Ux_q-hOx9)IL)y6B!O5hSO<2g=f-0 z)<>he#NQ}E_DVi&o0eNgb&BzbYa0|D%o`mazl#=B{@wwH43J1EXRYcQaF>XeSxqd6 zcWBJ10Hy(K_Wz=(n5M;dFgW55JG7@R+pcWoQV@*S1`^7Aq5xspL8}PRnNL-N{UeRvK))(- z4c`z0{@n*1!eZfe(@Ahj#eyX6NO0moc2@y>RU0ej8BuXGb;UMe5G~-L*L!V9EY19b#bLValGuS-`qv%{c|`jRW`i8)yfb;!%x=*( zCTF-Z>T!)&g#^z)fMPLT(GT${lRKjp``gr6UMD=31dwDfsai(b40~P-6m2+v30gI= zjTde5R&3_X8Q7ZgM+`G9HQO_^coZNxn|F^Mx-5UQg|5C&oarT5yh7D1bChIxNq@5o zTcU<2Yk}7e(L-aLuS-%-TxegjPUcX(Bnf#MZ|s=b&7rEexu$ zZfnTZ4)Y#67HPv{xk*+6@T?dx_O4w-X7zmnz;ULTt0zH3$vilUwb)n~nN{>JZ|6K5 zWa=L6iPZ!T)9-bK_Tk{WLuOqe-0ggWzQp$jdz4rKE{9{GoI{w{j*yPJU12Lc-L@6s zdqms+QLyi5>&V%n)+k~h$G4rTeGW6J`v+k;I*Z&C0uDpA0pC{0<&?fjJr+( zA2e+lwbmDg;#i|OFT3ZlUWA*TlU9pL^69~OCf>XAYy5^@F_~G?GO@Emq&C-m;%TxQ zm!vLby6m`NA%E9*woaPC#{;bw>C2Xk*nztVO{GRmIPvSruV%eyoQI{C3i&VDGUH3R zG1^K;!<7p|EcJN=Wj%m%D_V*^46N{2h6IG^Ld+1A3U{r*Rzi4(UjVylLTs00`aQ^x z^Z#nJiVIaS23-5u&<}7581I$Sa_HXA%R=NVFVVw;mE(6EDg*2*Uo>@n2(3BkaadmI%A~LE1uyU zdYYDKzXH;tkls{iuQRJf6Q$68S??2^>{POpu|XH4O3`{^DYm`0IKEpUPSU>}P5^+G zHL(c-#QCV_;iT>;REX8Z%qdjv78}6}q4Y}acBmqyn{CnL2w2BbIQ57Bc&k42_1pqR zTHI~kFa9|uV}OtDl)XORc_1vf(uAKG)96W&^DB99Igl64uO+h7@@p<=lbLCESO({h zkapQ0Io@O}=B+gTYSY%t3CiA_e)~+8$GlPm_JNAVEPtBDEfgFH|Dt4A;LZ87(=J_0 zwDc$j2H2^HC!!GPEmoF3*W79(*w|1#Oy`pUTW1n!Mo;z3I#ueAW|%~!tnoB_*3g1s zwA3(ECm1%gaNs2EoKOd|z=<%Wv=t6&>mQQ*^Z9Nd+Be36I&K35O+WBbIGW*^C2BSV0l`Y;v@n`_@K0yX*AL*_Mi9r$)t)h4Yy z+43!-J)PvQCA=$H{S{U%>dmSzz@Fzt9WwOPf2wAZ7TxX=JlLq^Uo@8jK|8f7B(-*V z6g-yws=Uj6V^H3eF6wnf{?RaUV>a>*d~^wc!#%b;Z|?=4;KdOS3%S6iyF?mJo%Z%8 ziyP%#;vF!zs=4lE=o%Ah?`yX@QOB|iqTpE^80QZxM!W{9-S`|R^HU9`CfC_|5gfZ# z?B_wEUOD_uvag^MsU-d)2Z2?zwNnFczR@)$(kT_UPWL|`RZoXCdrYP7t?qb*gm4pH*M`Pg=%$e|=uK$T}`KzX;ne<2>@c zLsH#stm^kZnkYB0X4h}sK1Qe7ewoSR)}e6yfRLULH$R)XGY%Xo)Qco?7fQ28_JLLdV57NQOe&KcjkarJhN_eUo;oGuqimb z7UO!X_d9m*&=CjdUKWq$Pstp!O0aq7d&KoNN@m7ZDD1vZ`CJwm$l^Gb2_3tR`bOaA z$EEDXZBvT~(**fo4_rSxR;Fo85>xdd_v8>DS!IS}$h@4q&@c&|`PG}eqfbr6>go9F z%VXd_R2R1;fLu|LU<1p40t!w>D-6z)&|MICYSwg`;+$1CRQ_DH9Ud6PR2NCFq=3h4*V#cTIu1R*RyWLuyBF%(dFK~ox)@> z@j&~3==!2B=%z~X{emFM6c_!lq7TPt%o^{1>=J#3ypkKX%AediecFsX{hIo;Dfhd* z;+EBnrQl(XOwgC4PN9lA7`ypfHVa4g(T`a3n<5<}F};bJYUyHn*$ zLIHr3eHpYAGyg;a?52V`l96ShViy9o-{V?E_mRs`RKpLRpB48B>?M>Z{@!Z_q_ByA z-@_Us*;j9jPYEv)Vqh6}Ep%zwnL-SN`$hv8(u~m^MEE<%S$gxL=5Qav2Mf0DjEkE# zmT(t(1r|pe10mb!t2RheNkaL>Z#)PkL|WKiU&$Bn0>C4qvfWmcuI=!O?MWTq*MoL< zjyd#mdKQse(@s2{VXnWBE| zeywu=-D1DjQMW_{ye$h55126Pt1CfUMO*!}dtSywTuXL0fckE32)G}K4`veD{G{T3 zhi>MA*V-Pu>hxFqLqaRx&X8a~MXk#PBXI+RqrbrNj@b#hTt^=c{K0LZRpr9Jyq8IW zW1`N~qaaP1**W1$QL9@vvQ8#6 z5>63Rz{gEW);QBMiZFza)!(jf_2oLNr05e})%rrM=-SlLkc~@jk`i5Kz_*N#pwz+@ z%EvdSZB@KUznZ6T z9fiID=vaJf$?r8w*7}R4jc<`?I2Qi$cFby`8~57D`@zrYt7&`oonMvsCjziPZ1LsF z(}BO4;ia*TV;mem+K{>tGh=wU(We(pd&6a~T|c(plC7UO<=sJ!9VkuKL+Q$ISW3)! zpB{^8qxYnIHz|vGDN!@hriaSnly&X0fLcM@V$hcrM7k_hO04ol`9nyA2FPWpBj_-x zo24-F#y&Wag$9)DE>P5yky<>v?#+MQu?vdLM40>N(xHFh6GtOGSx$vJQ z%_D!x#`SxXZFd^8cQ@vSfBiz;C2spDax*PdZ>PMa_J(REn$wK|PW90J4slT_pg$O3 zXOa4jMm)g^zZ3`kG|F50L8zK*J`O`A+rdB6u+C$eotX>JR%|GYkz)@#@$&Jic%M2w zxovLQ9UC)Uir23G{91VOc}zpr?J*$0Kd<0%neg_e7s_&U>+TKn^3-MKb2IckXRP|c zPDeLYG%UrgKHaLD{|J={2!7y!=K&$=Ind& zG0~dqQPQLZi~I8`rrlPbB25Xc)vx)BZaBcs)i{xeRVxUCjU>B+E;4aq`+9p89W1q_ z@Zj$;F1-gG?6d<$)Qa=IN7o#n?nlhlfspMGiercp`}5S$HnIW~=Ab#Oq9Ei|YGQ|T z)j^E;F0N2my~O*giXd!BT0te29Bs)X^ypg}dc2?wWLK&A3r8=7X^sWu1y%PoE?_46 zS`U^22iaj-F?QTTiW%+ISw&Juy^(v;DeAqi7)hg?g+Y@IT>n|ny5;AOQU~BXJ{~n2 zSIx7Mh@9UMzC|8K)Vn%k>D5~-P44m5hxRPU#b~7m*>wuAoqr?^8i58>k?ycuT)EG` z5AsprtyE*$SV-?!Ey3KLEhmDj5Y2Na2w)cU;iVM+7WBn?m-Ej_Za4(OWG3cIsLQNxV{2 z<`B953)y)PvWJptS6E2FN`5nSPqLgvj0tl)_HYAz6({JHfw7E#y9fw+kEN>qvy8m2 zc$3W1WMee0;o!YvVVq`8aLlpCvo9-Bk(TRpi?r|@G!p};l^O;2$qLf;m6GKHw8)j> zcsl&;yc;kNHgPL=2EJVh6jBxu7W^N}6n6w!XruA={?pX-I`+&t=yOPqcj-;yj!&*l{W|&+v61$dt#eE{`4tyK$->7-VEX@ZjE(+zcrC!!nAwuowM7FGJ{&!ohV$6 zn*&ht(;zA9cRn>H!@`WuI@XIA^kT?xLIb!`a*Zp5=&Kfc5Y{E3AG~FL$f4w`yMwO# znGS}_{DX)Cg^s*1zYA<%&tHt}0c;o=FX4NzwAwNG~!UGHC^&MPDV*yH}uH=^jMxc2X~35XCkD-aZCJ$+u!SzMzl<#rM^Wj zTlQXu=Al5_8C9Loqli8cC%``jT&?PFDrD$sG$C3mzKD>T#t{Uh<**a#VkXNttFTc* z*ctG9S*VR#;)C6h)BP#!8)5|=#ck;i(4>f1`Hkvvm>!W(K|96b!P&7pl3#R|`sf9@ z4gYIh!+poH-(?cwjJ@#{nvdEgKU)w=p)W`XUL^#auRUw?M<*DdB}N>AYei40YDU*m zb7zR|BZA2H;d3GjMP|ewuDY3BNH&K` z&A4IIPsa~Xg?&qO<-1DDgb+~Wh|PrV9q8)kZFtR5;|&8_#2Ea^bbDutpOB>eM#92{jCIt4X0@sphtmv1&;U3@F}ateK%E2pyzF5r2B1Asg@-aTN}gEJ(A3z9R@Ld#L;d0oGV^bX9YPJpj0X?jKS=b(BMi3ZO<7sGpz~D`vpdRxR>biGO8m zSF9i0Z<#u~eO5#zFEft-n?ywzM5*qrhdvPa6+c-Ajv-40wLhaE)5zN(YntS4E9h&& zG?^bY@z>lh)B$@fQ-HiP`1Sc>8JjfC`n3&23D$ac-r&|6mME*jjPe(Q6sdw<^7_zG zGDcI9?%rCJ7r3{T^$-BgrE+Evu4K~>VAg^H2u9-R8XoTUSUx^h3 zX*kfu|03-2nN|0(%8zk2q70AYYytBlFtq7ZTBDOv2r#d7HN>AIox0u$e>2#?7&nwQ?%6iW-0K1SuwIiw zdArYRaIHjYlM}g8-y~%%f&U<QVb@G{ z1$G=N+yG0AXx;^s=dO3yKVDs{y7LOiT7Wvi93{eSfKK>~Lus&sc$~ZsF3|}EuEkNG zD^$xEvkml1d|ky5C*f;z@F@Ui%oFt{%do>H$V{TScspijNKuwY<0H0sRkmhY$Xd}K zL89?)QZZxaq%bv4kSSxlotchjPotd&AMpvyAf5oAfXimY+(Af=F>=g70k?zWEVciM zRS1=cUvEp6M>ludrlo@HVz%okKqS7Lsf!Q3%__bN;ijnn_~D|8|BHIah5|IgQNrC1 z&dv#t`{MYhK$c;X4xH&<`>Q5A7Y8(&0I?|II4WnU({aW>m6&<+TG4P zq&Jy;HsiYwD5a(*W(+>epU1oxkr+4Y1g zTPAVq<(Nw9MNMyJl?Y&V@OK)Fp|+N^f}2)_53#(s!!3XJktXiW2I7Ly()adti;;^c z^v13-nY|fhgWVJ>!56X!=>9ACL3!;X!zKJjqxF;1CAgBlY}4uAXJs1wZ5y1pnr`qq zaG`WjvGREcV7^WWrK1{E1DerYL$d^Ce1RUL{!$F!i^-Ix+^i%W$qKATJ|w<{kHqckc*J3YZ&D$S^xtcT7~3Vc-L5 z6@5$z8T0m|Anfvp-JA~&9?{bvw+GlN`bl1Bk%0ic$@-;msT=tdM1ek)k&06G%)!C* ze;=PEx?PL!JU!5^AVJ#b%7Ll?pFK6{cDxQGHZRBt-z0GSX6yZEF@{A2=CE&W!(TNv zB9AjIxM>~vR#~e*x7GI}*1l4M#Wj1XqR7*huej@)he7 z4+dK}w-~ahp9yWSwtOZlFTQ_m)yfYpR_yIXXcH|vX-pF+wa{&AEo2ZPJPL%^_%^vR zu=70Cp@#H_^306@Y#^o9wXkh+Wc*oelkqGskSuS;6ZPXYhspm6$Uu)ozo_nireKQN zyZ_%xu;@Qo|0h-v7%0j~ZuHMe^+ITrtPEzKtgl!|R6B67+%aipRE?=xdP1B_bcM)d z0*_f5W2wG`l89W;H=~IcR3zcmJe8ZT0A-O4;%;eQ+!1@5hg8~2lyL1x1TY!go2nW? z=dZ-@yaI8rrM)o^0uV=tkWoLJ2K?Gbd7+6$J3yfLwp3!AF>`=&EO=IN2qB zku3$n-RLGk3KQLkHY}&jdO5k-j3yPmr}RLGrWw4>A$T=WHl88uAHMm8Kuo68a`{9|{cS}bs)@pC3*m{4E9 zRKxF2j43s>)JO_G`2rV8V*NGaYSpb$8XL}2el7`=jP6LDKO9zPGLJLF*+1+H4q?39yCBb>r((l;qdPjTY6acy1nwB z%j<2C4|MpBQGXiEYv7=F|LBC#XG0Jd9AFsMEK>eR(dCa9bPQRcXMw@)k6uCfhEtzo$1FJfQc!mzrFtoKe}y=?Wx{*^55oPJ)<7B=cn zt17EIYD9^$2|JY_q-jObk0OQx;79~j7HM&y;ERABXJfpyTWAbqO!Mk`e|3G9@=}G% zOMKvuJUoO?`Dz%j8|NgKh{{2A8y^`NEDKz$W89Z%RnPdpv0dH0fo)H>kTqB^<;;sj zUZ6v&KEJ)8Fd_v)Vb_<-{d3*1q8fNyzpY+m{mzn2dnt`IPDKxd5919v&PErN^FCAP z_$WTIuCJNV4-;(&N2=MF)Lr&sy_Lj}sRpNnISKJi*$=4+vPg*3CRePm%X3FTS?2Yu zf`-PJ(a0HTJW!D--yY`@#?cSIp#cZY?H_w>jmJGAL9Axat#=v1hLd9~sWT>2Fhim8 zT_v@J5tw~+*n~QcPgf2XtX5Q_>DYVTEF~I%(gP*S>P^x%3zrft2ZJ8Q@sO$aEqWOz z*U9eMEp_lOqgWAaRrztVKrWv*CskNMyH+6G%C4f~nKxY3t4;6P<=|aXm-Sl3JiS=#jdt~OW2BNB=H%FW$vE;r zN{76>x4$4u?haW)&4w^Xr!n(k-FgSgtkfNCF&j~3& zqkdclswV((@99vXj;Oo^DVQlLw1ZPqI;Xt>iBhTLW-zmSX!!Ro;Z2X<#ij~+{nW~2 z4=UU7PKalD2yxvf(4|SEqlP&8TrB!5AHxQRs9EiJ;FSW_s{ni83?%oM4wnOUZ#N2R9o*rbXh^l4^6ftgjccW4467h_+rO}MUbh0h~ z7Uh|GqhX;{u!!{vnS^@Kug8byyTCZq)R6vlZp-9^jYdDSYB*>q7A8_#oqwKAsjMcx z#WE@r_V)_F83Is0fP>wonjNQ`#sC4b??;J|j+&$F?+6cQbB(B6(1~yz4Cycsn|OMu z0ik874>j7~8tP2B!BM7H=zuYCFIQqAt%&4tEt90f!th3I=kEML@`;R)=K#DA=tQ9< z&T-5y1?&S|u90~xJNq{Ji{(Lv6t+n#tBU_msc+mP`^JtXln?eeGq?SZLVq^ajM{G$LJ(xi{Bc_lJHd-6 z^c4{R)Y=Hm9|*j1@HVFu_QmatXiO|yTxaNMD->G-Ox?oLG*I+X^@D`xP58tYl2T(s z3~z+aJ+4|;wHMqwgh@D3ip%c?3)Oh&l;{GWZ}{#TBsXupt7Yh4y@H#uBdw~X?Zb$sxq6+K8 zii^43E|Nu9P|&s$gGDiKcymj*th37Jk6nbyG)Tb4ZykP!o_;*EXAi@%m4%27KPq}R zgx2H0k2fC}+GiwQ5Ofhk#~b+lDde73n5=}`frhCZJU}MSyetUc7jjtT#-v-;vzn|? zSA5)OUbNvYi~w`5#27_wLRLIvC1TQRbI+fBv`>&z=(1)I+%O#w{~(OMdr=E~WF~oM zsJl!-z5DZ~0gDTk$oduMMbdhyI+|VAi7o+YK7A+^n39x7>8LZ&vu+`b2nfC5EY7gU znoN3&in^CLU@K4zh^GK?olOB8P<(ZDX%mE0AMHa1U$}|F{mo`&yxh{44dG>9RRtTX z`jV#ee$r!vkdj5=V>P~Q_*Hl`Ou;r6QVf;5Yc%3z3rGmNuc_( zdg z?0C@fN&scl;_b)gByzBVeC(Cr6(JE zenKK-vPZY*&L*9MR0|!r#BNs7;vSw5xkW)(0F!?_j-5y7>WBZJ0v39$aq6l4-04Rw zDVESk%yVyw;th7KWRe+Hc^w0}JtK$&@-2m9MbH8osJbfTjwSMAO`La70v#JrICy`A z60Un-oOD$uQ<*Pz^Ps=`bIQH|(vP1PMh;LbK?EO!F@bn2pkwI)2Eh%qK`1r)vGjrL z0J>&_ZR?k~Y;GI;3ecc0t6s=Qk#|t9Sjw1hvsvHf;B#B(NJ0pDW*m~?mykzME^;)WhXz1dYONhG zZgQ?};ErQmWCb#UmoI%C@PZARCm!~F*q3wY$0EYyL@EvT^-q@}2JiF*r1+9gr;bya z(wo%&ScssRBlZxPLnMM*L*&?>u~OX2@vQ;BJ6Cm*pKcB9-mX#RE$LT0sXu<+)Jc2< zXo=My=xcCJOYu%f+B3LZV=wfv=M9NczxwVDz$PRlrdq%R?_Z^-Q+o)Vt+}!-OsN*f zoVQ=X+9Rv9&BOwQh_krCKCIhfuD+Q*|K2d8c~-H`2op62tt%qU!7Z0%YpqI1ly9TD zr8m`~{Eop2syXFjUXCW1^p*NeuvPhuL-~Ko&vnKIn1v{nizD@m_00`Q-3MoxlYR|l zm~Z(CwfejcIo8R6Th&~+lTKgnOK)-2A?`d_lkInM)>OW<&mHN6;cYcx%p`#ScRpH4^`jC8;g_@qzsHD`Y3QAbBp*kDV_UfFa` zohQ@1)%eBRuhX;g%D3+YUjS}u*Q)DS>*R;$Hc|eaE9T97t==L~*{rNIA~HPbL>-Lg z^lQ^V4f{%D1^8u*V&pnkPPk5+8B1&9fNRNr!pKZY;Pn`p+)5zhBNjQVe6yJap59?S zxADeIo~wc;RYuc6dBH9h0w4RSC+qZFdG1SvdVRMXy>0t1S{OQ@fKb|-h;TeXZWQzT z^Z`BNh^5yk!VF;lHgG0cVS421i`+_p+G)D(TVRrCMhGOnFGSbqyM4uc&4Ox1LH-*Q zaIGW;pbG?q2k(wW9A65&d%C`hnn7#fNnXRrpE~(U@?|<%ZbMnl_$9P;q#F)d? z5fC_G12ri>tk8ONH1T>#U}bV2Fm=Cb9}v#2*ks0BCN2MMpXQb~?kp4a@sw3eBWWc$ zPNK4lYVy6jhezL(wXYT$T(!Nv!g9?*fH;7;WXy5ij6IQN%cALo=ZW(^wuYKJLF6tk zfnEI^s2zi^Y?6nMcq==l9u1j)K^odv`h8uPq0@`RPryLFb=%;8_;p3G>NiHy9YsWp zc3u!&mhj4%lKBah#Dy+M2HeMIRkF=w(Rc|FJL$|IqbL;O>ZD6XJ887agpsk_u#$R) zJ`f-QY_XIQSw3``764oF_8j2KHSGHFm3b36ab}n#F|+08Kt#VXg8LE+8^dB-Dvs;0 z@KKH86it_z2Yy-)eE9pM@Zd@n6PCyB9lbfH6zzmGw9__BkchVJJ&(#rFv<5NF+^&D-NMp-4P+H62Sa=rHk%2j^sd%FBA|7K4$76@`}UW& z0&5rx5)WokeFXZ*2GlYTmIdWk))N8OFyD#&IF3cLQVDXA*Rz6{WmQA;Q0ktrt%BdH z$Csxo61BX)?~qUS%rv(o8(ve3?Jvtu7$^i^po@#)COvsrq0z`0MmS&_Xf~N88eom@ za!SIHpZUyhTfPnEZ>wI+pl*UN4}_6xW4#`e+0J1pR2j!yfG&)FKX5TxS?H!({DqkH zWkD)hR@ERqr{!!_X7R#rzrwQm`<%jJHMP-M`&ZOxRH6Kdd%SiWC7|x6p0!$BMe1nX zWH1aM@DT_WB{YRnh8-C9F!FV@ttWjori)O(6Qpy3LyV z$QiokEFxZoQe;^ecQ2_N2F<2_Q0D0PvZel6tO1VlD(jb)-Lt)RaQ_a@4s{{cIJoTf zyLUcz{Uu<_*jRXbn=i}lBS;C1;G3X#Ij(SnG&ho6D3&e2&7usfs9a7o&F}QjTo#4G z4u{!+2w)5(QPZ5cT{#{t8E)U(^YE3o(Qy1c*JnG73%p@E)c|?v5Oq}W6~of9jxXwX zw6KdY4h3XYV=v^rVfAn87$mU8TWWV6N^SPVY*r~83}_-9g9qtW;-?3V`pb|@GS=cd z*KDwkg3B4m+{tZ^;M9G|?SNPX#39Y&sO3n%1oYtZhjzi1qYEE}WPwI88P)d!O$Q9% zt|f}wfZr~%R4Sjf7mVZzSoNQ#wbkzp^jH~=Sw3Y7r*o+KU*3dYJ4uX#M$CZX8&b$H zxFF2(&-x%odb?`=JVMDQaKUi^e~O+pgD~DB=r7>sx0rAEIP-(>5OV>0#mQaWR>%Hb z!}(U6ddbJ4dQ=!yR~1YPv7K&-@agyWMH)7Up$SR?(0>~PAI&?l)0`_=ZQZ$Aa$e7o zfhil?LBM^)h)1EYWDIr3+NVSVsMCe+;6un^C^O3DuAg|*l$_3fn3`Hm)IS9*0FYG# zG^>-DXa*FXp)u*360p*uOaicPUs%?q5U)vNDuPDdA=LWLW)(_#DfbjesaB&d$P}(S zy7Xn<_?^Y$DpHL-ks|j|Ikqe!_Coi7>$M)E{p{C<&Gg(KQLEIL(cOh(JOxOUcw(fc zwb)F=D$s1tIMVu` z!UUojW+`8fIb8qWPtJ-`7F(#FX;QY$){9~*nxkHY;~(rn!~u#Kx=lml;vW(+<$!b^ zilpi2c-9{NvGW}-Cf%b_O3FN)t;1Z1?$A}crmmwV{g$<_jP9cOc+c3f(o4?gTzy9- z!{zII3o!SUhpewXu{KNRALV{`1nVt~inxG`C1@W~T^>KVmZlh$IUg2D*d`L;;H`#= zZ1GAx=`O8_!IDMn?c7jgv?-_X<5iG6+8fK;AQwd}Yo7x*B{dG9&V$#J$dh|fY*;>g zJCU`rd#^oN;DVEQvZZ}vs_G&um6*h1ORYAvqd??r{}=lEzwzJEkXw=}#>m!gTKrpP zR?<_?V{OB7K=xR4Y;l--FiN7pW34&l|Jvm3ADoPSSCQ&cm+b;ebD7L?=eGA};pwZa zSdmjDa1*P1Xb}3o80Oc$kZ3^JXL}Q2U-drLBwH5aw5_0ED+rn8x#ppUd7^Gbsj~a} zzZuLaz2G}`8I+h$Q$sVLvTqLA=CaJ@?j`D^z#6pqfoouiXDA zvnHM$dCzZWoD7|#Y^)_RAqWiGL~V*}0o)&=W18Tvll?oSPBaBvM3|_~CVxP_t8nNN z@DYQNx<+I9B^p0R8HO&0z;~ac=!9It6v7vj?^Z=PkmNx0o9 z*`;%R0YI-&_-e-xyqK;HjBEiAX{`RvovoBT<=AJOBbpQ~iGjhb82V5G=euRrM=DpO zm6(MAOiQLv?MfL+O-U#5uDpieUp)^pTQ#Qj7w>8w@Eokk#uI9UgmvIp$-Sp`F=6?9 z<$^vfPN?^g^5Pyi^Da4n2^kRIMMkOi2J#5J1}*c!SC(^zm=|BCUPbUlb7FA|F5%ti z<%J7^=w)8i!3o*}@Ie7QZ_eEa-PONihr&WHN{ z&i*2vc*rgP9!!c4%|i@g5tCIs9RxlO5HCbk&o2|LbC8Uiv8ER zCHd)_^ zKutk)#QPu!!Iywhl15R*TqPHhkeU%+5q&1T{Uq8q@`Vag&0?w03|&h1eGy3BehTw) z_@2rS_6!W9_htJ0GXw|5Y7mr85|*#dvRj0nlJJ?@FoeupiZZhB)mIXD%M+f+>^9e1 zjw5{9_-=XSW>&=q4c3 z>=CXbAvP2}qI$Dh~RKzKMQ|iKRmB=ae|-Fm?WQoGOSv8UYhI_5eh;#zH)=zb61V zE&l(g8xt*lqcAapd&}N7)h4*vOzYtt&f=AgG4Y_w(6&DYUqV}uot>b(72E|bQbO-u zV#}SBhY{KV$LIHYZ8;dI|TVdD8+YFeI(rmxV5rdk3?XL3vvQ34+_HvM$bPO zCv#w$nrfFj&5iVNI7Xr3Jv#`L$G2QpUDAzmYn?Fl62xi5xy%IY)%uQP)Id@D!FHbSWgOlt@DfH+dpVyp9+PQFs-dD5Ew${ zuoRTZ)*tdWLrx}Qp{|*R-CQ2pi|hD=o^)1#6A-WBmuN>Od=vNMRe1gw>GBwc- z>aVK3sHx1rweyvF+!KtkrDt@Fq#2cDP1Z49R+ly9-U!AsJH7j|*08(FbnezO6m390 zq@|`qNZe(wmi#cNd;35LG==xTauz^Tva`Sr(@U%69Fjtd8w(;v-g&OLl0vvCJj>Aq1eX>s zJzf>R#M&*|?V%-DgD8CJ$&?27b8FIJ%gefnx##s6%XV;pBVf-b1D+1d49tAYtfqlH zIHvJEAr1^ZS?s>{S3a0zajFKo!N<|d4$DTVBf-4bSp-8`$R27_SvmwC$0s+m#h9o2;q_R zk?r<8T-4))fwiD_s~&0g`)=7U26>TZr11VgnKHm^Qs-G_wCOzCh|v3fhNs6)=7_O z&~Se-HD95|g`o!pO-UUull1T~Ot)DbcDc>tYp*GGufu$!o#3U;BdZ;zf-Z01-0B&V zhLig~9OoJ0G`{#z?V>s%aVx!%iIGML?`Ya^yTENvgse?r$*4(oGI*E1f#%Lj1LrFF z@{2@n5LCGRaxO-=Vz zG25sjMd?JouJACXp|YZWwp}amBFMYyk4ktDOr}0ZQU+0g0Lo)az?v!dX5U=iL*#(N zp;^AkPDh;I#PJ^4iU?dJ@Usu&wO z)`(MkZ-aL-*Q3Or@nT8WN^233LZs6Y(uu6Ua@GJG^r@dH#@;7T8L88CM7x^=5GJ-Jgu>3abf*^4d3*5#;{z)**?6 zA89E)ZL%_4!0e0VZJYcKuiDJr;XfE6N5eoL(RQ?D6G!;XSQ0%bDJzk+@tCfe=w*oC z>AhP2Ug|-73xHhDW3hx%+@^!ESK^Rs#;2szWURyMtoB1+WXy)_ncD=w=GejQx13Z- zo3nBUH<6+TcpZnrR(+}qlrYBeY;^Rn6R0>xmpxd$FKrX;!6K7!Jd=qZ`+zR<&=cIP zOvhF?yEGij5(tbHxNH_r#_Vmb)1=)Xkf#p}gj*v9XlnLI6i45SC@e2?S?xD7Rl9nO zbc$ku#~Q;{ACUHsN$Gy;Dr7NM8moZUQ7p6cYW9juN{KO0g9JmIe-2oKjLGXcO z`3L+>vcfz(ugjZ*xT*8k6iTw*P7>9olS~H>dhOLWf$@QyAe1MT%H8yg?6-E4Z=l4C zMp)TbvueEGHpT+7LHWGI8QwaGt%;@F&L&+sG8pZaC(g$4RQV2#zYfvzh4{Vxq4Y_k zY;0xdVZWa58`n&3DoX@hdM{C)zE6kCR!Ua+Af!vjfs;}Yg!^~!RI1JKxNpT){*W~% z8`tAe{%vQEiD+r+B-J0N1TAky5ti2{SVY(fFP2>AfMAL}k?d()jM!)jRmT&;PA3GE(aU=AIgkKmgNW9AC{cZ7vlKAF_L;ydLh$W zqK=|zjO(BowMRmKErY5 z2C|T*g?gTfIB9>hXrh3>=U+F+><+tku1SCUF0LigGrI_$C4JdjfWr%TomKt^5Cc{Zp+*c3W7x7 zINpKxm-&GG7za%#MnDSiT}TTV!9p?!y(d3#E;Hpu$#e)@$affq-tCJj{tAc+!BBup zv>Lza!WNPyPjNa&hA`doZ;beQ2lj9`_oR-%&CGsN5{dr-09GPPp@bZ?=}f={d%k@N zgBvh>G9FBQ{L(Cn3nh()jC}z4J`bOH46vRd1WRS#Cyqi(i)=;c@AuCIr2}- z;VcTss$v1W6^VNI_FpZo4lovQhP~&S0&2x?St4qOl8^=g*IhOakL%m3+7}kRW-Pk@a3>wOIkmt z*si7F{7b^9v4^@y2%|uJv)`V} zY?5Gw+sHgJmw1bjo~-*VEwyK{(Sh};n)69L1!a8rqeO3Fu2~Z0?M0q4VGA?qN11?i z#>Y4^H>x7&FaZl15UiBJtuIOl%0D$wxy5(`5eWlJhC>>XHaCMpYg+w?qHuhV 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%0D#&~#9mIyWfv&NtMyW)NI12~Yo}qN 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%0APF*217$89RRU{n!mr)=vmHK*1V~I!WHjr8gpMXQ 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 z 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 D(unR3 literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511202002-Config.rsc b/MikroMaster/20260511/20260511202002-Config.rsc new file mode 100644 index 0000000..8960d76 --- /dev/null +++ b/MikroMaster/20260511/20260511202002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 20:20: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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 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.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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/20260511202002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511202002-Diff-Config.rsc new file mode 100644 index 0000000..ca157a1 --- /dev/null +++ b/MikroMaster/history/20260511/20260511202002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4299d4298 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4300a4300 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4303d4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0