From 9af62a26590de031d30ef7e29872c643495b6e9c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 8 May 2026 13:20:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 08 13:20:44. --- .../20260508/20260508132002-Binary.backup | Bin 0 -> 298264 bytes .../20260508/20260508132002-Config.rsc | 4640 +++++++++++++++++ .../20260508/20260508132002-Diff-Config.rsc | 16 + 3 files changed, 4656 insertions(+) create mode 100644 MikroMaster/20260508/20260508132002-Binary.backup create mode 100644 MikroMaster/20260508/20260508132002-Config.rsc create mode 100644 MikroMaster/history/20260508/20260508132002-Diff-Config.rsc diff --git a/MikroMaster/20260508/20260508132002-Binary.backup b/MikroMaster/20260508/20260508132002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..da299ce1dab70aa050dea0e6581a98205c194c4c GIT binary patch literal 298264 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%0Dpaeov3yCx=n8T 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

}Tv7$ApQs%WgK1e79!R%)9T1G$rQ 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

DGYz(8(fRmrRGU%q%W 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

E*#c~Qk>fi(ggoVQ--5r zheNXenKZED3w^8o#4#81>jt`p;ZTs}q#^eLKw4U*wIw`)t3X@E8zl0u`Ix(x#4tjx z${Aj7v0H&c=OKzwVQ&eJeqc}ZH0|XM7p3dxj|Im>Xp13X)GS`1er&Q%hk$JH#6G+v ziP$f?vI>bgL8o2EUD0Ap@!COP+f;8!jR&JuWts->dF57WILFp&wccOPK@~?8=-=*d z#We1UPdt1KP;?um*-^5?;D>?gGggC+-f&Y7k?eEf6DGun0F)nxmGO;ZwOrQ7-`<&< zc>@T|IbbuY6(pVAV)L`#%Bhs)cqa-$)>pfw1&!K*LZVFC2u&s3ojo1*)>~MWdJH6=3B~GOEiD&M{c(z^RyPHt#sL; z%mtt9UnFeXBzbthqfsaLMZ@MXfo4T??FVJFJ*g^?Os!~h-z`R23);w0gm+5BM`q0? z_8^A@Djt%z2z~D2&n?Kfx|!$XrNzKlVZDMwI@<`0r&%qyl@^hAzNMJS>hopQ-Q#O< z`+DVjfSu5`ON5Z#&h)%S`*aR$b#PY67sS0w)41%F{}vIOf7mY5k`69%nK7Q&jDwef zgSN3GpG1YOT3^5ko}w47C#`Z7({qZFZ7{n_My&@`S_?;Q3H;8~lcgwRpVX&cfX{>S z-A~I2y0w=cam}=?=WT^+q*K*eO2oa0qUT2zAGdcZUoxJ9NM+X7E*Jp{qEs!oTPL?c z(zb4r4*+gAf*X>hrOX1!)qg2#ti64ys3vIXlg`1AuXcYL!@RONU<6e@%RzppTc2By z5b($Mkva(5O&0$fBXL>d6@|&A?REV>kB?r_+jNEwHdIVjjy6gWe(3mVAWHREB0Y$V z|EcEg0tW7M)OB9*Cf9W&Tq+J(9@eR4lg*@0+y*EkCS07j5bpjM}yS?dQ zhrvPxdhj%K1+YJId7z@>l!*~vJN7DMl}Akc9Z0c5)ZlyZbW`A1cE*SuVXo0t?_Zfz zl(8Rx1mf7`$x0h^7dMAT_X!m=f*_r_`8N&=xpKx7w$KGIeG)(?9p;Ug1N2(Sg5D53 zM+87q@FG-ZFBYq{U3E0$j|B=Rte4bje8@1odc$B11lQjYXT4BvAh@mc-aR3GiME7% zzp)qIZegcnEtdsZCRj4`=WagWSPzt47_A`IIgPOmHFwOy)D%oxMyt46x4 zL=g-Ai%J^YhkOD#+|FlB&Q;OrmEJRC%kKA?D^nr9sDZ!$#1?(=isN(#KC%rU;{o3a z8wy2pDaG?a2Q@glKyVnlqu|x`rlvQSd;~5zv}x#Rq~PHQWa|p)L`!CLljej0@08BS zsF1Z_MgHE~yjj72@^k_LhEjFu6S?jona-1E_P;(8WR=B(TqDrO*Xo3n*}6+3{Q$8= zU?`;Z+s1u;4cI z0m3?O#0Lxw7}Ph%ics+1d&8CKT(EZ@0bAe;tU4NNT5v7h#xbN9G0oYQN;oZOvo6_ zQ8HNIEt~^%MJ3BnTHiNifDMyoAU;aWj{tR531^jJeF?bF1b{bTsD2CJvBw&!6$n^a zPrrxX2nh3jYxS(V6rVGB`oT6@2x&|t`6m{hELD zM)X%rG4+R@Po|J$q^Pu@d{PkyewNJnUsR41#=|Mh@I+LZ?E8mKe1qeS$GT<)HSNdC z4;|r=oOTU&4V~Sgg|s1#0TAvwgpSE*q-F!WsdMtk4^M0yq};qr0CO!q!JdGLYYnOu z9^Gxix>VQliEWy`xz5YVYBP?71gEtVY8}W)bMa(ci#csg8vUYN_tWc9Kh!Kba>IXy zgVr83el10Hkc?jSB(cz$N2`w}k*_K%45M01LKBOm~S9B>NUZwZuXcWy%>q? zKZ+h!g-NB)xH=Sx8#1q8DtsIzqm^m;Z-jahZ^-nRYcHbwl(x06v7ayJrfP(*5<4&L zXX-}C+no4}Acg=iDfe@{()2t^#TP$!QYj%JN#xzJBP0pY{4ZRpIO2DA_=kC|I9%2o zgh%P5FSU>2Oy={pW8O~YMPgD|{jCBS>=)?tXxE}&A&tICuvO&+4{i01N@feHQ>CN8 z$^#V@4|W@L!mK;}#_~1gI}eolCesFMF{rEG83#^;)n#FJx@y56Vb&vIaQ0^;u^+pt z&q=XDnY~J=x(oL<%TJ)yC<=ZuTsuytHH@-k(QS|sNI<`b3*DzblzntsdRd9xC zho$ESj>3bg$O*(5GQkSLDvoEZ-|{!g)$kiuSf+v}sTu*%*;|QCX-sK-`C~^NxV`bO zaiB_VQLJt)oJxkS!*^ny&WWp((zTRhq6>l>_{X*c0CL=2;$mIN zH?Nl<=HElIP$D~%LVYHSb?mBn9u>TMXxwX8s7bgoW|t-ZO@@OZaxE7WvyP45!8%j8 z^U>t9$VVNATW?L{6!26r9GXZPc~bnrPKF|*%<^*aU8#%pvjzR4h`*2#4$e1|I;*ME z;zOS5n(?(jzNCi*AhTJ&IP^__4nKZ}nL_V-#NI$Pm6!Gl6{ejJ68 zWudGR&;X0~+f|H&!Q0CYUaw)rv3`p%jdxl=MV$KD#FjE)Ile;Eck(c&S9pN91m~Ib zH>Th0zj_v^wU*H8qK^4^!zEWtNt=-|=pw;q!er3xkoF1REx4Csq-5h0-mN(1IK`Uy z>Scifq=B~77WaWppO>tEpJ_8-h@mzT_bJ&|g5_DBA2V}KhImgH;#N1O@h)rpO=q$T zN{(OWDzu35LWzmOp#X4O2(l{kTL+2t*%n($~2Kdp_V8MGWMF-@=6-!@$O zWY_{kvZ=E2>t@3MhKF_)AE()0kCBqH)H~c}0C@=*!Ly2EaoCZU7%+ zn|QZ<<+Y_ZP0PH0^!cJwOBFk*^1)XNmM-+9sKFADS{zFtEhC1vst{O-r%A~S_WJ`u zgib#`A1-`5uVQ^R_}LDVKh#R8cmbaR%;I@Kdjb<@&bka0Nm*Cj(VEsGq#Rs``?3V& z>~}}atY$7X!CE1?S|+bXcUfzht%FI(<(`$CPs)6!@*%rNx;_Yds~V*QTNGjeV~ z?P^?fA5UPq!jd!wJzd#H!?Cg>afyoKdMHwXZgmTD@Yf-Qi!$AGk=M_O2FvO{Fd-_D zyOY48Q-*;msU!8{Tc3!<)eusj6hQ=Lkbu00!^}msAYLX{_t$HZ^Myf8yCSrXhI^iD z)C0)|nkW}L5dlZI5*CW6P7M~WB^W-6!~pvRjASC|-DK%4NUI@)r7Wd(y|U zB;RIToQzbTKU#{ns6h!@RBN8@_W~e8-!c{fj+E)#q820TwqF3^iX2eVta= z=V7cX_?uPnfM*x5P{o_}NE#Uo-T|065Ln`O&{mLAX4y!`+CyRHRY=ThND6ZwD&Tdg zNAe(NCn^WFZN%;2y4u&YsRpi`@~>R{V(E@jm@P8PZVa%KuQrsLnrC1&BN#_wvQk+G zxvR|%8_LWy%nu2{qLzE(I}~kT z0!705JtiDN&eO8h5ejZ<>QwP&J1a?K6L9~9Bj%i|7cZZhNDkrfbeI2&2vj8rIt9!; z*FlL-6fld7l@cLr%L-%5n^eXvTWRLwFg@j4k&!WG+QKE;1ZMH6+5rHRX9@C+FwyKh}zIJes_X75Sy`2N1wBXIFtUYl00k!+a#o1wO_b`XcFOZE1dnrCCu_U|zs86583?J%z`iliKFwb8#C1%0(K-BZvR;kPr@OPAZ=ws_7 zaBlJ_wGlK}*x5qnPb@`=a!?;Kb}Q+t6?3Y^ zeS(Vv`=rgyG>R)mE`8|%f2+bbk$-MQnS?37@S+wq=-t^r`nK$bb5PNO*9?;L?_R>C^si$xFaLgtQzQF_sfNiO1*cSLxE_3BC#SJ%D>55E9Rd^qfYI7 zO2Z!2OT+VZqHl)RN^ft~uj**7YS;a1A5T>}CyHGYmhlA218zS_{iy}8!dWYg6H36a zosZtt>irBIgb@6G10ftr9Ng3sc>yx@Mjn4gxHEsmL1tl8Q}7lHleN2v*cT6W=0o7M zKUr&^VynoK&x|&jZk?m#$X8W+|1rt(6NF+);&X%^SN|1@b?pe3AX{XI^p?#+!_3df z`Jo=|$c`;D8&j>v(&bu>n*fsUwzVdCd+E^Mh9aBR95Mj^KLEfpTS-=oBuh;H@xprypIuCjGqh<-Q ziRFRml!~l|YePvZw}v2vZ_YJ%8wcG0hp!qFH`g8V4rpvn#Vl&ZtP9g2v#C zAZ*JuiWK~XFU_KR8Y~xh+JnsjYwV|F=x;R-V)lYYaOj5=-=1} zB8T+9I^Z~aOu8$OyF7dldnNs$032fgT^ovpyXj(-xe5$=wf>hM)S|AnJ+p&uuBS%e zL^G|t2-{L`fo@O?XdDveahqEeW$KLAO`U%A4LwK(%#`150i|Y?Xz}PFnQd+|V=$~z z)Pw}a>XU|pEycT%Jxo&w72c?fBQ~HFIqz@u-AFBv^rdX%*)5_+x*v{KV05h^S@a3ntC=FkBVC zcOER39tNY&^$zX0Ks}{l62uKcmbTAgTt^^mZk6K&qMX*DQ(w9-qdmlzdl%)3;XuL} zpokw-Y#x32EsSTeZ`9uA2Q@7f!DaY4>A5%N2S74hgwpYKfKAShz)p@!Z}38Y&oH}D zh}`=olmi-(Tu-+7M>;HoDo{eHP2G03y+a4y{{-a7?0RJPjYUjPijWn27yN)MSTIvL7-&&@8#K8Lu0Sn*sT$hR#ZhP*8{~b%}Rb z-dJW|N_s1}t=};dFNmm5g_!mQSpxBzr#J~bmO;2nnj~C*69XGRTDoQXqBOl-LZK~) zZM_xw7P_#2a(cOJ>r*I_!^;$LnK&nYBlDWoy1-jvnkx!{Mw#cGe5mSVX7j>Bht_`x z@AV=>ayz1TSh)TvuPB^dqh@#1V`L$-+KQvZNTtbbk={sMc=16k6y=E20Q~M`e-)ZN_#UrT*5s$l|VRxfx&z6-2?V5>f5kS(@A+6RMsn4 zS@zQAREyZkxoxoXkUiG?AeKn~$!1(VzEo8>KH6cfk7Q;uoMtJ57Le^Sc~{~9yrxNtJha-H@af}x6@9KG zB2wMfm*3)J(;k5`-ZxDR9Ra<7Im>F!D=V9f^5ig62}bVOs*RIi!m(`e9}kgBX>c1~ zQsjIq?ZxX=>1*I0VUXvUi z_3e#A>!(Aodz5M1eO+28|4x*=AI;Ig1gFRn^>k4y+hL!BJe{_VS9||tUfbmsP$8_8 zN?G;O1)Y)O7%;xZQ$1p*Xp0-6CZ73&5tU_wqW}TJe8YpQ-EMPJg~8aibn5XC#J8Ys zzg0B9mTm1*m)|k-wqVgGjkFA)hZ|OWL&1G(Oa$|?oL6qVuGhihp)1@9iC6cZYz&Bb z56!>lazANAL*6=!U273KEUO>?fL8THa(Zko;cQ1L*-n_0Zdh?~&^dEzE}SFPriTR+ z;79&3z*dsHU<+R~^9$3P_E7NVv@ALoBApau04Lcvyve0ezl_)ng^er&6LP}MhqP)K z6FLcr1CP3yr*zAHW7R=grQ*b!Dfy#ut8KFs71ZxD_5viyTsS$fH0+Ndl%bDNQ=;>= zh}m)$tgH0LqZ?Cnebb|{!U&u@e5_PG1qLSzuMbm?z*CcYjTfpO81rKo=z#Fu zDUX-a?81(^56gNM?9186XsF2`!Kd8j7EdNqwkhvz#qQqlLHJN&>A>{66friRkZg$yUJkOA)*=@ zw+pA|U+p(Q5&6eL#U?zL+RJyVxUK4mH^p(1;uj^cdW;jbNU09!iAXfwOrEDlm9AY^ z>-mYZD%jOz1&s72@oLrSSOHVzSjdIIiILvaL%+KpaO41po z@G`4(paLveTCBJD7ocR%WFLP=vt|K~QiNc6-Q=v*DAdHzPV*l^l&$p=_96vZ^9RM4;mnR-7qIe3*WkRlT?F zLTb@Ek>o=vNkr$1;kKhY4K_gpAA#;cgd1U7+^@X!5!&af4^-7KJeKL;w2`3Uiyd=~ zy#HVjJL?Jh^;Cc)vL|y2a0oPmxm(WYsloppl|GYdzU?=>RlVif#{p_<3E=dBzz~h4 zn64drDKb&$drNU6yZk#+)+eMSYNG)QZT;U`esWFn!f_NSr)0~AnSM&B*ZJ%wobM4Yc6Q-61BySWtww4-ZaE(Fn5oG6S*_ui*yMSs_g*{1FGyT^Ep)rq@bC>rB>9TyeJgWVW>V#OQ`6^3~=m4YGmQ zmDD{v{hh_LfPyn3Jj6K@m_n9@S~obT8Oh8{F}#G>pf=e+_Wh(fV$)rEh6qt~O1RXW zIF{QA#SLsS;;X48ndv`MBo3tNp`l|{SM8$eX4Kx%1-Ny&P#EdV z12OA2HtfaJ0e_Sja;!C@|CKRw+HKI-ye})+Qve6y9&x$HN~Et9JX&tc!Sl}3&2(K> z!Dr~p9@;v!&EL(b{kEuoVk!p3+2lE}xWfKVdSf#--*7Dy+q3#pLc2fqQA9Y)cYpw_3|RKQdgHQUUVJZ1B#WxR^f-9+r!W!u3dv|vfh z*J%mRaN`wH)ZblL=JSrTwLhM3sno5Z;JE_Xlk&x%FUkqf7W}J0yme;eU>aLMsl|DX zSC9#9G@`Hzz7AkjY`_7}ez064c)f=X0!URqA8UpXxP5q zS5XD;(j0qsNF~jx!Mg?)yjFUbRvd(+4=bX)v-OIhhtW@$!}`L{^RpMw@bI9k*;X3O z*@-aQ{-EcM(?Lmr^eX)XVcVR6TeRYD|KK2@-Yd7>?e=ik_L-_nkx08B#}fQfED*YS z2C@9*zz{V-Qj6?v{HZu)Bq2i(FF$94R3}yIc z>uzs4|4FBWUDTQo<7uSqZf*6Ni;xC1f+Dm%MC}P->|$QKH3<}#KJJtBA}-r`1?97k zLS1?GoP4IK`G(?Q>u{zn8}U@Hm90-zo&LdF_{^hA_vB|&hS`?nFwQml{wBpMJo{}} zbpLJH{q$ZernE&`XFvhZI86paSJcfxB;YGf<&%{)qOkMQGaz6KVfreSdzT;&2WKN! zDljz?llbn6kkQ^B#~a}K8ab(Cd7>+|HliW-6SsLh;u{)AT)iuRV4Di%9IrHZexgH% zcyR3of0a#SfvVokwicuio=K6$hH9d-_43g=SxYv+1Oky93t&$~%_#!;c(vXgq<8Y> zQ}MHA;&8^CVpob`>P!Dd7tYdU+Dpr7T+p6~XW^~rl0rJa6`6w`nvMUVtTd6pkE*yb zLbl}oqPs&Z8IM~MBRlIhMgcnAb~2ESj)d|0Kmaz$-jvqSo+j_WizM^?H)bpiEfH=~d06Lb)Qw}?NspWjU0pEbTf$y;yH;nq(^2+saM7xZ8}Pz3nlEG5=n&%mYHTi~O1c-Z2pi(pQOCtAUeiEv3J zK{(@eZm2LE1%Zh*x34C?)_q!m6iTP1lA-Ix=z_q8bp}k1=e2**%ot1$@57&kz{yGca zhrb)9O}Ea;2S=Dad;(VEqshb zP0fBS=%!ND1`igx1R_C&z(_W@!Ig7FXXa?HrHiLAWr=`3j(o&1Q1s1Nb>>{uib?9l z;lG@<`F5>o#lq0F#0+lRvo~|{UZUN(oONkRNi$DddXjwI1Qm^WcVWF~`Uk52B2loA z?RplNw&JwAGzs$Qz?3|I5+zAZMfuRhPWD&IiY}s0GHpN^CSyjL=Q^-Z>5PG{|B$AC zhDd3jnX(Qm)QHi36eQr8qs-7&WM;M0cLa6;kQ~~qf3t_!a^U6lv!`<_Xq@QeK17_- z;Iuz*%M=@Df3pZfMf8@xa1%CJm}hTdmP7aGMn9JZ0Gsr%WNnlrOD(LZw}{azmB1m4 zEP9W6Y`mh3IH&5nGOqH-DVDBcOM$$!h47OXVJNmcg8sYMFc{vktLPlj_6ju6ky1Ydax>ic83Jyh$F7|o zd|<~iC9qcAUQjcN_s%oW3QPbTO;f(2_U%q0$fRX^+;yyyc1x52xNO|}f|ZXDomH(| zb{HMfkoNX9a$8xn^5nWt>{*epPHqe$>UEZG7MUUu%ukfg`p4S5M|&M$y17sz7TOu8 z6oF8=#y3X&JOcDLc2rgftcfuUPx--A!KdABBD*`iI4%(Dx_8~R{*r}cqxYJ}{#7FedmC{u7baDTshE zKO<=h`}`Q>8QtdLMvO=|*RND3$lIS=A4Ta}Cw8^QZ+H#|3Hjgtww%Cr03jztbK <)6EICtuQFx30GJ$*=MXe}AT&y){a zshJc?8t#8Oxad=~NHWkW8|A4=A9&#z1wAk5fM9HJP45Ie{X{6T5enz!!rImY-{4j2 zCx?AH5zou9nFKde9eV&IsI};i^DEo3J(8WvFVH}3aO@XFYMF?RdOX$Am_gbPs#hW# zd*>V5oT?jzM587Ex`P9uC?qZ{TD_1wxW!dAb}3xlhqtlBGf?Y)qE!52HJ;U9h7%wp7*?{|v5ym7DM=0-SCK+BkW_ci?|jniLw!xSq8W4Xnp|{)<>{oGmKoi)8@a zy7hK5c`Vy>z?Yros`#PORv8n}Pc?;L=#LWE7lMtB6zE}!$B7LDT%3FS35I+nAxd>D zV(g}=*e)7MoLh0K5p~VeAjT-&Wi{EHXBbtMm-P`ZwxB?~RQBpd$U`(fp| zt`g(Up;O=+&oyIW#a&F|t9|K9&2N}^e7RgLUQyt}zN58ruwY4M1QFOAxTAod2#&g6@4^jNilXTRGx@BJFY3O^dus ze?X<5J4cIkE8=i0;*gKlzUirBYIc^Lz$x( z2sj=2RFbM2gHF)ru9c~X9Vu^4E1P{+CKg)PHFu?zS*-P{TOVR4^zH0#-m#07fQ5}-%QX>VeFHP{HL+_WRZWQ1L9GhN9fDe ze=ju!ksz!r^eaZTvb022PJW|{>=AZHJ;Ff-L}gUm4Fw5z02xCll0&Nx|J#1TZ*3~Ss?+a0I$*yh-XRFmvr@Jnh+viO9rdIwZ)Zn%{6c<1>JBVX6LT_eDCU6YsU6pkCPD6%osip8re1#w=c+Z=^{o1`qETP3bqkAT+8jDHfaPnZYc?fs(A@*8o3oQJv&;#r7#H->eR9RbJz$sL@l1CueaVhLeyeyjVJ2PQ{Dig`+06g)ti8A#U{P-o)k zfX*1?-V!;1uXQmH_RbCM-m#Ug3rUqv(ER2A6Ou_JFNzfjBZm0h> z5QE724<#{Yb2n!b@VPie8M0T9e6fZ};$piVDllPudK^rug@vJq1Z5LZXEcX0&_Om} zPxn@fpqJis+=Oxc*yI{Iw0IQ$8h0YbB@qjEZ8G5nrV1;NUT~$JB&*OLC7xK;5p5`@ zLt0TZ6XPh;`pqk43xx?5pI&bE;)i>&INQX|b*{Wo&yDqx1i0K*k6JwjO8+XD+&9QM59}B_ zZUlC(Za2&ixbg71N>FRrvK-!)xXE1o#w@%CWXJhDUG%A>n*<=tW2=Z&msVSKqI|#O zd+eKzJI?l1<8z9*PW=r0t-A>&vP>4>`>!Gj*n(97^g!mvOZHjbBx^^e4!%G4x=ksl ze_0Q7p2cb8>mXnz;9@zk!UN_jVR-22%~N#rnX3qVJ_r3{sg-2W`={~_s_!iw-==5e z<_3=^?n}Ejkvf&}f!`4);;&2K2C(#>o=VUJKaNC_aQiJgcqGQcepU~r0jN~fx?wg| zlYJt%>``%)l($imXroqQ|8XQ=B4(1ZgNSnE*8t+5+#Q=UL%Z$z z(1Z-r_HhNkl6(eT|FuZn`!Hc+AW@|BM`5Xo>ceVgXQSjGT_)1fL*8$5#EC(?gw9vB zW*jpu4}f&Bwab6&=&NAH{Idt`aa+C0Uip|7-@(Q4wB-L_RE0Po>opi^=T|cwl20oTe=OjxS$FHZiN_e}2)q3ml4?J)> zBg(`0?KfoOerb}CPHEdnd-1lX?!Np8n@1xcB`+TL#kQhh&F6H&`et*ixGr+=zHDpc zJ!JQ$@2OY#^Q&e>B$)|HuUgJQcPG^gLtuazQCCG(y|v2`VPqH znVfM&O-uaNlo$ujLe_S?^x6s^PL2OXwUC30jSG;CIv<8E4BZL*(=1j!H5cd`ZxwPu4Q%Q_ zGq!9a^D1YYHv!Psr%2KSi!H`fq zOBwyL>XD-fw^+27#g(XdzL=?|AQ!A?A{bq3kOmh%9Cr@oc``>l9do>f0gH}xPlAl9 zznpmmbTyG5mx;y#&>vo^b1sfvr?ZRXI%L~4Y{r3{28A$?ynmySbI5D0ZICEi)voLU zeXDMVdHpDpXwf~w`pK<}ESr)RRjrq)&Iqk6PO$etBR6X4bXRZ>C8uXw;r#Ze`Vdrh z(%~uS)s0S6OTP%eDlYDzNynso3tTd1z@-ct}=S{U-gOY zV?8GjZWb{Qu05k?%}S%Rpx>KdCV_XI4X+_@fNK_iDQqW69$&W_FZ9tajMFO#raL~5%eh;$KLZHs^`H{0o_`@c|b{YyY5z?kyb9Tv^7EP15!cJfl zX&*Z-MiJf~c+Z@)U(y{es$b-H;x6gRdw+eDw$3;Bkt;v9b>_BScqWrLw+2&tIp7ZQ z{X=0q{yX0-K#TQ~LvF}u@F|ZZ^Eox>0m;83m@?b5{SY@5{MUSGU*j$!xN0W@uRi() zhymcsL%GmIAQAyA9LZq$;O9DAag$o+N?tZvR&AXuildxNu7spBnqL`Qiw1&4oqRK> z55fu>Qn9q^juED^E;s@nnnk7w>XSSJYY;^7?`Hf?j$aMd7r{xpU$Toq${$Q^h4!q| zZ8B_D?N_knpmgph?AA z)oh`m!J8b(M(*3I@1+q7Mj;tEC>N{CgZj5)YPT;3L3x8Y)h|2FP~iMSyTo|4fvjW; z(8GA!QzU^0&n{%09HUuknhtxinFon9Obl;He}tj@hMn`dZCDC_bZ2A*+TKw1)z7?( z?~|5lnfay7%|M(>y|hJJYkllE#L<5WZ}kC)|1r_+?~|(b2IL=>#ViiNJ6)MEt4u;R z_9I`Gdn9Ji+;^?jrUZ}sat;B5k)!!0revKPVSz>KYv814XCcPavx84lCBWSzO@?RB z?pqTB#Z>h$)creX=lk|&@nGim5Ya<#E5lh}Fi!elN`c_ro*y4-1W*S~Ha~*60@w0Q z1M9I8XUZ~yU3`l2u%_>Nt2spnWFWg`aV6nA!(GM<{M`Owc>-^fn2bcrQ=O!Nu}Tu2 z`i0r1dk5#F{2}-ppk%IGm+pb=7bLlxgI1ybjgY>^(*SRqH&My86r+=Z*L^H4>U+9M zx;8|YW*%kz`o`J5P>aafPa^Ka8vC&_=0sYZoIsP2qdImszZ_!q*m3xJ&T-*$WUPik z%X9klg9`wyj#z4a-x$5E;eix(fL2O|#*d|ECXgQgW6cHsT_bZNOrfeVFF`-dCT9P! z+rdwgw>Jmib$!ttFjcbNJ~VOrE@1y2GC5%Zw4J%8FB7k0;Pxe&TvRmTX#GN~$l@Y5 zXwNW1#mm>IobS0Hgau{BOd3^3+XXi7l+k9Hl6@hp`d_vUzf?CtcQO6%iw)3iV1`~% zhQP)oTx;4TjQl1v*Xc7~ICadxDEzP(F1ztr=#6~<&({{>D#jmEXU*jSYr9BV3g&QBZ``xf`*k=1{meb#Z_#0%P0c^?0wMqbcd4{t8UH0wvQi{m9}P%X`7l{Gp`8 z){5jxr1%CiE@2p<5dwYGa#$l&=R;VRAaeKKvN~~Ryq1hW$fo88m z4AZ^d4RS*7O>KDJ%MO@s@vyR%<7!Vje(k4LGaN(#i}5syaAQ)-n`JqQjthXEvCpbU z36(Uv@YfR{y%G?!a&PC8Bre#F6n$m*>1|jL#pohH6=%LYBew{nj=q=&i<`v^hoRaQC+l{uh9PC`!4`HDpE6*=$8 zYj-04rj{`2oyYJelK4g7ES7Vv74>v$?1(vQ`j-#NLZ_!T+O^G>*q^H_^i*Inp#jFr>kDO28V&KEd|ELj6! zZ!+JCFFW1l?xjOUzV1X95nO;t#_08*j`9BPlp|JLs7-yeOsHgnrAM5CLOJq*gP_yDg5X9Q6!ZpuO zVFyKuKdF>${Atsi>xp226t6rRDNbYo0Vxm}*cCX&=vFqZ)K17$mL4CUYRYO8eoNsA zuz4&V+rbY(xyeepXy@5{TXLo&Wzt~}!pj<>r}a-*z|I*}9}z$|NJ53t*BIkEN5K4M zT9-R)hV-eU9y&_BGfpn$ zr9BeuygBt&_IPl1%q3IQ$Y~xQc`eL*Aiqu=Au|=uYji|=0U$6*(mo;0(rr0oGkH=R zY>}7_`YNk=(B_x!Zq5Lxoc(Dj$}Bbbu7L-BjZB*z9=MtQnM{F)uY*t6CQub4({J?z zSoo>yLG)CI9!P;ACVsk$fwqMYGQeC&zH16cT z?BYoPxZ^g?zZug=z5GX<^CdU#{p#I11|X0W6htU$&Ku1?HX&-{5qnn1=N5~$<1SQ6 zb`mdg;W99r+}S}2oLcikKZhh(^ZnZoY~^*4kd&@C4}DECfa7(v3&rEZBa~U2kII<^ z)BOA)wj8o|n2-qQC0^rauFS?Y`Ute73nL~reu@^nXfzR~5{+EGt5dj|BG84wfRfG9 zAFWCdmHDlTP}o`2GPugHqr}x-@{Yj{jhd+uw|BS#&7)>+HxO6;$9VH6(0SRbZgl=1 z2FiqrQ_FZTj&o2-7-tIFHevlE1rr7D$LYc)aoSx2Wx>tYtWRF3Z^h$a1~KqmVd03* zBYq2mkV*mIx|H6`^4pr5W$A~{31+%PBwcU;71(UM;}ZP+7hZ2j{x1F!wwT-`Xh#bM z{f;C7&H^Vz$Gdknkg3`Fb^yclMicLeV#aauGq{AiQMt!RWG8Pzpf14DX<>!j?RIkI za+=Z06);~Z<@BIDfm9^j+~ZD7Gg@^yr!Sjh~D1c4zhlIocc+wJKcdZ$CptN;Z zzL4$>Gn*T!mKIk1BKSvpCkjn@XG`L7eb|A%Q3vTvdd?P}any$?=hT!UAq!k+_xVH! zGl6hMV_3pOVU@yVjsl4u<|;Q?I9nB}fN@a*{)qm_5l(YLVW%o9Fg5hpMEkOD7L{S= zaoi!oT8yR)56?Q70H^b~!8|&OPq$JJt;{0MFGL0Q#F${pYXvh>ZRM z9&Jm)67V3NKQH+YmIHYqy_OV|J$ak4($2!k<&HVKnj1kzNK#^a44AFGQR3uBFDy)& zz;fI9k>^auMgB-kr&NyJoamEy*9L7v$g@r_WGFErgu2gfAHGlzq1|ZTEwVRh1}DCf zC)jqyiYd9Aan@mI>nZM!nMw6Kig~`M7C4WN>|^>z7RpF5;7Z3>IEAFDb2r76jyW-2 zi|_0cNZZeB^)=(vuoBEq!o_CV{DVgtWWuD@rOXtHmdz51+rkuV_{_OlmNv?^&E(Te`FgY9|v^S4Qxx79(cx$lPx_rG0hI!$Sco)kN2HwekrmKVzT;Pp1aRIV+h=I|= z3DTsz+vS+uJPVP-(c!JS1x_aI;UE^q(spq!6A|_a#oYS|UlL+5PmL*s=G_c?amkF= zfO`Xj`5uVdomvEPIID*0F3*d3sN!VV<0vRG+o zv!>N&zhaW_ok;HX0mk<-3naEcbH?_#Vi9jb%BSQ1>-_voqlgQ8n`ww zcam#c``0YC#ks|vdS$}4@dgv4!by3>M;j=T9Cw;@hoD^}$St&c(N3%6-!es5&GG)r zwl+vv@S(3ZuanfMa$1iDz)iX^=Y5IZjK)$f4!uC&=W8SE*&AuhAa@y<2o-D zaG6QP<>C>b`&hcW=X4o;PY4qAD6YD9C>1QdPULWZA)8ASrLq8lR#M(Zu5^L&$rqJr z5?X~BW|2J=sJ=r!W>b;)5vu+ZU@$O^7Q+#6QT>-yA3hX~Vn%r-AtJm~u!`_&vcxVF zGJ_EhW5$HV>08gTl4sF4rB3%cn`aU%W-M=`X2_Qjdk-nCltwqR<%Z`XV)~l7`E;pv zQ=_tC0vdSF`dbu@c4r} zcey$FyHWx{TM_s4J*QC1NH?^>`BLFUYZc2`M$r4P>cixD3st4?{wJ1*haLbRHbc$%Rr z;TPZ_-oXB(0~^SN5+=c~4-x};&*%P;rT{44b`5>TSdVJ~rAE=(hg__clZY)~y(!pu zw4}ddKE3|)dh?rd2s(+TNNl4o{9C8}?kx~TxA$zTJ!y3PgE^g|iDHrd>X=xd@JH!p z#MxPQpvNd$Mz(^|f#8$2J3iXxcAMJPh3eAHP6TQ?)jSNVXU7wJaIU*LsrCgw{q5$# z;6v1GXtsBSODYQPG3yeTQt}XhBSM9SbTLTqWbM`fw6Du2DJ|4$X#D&8L0qD*u{x}I znL|mw42Ib6&|;3%2Rwno`J-kd@l0_|5)ULKxO^pr)3L77}`{IZEZVbHqbL{{VC9O7lU*e7jMjSqm!ekLFV`W?X zCxLh4WUt~HigB}#056iwihocHY`CkQ=SAnuLw|&NMsBW`S^NCfywt~lhT*8FM0%tm z9wKfig=>RJT0VEn7M66&QTJ%2V>+^GLy74KtjqzdEYX*oQAwOc%m2N$m|Cs#XD|(u zoqQvx$Ug^`_!dLtpYhvWJ*V0UN`?R&;9$`XZ7MI;SEmeVQc>VUq47Uan?#9x@H1c9 zZF-XU1y|Mz#mcWa9|6>j#d(zPy2E@U-lB~Lni9+$)&^$SG?X)KmR6@iYE^n=S%yZ~0+-yRu{o}c z7CASl9XZ760k(k4L@p2^SdPA2vX6Z3v1%}%&ofo9KrBJs%ifl#k0$vfh%Z}0=1lmC z=W%2!h8R$1n2%tm8o9%0I|Yu_kI&Jfe}(F zC+%mUIK)#um&edc7`>N{Q38{kZ1_DZwJPHN*Ei2nH_+T~v&{4}_Y@8XdSLiTvma21 z!9iJM!CMkP1>2Tk_wW%fq$fZ0gU-mU#;)eW+~cSOni5a|69YpuoY5u$F~LpCYs)te zo^k`SX~8OtI5;<`5NZJA4Q~U6FGX4Rio4}O?tb=HxC^_}oxQHkb^NqZLMaV49G8wr z%~4hP__^G%XU4~M(EP|>E$kuea!sDKer@^DO~p@N7rP`pE_NpwdB2K@V8f7que`_B zpDa>${Bbpdt(&7jK7M=KI@R9cB%#BWr0(o$PqOF<78NV$zEjoB-;X)>SJsl-uez7l zKjJ;STljTZ>+Vx3(g;pg^F?$cu*f{JV$64EevlM#Gx`5r(C8n$SZqq1hG3dXn=3Vl z6RxGFF*sQ|Ykxl!WsDH=Dww6oQtABS8%6wHr|(QZT^xIdh^4%GSP|txxb^ zg7Xaj0^_3D%0qH3-)wSdI<^26M+p#d{R7bTyiYl%naW(eiK|jKx`ne0V$axd212VV9dJ* zLa83#g*D1L{>Joe+l6S~^?Hb-Dx}`gX{!m23v>>-xy4*u?nYjbO+bSsu%(m!zYDe~ zn9aap1M^NKCsgO;aX2PFrE5S-GjCWZv)(n7RZOw)V02IB#h%ZG`3IWjOUe~6C}rtl zp`V8llPu_UsFp6KyRcMVk{n=|-vK$ZYs`ym3Xi3vLv>bVD9*CJF=(29_e#ezuO<$j zkQj&8mdH!+IYiy$1?3!_nW?iy_n?0g=9vSpR3)wdMFc3fG6M=hOxeQdUlAI z`asg##Js@H1D_Sm$3{c;h3Z@(fy?ej<&OjqW5e~wFYz$kL+;2<$oLr{HrzIffnS_Z z=?@*37(_1>`DzOsP>>osYNzYd5k?j*TR`ZMWp)8+z>N(?p>rI%$pSq+lmWf@JrWGe z3R&6otft2XIoNgMCbBydL6r#!1+c4@Kk!l*KEL3LvHu9W4W^hKfd5r+t51GA?AFuW z`!4e5cun3lz9!lJkbw*0OHG*>fzT5L_SV?l>c$H%V#dnzE<%6i-!1VBy{P?gd6{#9%xCKqiBU}sm_zDd<*1UiHf5}0iha0zJ6Yc$ch;QN^InPBj0b|@{Dp*{U-pyRr zA!zQhS!$~qXFb8k=Q^69Rw5qIo}FKUV=0}@u($8$v@Sk8zP;W|2qQhVF;)DRAyl3z zJfJ`e7#`S2HyutdKa&O2aR~>@?W?5*GbxPs7P06F<`5J=0M1D71po7UuJ z{8?V{S)9Ve*IeO^pkNwiTLRPh130HDL)4R@9`!H$$WI)alFAuVXWJd^pb+VsW5Bu8 zb9>HeD}Vlap8=9*RfM<`Y!a+)?0m)B)JNK6ixMC_e5L~!GZp-oVVBk7DE@mu{uerc!Vx?oPOJ{m#vB)`3AG0v2OcAJiK2UKQ)_sL>ws?W zQy7r=THGBk0j6WZvDtIITAM5_Vxr{+n@N?XYh1M697}Sm_bo^Ne&(TPSZu8^K6tBe zJBHX(#~#VNLoG=rMU1M;o0Q}aXntt?#qo1R3TIL)dHe7-9& z8MtURLQC_E z5Mrv6=J4cbsxS$D_(dL#)G-rpS5(luv6rKnOb%)uZ*(?zIgfcZmr!^n6DM|R(t=9w z2(!M>*BHD&hGPdG6TRUy{O3Me=9S~vu-$uz9FbW;s5hAcZmecpZNrMd5%W=7&uxK) z+&_}hD~Un|9&jCnRFmA9KpF_a{&;xTvMxLo*X1^{uq4Ov5+*POlCUPh>eSVClL6`9 z^kGnBHb_SQQzWdp1C$nP(!mNJE<(RB?%xn#3wqgbl3fTUMDGj&p!hpcnBcDmI(k=w#D+U40$(yU3To^Ih(^A*9!s z!2E$trwV)J&9G^W_BfcHk);S)hPUN&^HCgHb~zw1bD(Bi_Rld-)$=%qXwu*gslB9R$fZP(ZwzCrHkA7I*Q^9DFq{D@4b}4X-=W0Q z5=?DA<^4>xBa=NGChv6~0(3gKjIqY5Y!12bbu;B@zVTigjm*wqE?xbFuV7P24h*`O zrgNb<4bq<2ypDh*f+j71|4&XbNb0-n+24#vo#1<73J$sQ*4!kpS|JE|9xF;Cwe= zaNtVyN7M}_6ThLBhAW!O#5Z-a0fs5bQolqD9{68G!oONSy(UEO;m+q&cZwijAjv9c zWP2(sQ?^D$QegBILsvxs$SV_og#iJu(Zw&I=^GWV3TAWsjhJd^YkAmT-17_(C`fl z&uxgm-;(hpgvoh4$l#wx*{>N;&loPL#8UE;Jfud)- z%~iP9;5}w22M;(;DX>U#@Sg`NO!)Km$~L5ujnL*x-fT%ya&&4Pj6vhr+#@Ry(a7!EHXQA z<$$7ju-(5K17Cy?m{u?5&opsSDG9CWzBxk}aAoFu+K5f`7JQxX3yFQld|f}h+(ZuI ziJs4^CRV8#GR~bIQm!&c$f8i!Z~wG2L&0_ANTG{cJt0{@{%JQX{a7Rj2O)Ohjgx*Xrz*^;S)<}Yc3qL*;duT8a8qR((fraZ^* zPs3mor?3|)hIM<(Ks!o?A3cB8tw-`mnAD|`+SA17h)na#U)*gqtWEi;s67!qy!@=a zh;mCIO;mbf5%d1hBLie$$8_%;W%nTDhGJ>Gf6j$OImr~);r#HiBE8qVu9;L~Hn@9A z)DTT!3R%qk4rf(1p;(owo$85DJ&}4VHct}=;QWjG_Yltfm$pikw8Mb84=7nXCwBW{ z#!!)kQtaPH0-9_%x^^>+v{K(FL3#F6effB4>XbX_;BGJXx35*361;?@1k*ayU}{Hd z{m$z3v#51ME!gH3kNnJPQ~1}t5uH}&RO_TUDdf#!5HYhi!2^lP;=JFdOTc_%KkSPn z>j>lLzj>}(Xr~k%sNmT})a2qLyZh9~K7NO|sCd%`DZ?k7sFtK`altVmQmY%H=~Pz9 z0#(h!Rq65tEt6G8PkTq=h>qLi;}NZie8etNyu-d^r@(NQPL-?_WT+~$`t>+;lmxtf zlFwmyNXTUWhn4pzHQvEGq#LsKL`l`pR;a2CO|R9OB4lWFLA?gQIpoiU_>-`cf7rr? zX~nv*r^DME_emerFTC_2NZlI&^+`VUE08oXQN^%Nq?ScrslK1XD9(lVJK=&w8#W6^ z$i&~;#16ps84sOhrER~&btscN~ zc1k{Z$Sv%6>IvfTpl|dMw~V{ayMvl34_qns+904uDJi)Hrq{fQ5PSOGn_W3sRgY<$;Mqr#eunHZa<8TKcu^^ znmi>9gDxi{Jdh9Uj~r=I;WLOFHR=}~S0I6vfxy=44wA-SGI_O@9T#6x#_W!k=~dXN zd!3Hahq>4wPMhfbTVf+uZe)ra=q*paI;e8(ThOOo$rZ$-fcoH|S4>E9E#fmfWl$U8 zkdE>fOgi^?X!dWVUQSQ<*zz>Z zW*t}%emEL~lrUhJJ`Nv`@-%{Bw`PVx4eJ_>c;f>S;yMl*SC1VT;c$&)a4Vg*NZ4Ch z)$AJMfYB=)m2zUW28|UgSS=EZBobbbHj&XVusd{7x`5_zS6GgLh&9;wz(kQJ|4*-~ z_Tr^Nj)im4NltF(98v=gE@MhR%L)a|1uG{pa?%cmWH=BPK#E9xRgf>dJD0=&q^;dRKYVQ3kR&Pue2xgi#seq@Xd}1U_8EaDbUraq# zQxLAq*}JP~SwpH2-07d}tokeEZG% zPr&PFw53>j!d4)Hqj525MCo>}J5OL1%EQ*tcvfd(D|D~y|4YKEr#u0=A=4&M=QwXs zu?&zL*?(|tux6`Y`?xCc;!DPz;?Nubr>L$_tyl>$$5>pG|5$VbQ@sXyDYo?#;nnOl8QSXxLeKMsH^Gwgyjm13=)iAWHgD-+&h@ z5l2EB-nM=SpnWwZSavU1@>RQv9)NeVW$m>%j`)ud06=_?4&9dKnJm! zBKPKV8TJ>^HGN{{lcdzfdWe%p5v3;)R?P^4>clJNFFo9$@1p};JC`U-wxC#X%M_c_ z4p1#I^}p;*1A$hRp~YSInYkjk!9S^^^g&4 z1>(TOF2GQ_>O^;^{D#o>oUfp7#dn%Ws8Kj05ph+UOoI|D;j_QeW7|R{L!2@%7CR8+ zb-)TCXD2ltuuf$As;@UZSRwWCb>hKosLw307or<$va*YAi=s;(N(xi}yC(*G&54!l zej-fL13x3fr)?P1#SndP##)dGW^_Qw8ludqLwzs=qkvt}nP$N_M_y$&|B os4HuMG~2x0$8_YfSKzU@*lTqt0^LG;1=_>HKC_{>xgtBjo5Gq}qW}N^ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260508/20260508132002-Config.rsc b/MikroMaster/20260508/20260508132002-Config.rsc new file mode 100644 index 0000000..27ffc58 --- /dev/null +++ b/MikroMaster/20260508/20260508132002-Config.rsc @@ -0,0 +1,4640 @@ +# 2026-05-08 13:20: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=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +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 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m 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=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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes 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 disabled=yes +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 \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +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 src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" 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 check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/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/20260508/20260508132002-Diff-Config.rsc b/MikroMaster/history/20260508/20260508132002-Diff-Config.rsc new file mode 100644 index 0000000..e109fad --- /dev/null +++ b/MikroMaster/history/20260508/20260508132002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4295d4294 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4297c4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.40 comment=pornolab.net list=FuckRKN +4304a4304 +> add address=185.110.92.40 comment=pornolab.net list=FuckRKN -- 2.52.0