From 9fcae8020e13176475c8ea628973c8fa035190e6 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 22:00:41 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 22:00:41. --- .../20260507/20260507220002-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507220002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507220002-Diff-Config.rsc | 22 + 3 files changed, 4666 insertions(+) create mode 100644 MikroMaster/20260507/20260507220002-Binary.backup create mode 100644 MikroMaster/20260507/20260507220002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507220002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507220002-Binary.backup b/MikroMaster/20260507/20260507220002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..975c29592dc152b5d2cb7f7f5544e799b7979e3c GIT binary patch literal 297773 zcmV+aKLEh*sF8Cmiv$2HvNACsS@4|Q+IH=JsVfC4(Y>Fs^->QHH;|}3WBrey z1d;6V)SkE$^_oyb^IPgK_w||agT<)35nzqMfbr=?Ix+z%GZ`9}zuj=Go~+5SE`2eV z99b0Q7ky=~OSHV~gZGrs7op1Y2HSiOA#q}fg9dCYyo8*)vDJdncjb|L^=;VN2%D`JOabCd>oumF6P z4IRS_H}?jdkkZ;_W3RXMOG__rzAdpjNfcP0BF|toQyLN*e!wv$@{lBUaVjq(uvG5N z?xNvkhT1t`jFkvO<+_g3@~2Odqk!swOOvh88DH%=8QM61`HTP@p!u)08Miru0zAwf zOT*h^3Focai{&VaNAK+pSy)^@L@#Hac93@@^=y6`nanUxnWKMZS`=rda5>!#^will zfm^f>JY-Ugou6BO-@@*NQeLnc<>xd4ermdI3fH`JWDG0k(O0K=Y$ocqXXDu^MvW(X zuM|SeMd3vZ1YHt4t1&a*n*3DXKz!8!&t1$#?GQo4@f$ITH-+>^BzDF7+9E!~>pExx zl<%BuA~TWW#9e>|&ro6${(Ef~J=nt7)yg6x-m}j+$RwkfAqusV2mq+ttoouZRzkoi zNFrOEW-6V++j}$ndc7DBy{Ua&22^t)=l@F}yWLf2WIR3c$WUMT>|1=Ws|<(x*9nCG zZyzpM!KKUDYQ}M^h<$oKvoXuVfF$yCwEzZ01UW=fvPP`Q#{2OE!f-eiSiCaH8v0`- zt^`|Zl8s9SY}0YtheN<7A^YelYeblNO}V8;ylsw;;=A~XT5b=uc3;~_!;KQ(%Z8WUDNFP=`v=V= zQ)k0CIDN8RhFOQ}LGOAWakKnc4-nv-<1U4s#E4iU9l72#RO8N-k1yXJr7>7VQHYZr z`vwO6uIYh1Njuvr*PHF!{v3&Z$mbZqUJV^;@>yoU@QA>?e~WgSmHkqzi;}Vt{x^Z1 zyd(}0`JB_Ml7PUtc5W;)y6v$qb#=UAdoFdB>cHOVCMT(1J%t3A4#U_~+cp1| z2^hD2yOJm=-AGJj5VT!?0Fg}f3Kd=uLw@Pi=k}?9>2kEI6>4B^LTj~4!DKrKH3s`Q z-fBFv7Y-c=plw!7+p?kQC3Ej>KQF>p9uiW5&kHP*iKvqE51F|qCoNWiwwFZXzBoen|t01LzV z0)v& zG+W?zGtiX>(y!X3CiGfQkfssr{C;jqt)wT3i2>jX2NX*mvX%sv?1CdxzFO~7(C*S{ z)kO2H=JG(z%e8-Myz*wW_UA5O_!1gV$auO@sK6FHJ>7^wR(Z>R0~A>oupRj7GweO$ zeQ)KatL$x6aNF96Uj=5~sPOyic6%UydwFpGO7O^!ICA?V5(+(c9#i@Yct$set^3Z;y*mf zW#cC}tw{TNs`qOJ`gSNprF+G*6c899u`pD7UBX|8^n2Stnt1LLct1H|K|=K(0oYaT zNf%s@lfzFq7uhKta8OWE2LO&D^mK z#vvbOOS;I2F&%)OL8$Rx)0Vs0gH8V6F@G%R>$Na(&9-;$dzk6fWutfrnsI=ehLHHM zPaW1LW4LUx?Y^`iLLI;fc_41;Y-iu8N))W2bN$hO0>FWCk(<&Ei7mI|^SeecTR{mb zakwh~0_}g(cj$~&AVpgs=Xd57`yxyk5uOBZtwd7LzVDV4^yV31K5y#DB+%0n`Uxf2 zJc(@(q}-(7Y2pQt2VjyzSE(tEl@`2BLpRy2b<_z|?L?tcRNj2u|_1 zSF#Z!tgR_`=aqf3o|#(C)|2}Q zFVuy61aP{jL}inq~%zlJ0lWvM^aLB#|51^_^D8SLZc ziJte*$#HdC0C&-Egw};8MApc79HhzhIW8XLhM*TPYjB-uR;eW7mUQpswV! z`vK=x*aff{BHw)u)o&RJDr;i8!h^%rw+vW)K`^qEK< zYiLQwzTp#WZSB<-2z&l5ZOJfe-*{72BoJuiP37V)#Tj$Me3f!+sBBg)#V3c+{QR?7SeJ zVD)Y|n@e1KsCgD#{|;2Y3V9ubNuzgnBaasDL8iZ2c?CEngZ&RkL>OhtLB_$|T*Mipz~cl| z$U(s}GoI8>aE>O{aST*3OXf@AS+Q65-#hqMcWA?>0Cx|aCAwjT;!_Qp?n-1~iuPhV z0d?e^P25mD497Z&%stzX%;T!P@G-cJ&#vH3I5N9<1HSNqFkP#AHBK_O$!MU@=!SUA zjOz;S(FdthGM+$_)$MM(IvzgMS*vUxXjlv(imQXFt?hr?41nRZ45P8Ev}1kTkI-hd zehu9X(cFH?tENea!}_xD_FYvaAJbQ9Ty!&mBg%HyP$oD%>JzAQz?MW|k>dgnWvWCh zhj1X=W$+7ph4!<+Lz9fW{;qv{Ox45N`5h*eN9Tsr9aA~#hQlck^ZAU zV=)(AZ3~Z6tm?}u%9AODJsU_0%#5EeUu|^ML6*}K5Ts-Qa(sA3Nb}LCtOAYP z0FUyP%e;i^UNQM1*5-0jXw8$jz9KIOJj-T>GLft~)%2OxPCkBDL86imDjsr~+Igq? z9=eYm_=Pu9g{yre#6Mh2-g(}XGFP5|$x<=u-EAaoY!uzh>4AC|t(=(`7X8xxRDFpRmUc&#dPRw@ut7;#>t1UY{Ulqq>ag zv394$R^usTQ~2$V1RvQmawqBZa1!?owvv3sPqX?lEJxYXn8^UC;u8M8qYB1b+{!@3^!9F@_M3jp=+L(0dbg7VK`af;^gRUv zR&UBiTd5>5VK=V0pCZ<@sMeU9mMc1U@5B&8F(NN%d>^Z^`N*JZz#5onU~ZPQ0#MU| zi$e)^{e|@ zY;fR!&K-#8x+0@VYGA&No$e zu8JWTZB+uoG5>SSH~XDb_!?V~i9Vt&KDin?!9ArmnH929chsTH*Z-G`2=Q=N*Qk30 z?Dy=(;T==0U)se;b##QA7yUjlIDf0Z^;60kMUrH}9cIeRh`*N_Nt;ACajRAX7;;jN zQn2|Q_19fzP%%;hOI{Aj4qWL?V?_wq);K^J8I4f{r!^LfA||k`Jx5b_>%~DZB}e&2 zH=SGJ9z+AR(yAU!cV|Ht9paL zXxnKAueBlPkF>tD*y+mZ*@L$I@Giy9y5*vHfAWi?DRnU)d(%l~RK%?X*>0u?;4-t=-&;`gglRG9Tkt<*?e?gaJQ#!co8iX5(BO zKu+Zc?hWcmE<@D7rqG}Z9h2CtvJsQEYdtc zShGPESlr935?pQZ%LksQkOV(!*g(|nJ(U`5Zjd29;^@F$Qk%Pb`9HvYCM1*#fBz~( z=x_>+jzKQ2K3~h^iI*fn6E6??9bFgYySgoQG8TP4>E_wEmM_uiMOefRS0q*sIG_vy z?lc9>#@{-G7f!z0YkE?1bE~V`jrzd;HCBz{NwIyH@FHrPcNNHlw&3++b3sTZF8$p6 zQ}F-h_ajS6)c^4~CCG>V2Tz?60SUqZyPc*--p3fHvnU*cnSy`ybE~$n9yei1r;1Q_ zH*huPQJS9q7-4E8jz1-RJd^}Wz)yo6&f)KV3T1JSwcIEM7`F^|j&>6Xeb>&8BjDM6x`PK1 zd>95l5UmPpNx*>Zm$WE>-(-~6l&8V*Qoo&;*;oRBgXHA3q@aTP_ZpIea#H~#jbFfI z$*GiB98n6*I!8q8O~^kLfAvV-k9zyg4L@ZB5X8zxr^DDZ8g<2xkx6WbFGyzda_K9| z+@Ee!bnr4LWt~JQMM-eTQXav7Y6NKDzu!S_Pf=;a1xB`qh}h%Ba|AiB;`pB`HPXOA zDGP__*j*TeJB9fa{pH}DIz)#iPdQsDT;;mGY`33*J+-i0wVj zg8QInn#32BUo_7FDVzKJsk)~<=6j@TZjQ^e2o@bF;wLmABMZkVAA z^b)&!SkG?c1qw>!kTMWFC_szlVUGMIoxFP4#zIVZr}ceyAZt4@6D?3Fql$Noe#1(G z)UZ0IPXBeEpDOR1>cRQ@IE2|%AZa3@h4Byd-j*7pwD@@zXxlPgT( zQg;Mg4buxraZWp}?S63E6okq(Nc#S@8ZME=z~6h1%%e>5)Z`adAkegslXu@|+4}rJ z01I#lYKYOx=86%Cg42P)2Im4V|rk1dn=L%!ifH@81** z%GD+DP?@b+`2n}=#bds4r}d`|ZFlU%ZNq9(GK*jFIVo!UO=uLlrFWVn%8o~~_^)@b zmI|@ni+q0!4JuKkF514AvwNCobco-r(qSZ+h=tG=@+Ws-3+2jV@se{JwnwtHE!=7M zl3;V{`Cb}rryhSA0V{n28x!V0#BcBT)Y(_--H#R6CT%B`W%5K$0$Il|@o=q;kzEO8)cYEJnQ&ZD2Wv(MWGeBcL^{7}0qlUInKzT>Jg! zeryVckarXEYzy41S17x%UqDPa|Jsir4=K|xW8gO%6SLD{?`d}m9r|}rWR~?K*u)YJ zu-p4wwJ4Ea{0z9=z{*|F9-<-n_DpTjM@`J(V-U@LNtg~mwPXTn>VC|VGZmmxx3Vs$ zk5tS-HV4aJr;^B>jsi1}c8|+yY)w*gGazkE(+n8>J+o7FC zHQc9D9DJ};l<)mD+b*tatBMWzt+3#eC`??0k%r?HzON zso+jaYorMm0L%mL_j=1!y-msEFJe!uzW7|Wh+KbdKx~Q0(_7{bC~L;0B}#B3^>)(L zGLd4#JRvxHZ|5wfX5u0-zjw0T+7dYfiJ*nL<3^@Nw1QI~FtoKvHO!zXPpl{2pwO68 z>&9qZ`HSeQwn+ObB=dbdu2d5v{&4m=_Whp8xpC}o z-12ju`4%8&FVhGA;yoL)y~jv9;@>eHOGs;}E05KuK)cTYd}V0{UBo<0VMTnc;rQrP z0!9J(Oya01C2qf{j+!ocZO&$Az2Y!=EH9qRQlKa>GsAzMbT`$56LyIq<}7tcz1j>2?P9lRKy>rnQ4?CMZBbYP&@;=? zcO*NX_8tZb%;eq3^9XGPNm$v-Z?dZ}KOzl~!W!AAMt^3!{^0u}^3&O}3^Ak2Gp;-g z4U#i~9>;o(a@P)tTGgEApUcj?F83xhxdl1Ni{}Zv3+xRabfdl0bg-ud?~JKNk2iXz z{VE|5`FQU(L_vkA0mbrksOrp|n2oI+I!(MFR6Pri7b6Ym3s1aUG{Iq#gVOlDPU`D8 zWPy0^YTUP(uB1IW8Q1;zBPZF29!oVYzKZ2ysxQ<;I@{hVGAS|wT zrwY5qUxX!0Y{>ZLEFzuP$ALX%&tHsqO8x5xXRYEPQvaaj_&r37F-|K)zckaPh464n z{aY(MIS5sLd~-Vz_ibTTf|f(2a=PiWuHBO!ADbazqGu5L|Id zzN03e^mdp33SK%5`nhUwHs!87(YY&WS{NuRQ*&bWsYJ@48M+U3Bytf3_FOrs4s3c z?vME%;nnqTN#};|SGTCUtXaXyxL6$2m!IHjkmV3xHR%W7g;lt~YDKSiTxo=W(rlS4 z4xeqi8Is?twVNt!n@7BkV-7k+k%RA<5a;02pzbLMsH|^UsB!YXYX5Z62%bq;0YuJC zzRO#BXobqOPi@a&)W^2+2d7MswZLA@71@ZpU2@%wHOX|1*n`~^u(Jt7p>45xJF`fc zV_nV``OzfDbCmjhaY9-mnEw4VXKzZOAjoOA0KX#rFbwPjLo&e};^X){gyUIEtF6(- z37^eqdeynR?{IB_NrS+oJ*{kz@td2`01p2yUD9ZzWA_{Kn!Qa-dwT3jtNG=MkVCjW zFaJ~GCR5{Us5+cq41P))cfB9G%`@emu1t*y!y!fVqqMQ}Rw}zlp+Of1puKd1C(JZh zuIT>o37vPQ3PJwwK;nan2+?Mo+^z|#N}e^f$Ak_7TrVE(%g&3Hf^4!-iHno2FQ_MD z&7iBgA(hv%ml}HbJO^R6!P3;C!`fkMi245Fj(^f2{OGd9$rZBzKw3)qO}s#($8~b_ z=0VSLpRHwSH9MK8L(Xy`QFc(w3f~ZRXoXr<+xyWgM`{Yu$Vhsh#mi*5C9<@xE#n*# z_=Y#YVshkXtaW@PQ0f3Q{~m8ga|55jfEl7tP7Xz25KrHYe^81q56WWGZ_Ze9H)agi z*_;bJsZ;zF6_B2Hqns?r`&>M0NMtS)ZkqIZe~@tqjN|eYBEgtFu&$e1{OVKtun_ec zw2u&7XdW?IM)QxL3uHKlUvB{j$TCb|g1l-vWFo4^udv4L=@#u)7j;*6yf9Uxm*g^l zjT9=%@vXi+Wcy(h!k4X9)&Ek>&26*VVW5A`%I3;gcBZ@$p2CU%b#Fj0;k&@zCu4{W z%qj?6{m{NU8p>QfAz}!Z!2RTV&p;MW_B1-s8dbR9tg+vDr0}E)C?Lg?-|NHSBW-z+B_|xFkwf!546uPJFs6CO8dcjS#z<2~)XJ==hS_>vM}b zJFWf<90H1ECfTwV6bQ|>a~zUi@uy>u{ske1#LVJI`T)C0##CFllV%aC~)FzTjS{@*aDP`>2li<*)IXM{VwPsfws& zHTHxa{{FoEw@W!hvq75q;}TvKdwKmMevFZ@vPY3KTN}}M?*ep}6YPV+8}gXVjTgwx z`6#$lD5D*PM^t@I1n?rQtcX;*y&;*7S(2r~XBzoih%JV_#&*agk|9_ zcsP%hayakxZRFDz(5TW*GL{kh)uq9_o7JxDIJ%3C0fdsxt4(g(gFtr7&BOMQ5raLx z@3wW%2ar{s(9YUQq91+^%(Yp|x>FvRjPOlur^2YLt6rCS!wQazkQF{hMq*xFHW?{+v)q+ z@LKx%ui!z89%(z~tQLJlyLpV+y6R|Mb0C}O83>lTm{IV+V{Dt_CQ5UIre&4bdPKnL z-RlQr8Q9x6tTaf+Auv>}L6{;Yd6gco@57D#`%BZ>C~Pa*rRpbXyt}{F`^UEu z9e!x3*E~NgzYc7nj{BDQOf&fuUwIg${f|-)zG4=pJ!Eq*=o`=si*tUY@9c zfeY>A%8;y1PL;IA852Y-S#xf_{oJc)Y8RAm#bUBtVazo8 z<>+ONz~x_InnH{kh%XDO%ncC|#-YcE)PkDU#Gy((XR zI&2&etdt_|dAR|_8tZUdoglxA3vGZpyDN4+{YDOhd)H^c!T*of_n-mvhN1bFNoEbIS zhIWxbyMd!aU7ElG!}U(KlYNVD%ml5dRIS-1P`q}UGI{BoIVPj)pmILZ;YOx%KmZd} zlm&2&r^rB3&i)+;e&K6Ebks?t1PuL>D7ZT^Q`|nyxK-vm5j`QEUVygTK2vf60fIy! zdt^*s*L!m}EEbFgQKl)o7+s*gBP+rXtNoxp+|1l#u=50+;Z3)8WN;a1I)?u?kI?c( z_dE@1=65q##lolOc+Q}T9|Bf#iNX@??8U@HrzyY{!{4-Y{)b>jLA+;}i*2eJPW)Es zagl4?Yk&+UI8V_Jk8kUWWszC#F0Op)f z(v-G{kRot)OX3Q*%|?(}w9OGu4vIMwN4e?|7{d8GIH`{KTAKXfrhip{4|NTk8}y@b z=WW4wNl|=%>o`%yQ8JkolF5-22V;R#LRkSk6l3RR6-mjq5WqYmUccpu9>oaRHr6(x zZwqk23D3;>D48q=m#}ii)3H?ntitD^E|?4Du8Qz7q}>0U7^1f4{^AO8LYAfTX&&Uq zK>sLh;wb}npW`?*jdM|)xOsNT(||UHw#=;GR^t0`qS=^zxI!wQXjt1r@su@-Ri#g= zhB73A4i&b=4W~L;`=c(3H)>8&7bO0eicpDNt`RW0n9_ikhEn?3r8u8U7DEB{*L@Gn zrR%{^sAM5;I6XdUBm3FF_X05%42b(li1PxrO-K-HXL5i%VWNgNnz;vb)z!qL$ZX^? zpX^B-HQlO(J?2~I!i%D=J3F!Kh|GTMLACf@jqg%Oj)~RoQrfaA?ihN@{4~UnjnYF9 znB)Gj>h7vn?$0j^1Y>^lRytA2Y4HlLHxML)`xG4C-@VXVG`gNVK{y|+(8;^IMuzpH zNg4NkzotJ}JWN9z6wHTckp6$2a4*UmM#Q4(4Stj1TfSI!6;#|xt1fM3cb#s6qgMYY z0XQic*r*n3T=w5QLHl5BGjtNhtqoJ^HjBAdOlZcB$NAL4=RByL@9V3fZ%;!<^Ok=wY zMdSM`IaN|LG8e=;t%NjWF%AN{t6+fS9#3=5=g_|6_=l<8_U{qJ zR0y33!m88wfMAZ$qmD)LSh5A>EU3RgbjV<<`&3Dv+BUY|jxVd2d0x z?^?b652%aqSf~+9DO_QRONA`83aVg>011$0@;d0LW>5ah2h${kcDIRoz`q-YXW1YP zf@&F1v{m=jcQrijM*bH$+GZpVDVH~>cpT71KdXQ>V|NMTd5ygnbiy;$)kaN85}*(} zWN3JB6Z+@au_)%i!X8DT3Osf}jPZ>V2I?6_jL@GrgZLXpHQZ1)7RnB`i-%0ADD}-h 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

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