From 790c452362f673ae6222edc18b4a635156bc03a7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 14:40:53 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 14:40:53. --- .../20260507/20260507144002-Binary.backup | Bin 0 -> 297781 bytes .../20260507/20260507144002-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507144002-Diff-Config.rsc | 49 + 3 files changed, 4693 insertions(+) create mode 100644 MikroMaster/20260507/20260507144002-Binary.backup create mode 100644 MikroMaster/20260507/20260507144002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507144002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507144002-Binary.backup b/MikroMaster/20260507/20260507144002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..35a2ac3535764efb76533aa3180c038c6ae2d6f3 GIT binary patch literal 297781 zcmV+aKLEh*sF8Cuiv$2t(&nuki2_(4xLTJE^SmPf000O80004Z`T(2&Lur`&&ri+A z$`7br?AQmh)aMtNsVnkZG9@ObpicVP)uTi8*g|f3mtWc8y22Wha;zRR1MCyh#@Y2E z*r@Q7<?wKt+A#ws4LtLe46Bfc`qoxAmE#NJCFP7sVNc2q~QXJIiN#bgvEG}Rr zURd2A&CmKcJ#-v?x!YB8emo--gBDn@mglTh_#;f)+|>_&?teF+iS*p!?ptRjg1mCH z`@}E?^6CZcw;U!M=0FB~J3h(4LMTD_-n`GL z3$zA`e>ok(m4@xmn91X76thcWbF{1n3^*F~|K zmv~V(-biCEncy&LM&8z!$~bpzKN5H*YFJw7KDKb>jJJBfh;9aRV9Of4OT9=4zcujT za26MP9amfCy_@@DrsP7GxVHF}8$9MtA0;elj++y>zNKn(u|-;Y6FD0+AM^2=ioixs zp(jhGPY80IPsNRlQKN`Z9cfT^L3$JA)gCH?67df7oG>lmENisUzXs4zg%BX1xO(X< zt)>GfA){dc+E(&^{qi(`*J0iHl$1$Sa$;VrvFdlwn(a^I0r3!2n^PRZK;S*xp@NPa z#ORwixx|}`eVJ7R~x+$p}yHfPl~`QbZ1ZL(e*6j*cb=k@zKqv0k;g?5+`J-*wsd zkoHfiq=NZd0IrrGv_w#oCfe|+P>Jf`Uo8YfIJM+Fc@$kTF-e6@=N6#>Lg;;pekDd5zzf!5# z;O6;3-F8Yc=geCnmM2Hbr`<)g8V{#Yk)RKFca0e_ILWL$cCg~>=gVPTo6NqG_mt^` z@eZhSJs40G+qgDmjL|%OtGXI6qfO#D;IuuXEBcm#_S+=>$Y%l{l*tAlvrW78#1s{P zW!viA_=rZa-rRSwQiiSFhhFG~J#-;5lOxtte;bSIk+EH(Dc2iG6km@=B6@O|IyNCC zF@&L@gT<+X{`w7Kt*H5`nHiS;54Mj^5t|(>97UIis43SM93b(_@c}b@WC9;fX~`W*=JL z4BboP2nge0F^n{r6aMSIVx{B6dNz+RbJ^P=$OB8TFN!U^{ag&tN}>e;m;?In+GGgT8#ZIQ5nO`Yf(y+4{go$D#F z#)7y8BUn!qn(QDC+~hzGv^r7y_a$ax4O4$bhmX@x~1gz+)q5 z8N6d^6B25Dd4vFZZCcv+CnfdiRs@InLzJhir-PU&9u^Or=ZSWhcB;}qh5I1nTk4jJ}3d;X>7G4Hq z4n#`9`wgB%7Qn6Rb-L{8zU`dE#wOSu!F(**$?Prc+BE-ty@n&@B^4BWc3Ja!{K!Y5 zy2gpkgX+LJ!(rjoG(sT@OKAGyc|a&@DCB zMB$Pd)N1CZrT3{MO_=e=-FM-!Vn7a;Dl1b)#6tYm!SDgr1qba}t#4b`7o5gYtvaH| z&zgT-AEKGU%r1KOroaFMx@)0jpMwok$Np?jOj{7WO5`B!s`~MhG8^BVq=KB%?&yO? zn`KFao4pgRUtC)_%KsC7>BBKe5HOI8gLRlsRJb;pOu77F(mae2By^%vq?)9gD~=T| zZ*6xN>=WT&4Qp%Qn%A#+9A?LRGRuVnKwbhogqt`me%*q;V_6!pM||wvLYmfhRw*$H zyiTFEmd8v&4ngr!B;lTv?%RjGUQuac$#c}XoroHYRj!b}S6KddRc<=$wf8`Vr-zZ= z9ckRX1Hmub&opnNonQ%$85-@*?!-zYDSV-m97k!QzKN3R2Bhu8Bk`@6b)n+MRl@E5 zOc<%T6%8sCjb4YPuWeok(n>s7+jg=mh?Cd>_Q7Fj9eibH>%kTZri-H=*kJW;(nbig zxf3w~V_sKuko$x&X0dV&*lXfjeN_U8_RbNT#~4MK`ttMX1%6$t09CjqnslV8(%%SrL-TMz_m)NUk1N zj;kO}HqMD)k2mfGkq4l8DruybrmJ?UA=Y$}&Zf4bdsrR3FnZJ8pP_MMi`9p>t0;V1 zlTGC2QmEP zpL>vyLh?hyA-wRQlg12Z_8WCPS&nrwvWXHl(88aDiu|J!#S9(Xc=TInka~$Dp5fy( zCmDQHc*0&CPFrdM)TvMCeTPed4_3Ivs@?Kn)lKzx(PjhQG;UO*ES#h8m{8f+o-=Ha z*hs<1E~8_iL1>MQJHdc`v&mVDrUPH0-{to}h_KMQ3~$`HDUK7?ZvO*FK;lZZA#{-G z&FV}jA*_gxLe5Ru2Bn2`Sa992Cg{bL&p?$Ff*k>zD9%eq3Z}#*)yGgtS-MI5xJp-; zh<Ip+C9Vz7Nm}vMnl!g z{UKlvr9eW$CGo8uNu9tl#4b{)9tVyScS#;IT=g853;Jr1LNv z5LF61t1mx52uEMLwX4kN#%}gm{H9Z-%QlI_7WNk2D8Abvdu*HsD(&KW2=;HQd zq1tO3tPYS*8C*Ud6XV~@yz3{!^cMMy=VL5u8 zDr@ClUIv)9mRVR9ZR61OXxqpa6Cs@pgD{d!3>U#*zDY>KF*xm**iu}r4D>-`<{;ic z+YxbJ3O-25w3~5HrJEH@Uib>g#3C68g7RHy(Xf&W*T~ETTEpdkGnv3Y;l+#$>@lN- zIXH03A#=%WB2P)LWmg8hIN%R;2`f${BJ+BO#l{I3s@M(28em38$Wg9dN77DRseH2y zv+NOG9=oS|1qoPmMDSz^IEqSqvO_waFsq}=T5%D>-UVL`~VDng;{%YfYn|Tcj8_k%l;N{K4yy zmN`s$-bzPK2V|0m zM>RwMQ|SYvF1@GfH*TRtoLirj9zy|JY9}IHZ7q)?+OIzT@wJtgyhs zbkJ3iCJmGQc7%$vklwXdapVSzlrRLy=rGAp6ul(NBEYWfa#%ZhpS;Z!K;|(d0#eev za`5|hECh3pKFK4_qS!}*z)b+{?AzT|eLA4beE9bDMn9b&Ssd^l~%FF@Rv+9&cR)yDP8#-nFC^Mh1#E zZ#XRCpo7{WDtOQyS^)@)GbuOMFTNMB#QoZK7Ykt&J7U_ZOD4^1!9%j_Akq7%?R_rs@R3 zDSOAc$oP;l@txYQgM%Zm_A0gR@u~nv8wOC=>0!^Q4Oi<;VgaS^RhlzfX)ruq7F+sdLpeQr_F5RU1*fs( z1YVs6>w%E{^y4XppmQwI)a`f63R_}s>}qb3@VH8eg2K3Qg^EZA`|s1tV5lGXnP$Z; z7tI&_2Iw$8g^Sy$4&_~T zogNLIzVno;9u>F20y5$A>Moq&zjaHlE>`Dp_++fAC55Xi=VP5Npt?}~YT?UtVlr0o z*H9_G%pD0pfuxnZF2{04KIuAL^58QUraj4O9A+)cBrZ>zvm4T6wuQHde|U=I zUDTuwa5ZAUTX!(t)#t`Wz6%iC2w|)oPlpD8(Ki6hfo-^MmU5MLGF<^5`G!@ zU^nPzBML}h_>3kz&*xvYC5E-^RiX{&b6Yrq>hKIe{pwJ|Hqp&^ z(uz5gFw;2)e~AOcK3CrNgnq^~^4_6#VtbP;=3WoK!7b@1FAg`kh`%ow#~tYLu+~50)lZSf@q_5H{`VGus?701TSdI`pXgpqC>h@Y;wI2&*~CmyOB;>#$hP7&>CzYn^p z5$0x9F`Lq1i9y4mq(il5o5ABZ7f_i49%y&mQ1_`3tBQ|xo*x|yWHmwN8qhxw-x1nZRQ$4vOznzJO{)?% z>>wR!+!7jI^lH^7Ir*4^;Mw}VA{2CA>rz;99^ z#)4faTC71hf*_G0fSD&#XZj-}a^}$x*`wW=wofZyh^PQqe0Fw&mg`f1zh}e561Mg) z4*)cw0087l0?sOm|7N;}!alKn7RAcsTfh0;RF|2v60Dlk9S#W<$2HHIe9Kvn;NYb| zM`+~$svV7u&wv=0&A6DrjXP!?*kE`+d^j?s#y$kAB=TD#u z>&IFyASOw|r{72wfCC*tLyNYZ7{ww1o*(o0pHrXlzKv<8#wMmIAN3dvW&%eaPfhqp zsti5em%A?6KU^A4tnpvRIrXP@`k>fyNE;!!TzXGF*(C(_jGGJ(Q6qYk`k#WOWl)GR z7*bWF$yM%te6sDdUVL7`@h(5`hM_ZEwGz?rD|?v=a#87w+Fs%QNWl)-bNb&uvWS9c zdzEYwLtu{_9mdd}4NW4j^KX5~+@m}X$udvWcAp#*4ggSqUMxW$Xg42smur_P*DLdu z9aqx6FI%Od14P@ke#IoN+$vD#T5I@qf@`|H0B1j4>ZHl6zHs9xpjs~Ivj&7chiIV; zF|{;JO23(h4@xs%aW!o*+udZ)?V}UjnNE!u4WM%K-^@HzH1{doQv1NmBDB;ORqp%e zH-MTMy_^2tSS_Kp#nBDyW{JMDtIU~KxK=d*tjN#_n?-^HX0Xoer^5pMxT9_8eX6nk zKZ>3*wl8EiWq88+34>kL<^X6zrXpvyr**uZFGn&XmKi9*#8hQZ0J|1!*=%Hi%Da$5 zB)uRuP$;<*dc!8Y*>2@OR-r;EvTkKzVMiQwT*GkE^h8Jb&BFg$)vFiH`Qe(_@a~aIK0l$CE1oblysr?vrjMsu8&%qs~HL(~!NH??) zb)f2c{26z>%daL$Cf%Pi zz3F^U#xw(z7mS>EuKzS)C4GEt_^MERGikYpAj< zx2x=RDYDpN&gkpy95Hre0`+g*ln zmS$-pr)j!^JsFwAlnu`P+XzOiMQzQ7{L4r}rAE*}DE#k77KQ@JMVK|25XC-gXJZ###ZAgr%(*`lINCDgE#qfDMVBv+xRg1J))YT;*dx_O__dBQ zCt4%W*f3Z@*~e_)zZPWhCB?LTqDKLXUhy|CiNh4$dZlT(Ubmgi@k5U^fex3`LPYLR zPSD9hK5ad$i^=L~SrwNI(N)tOQ?^xbbS8^4s}M?G0@qfJLJF#CHf&b!q#hRWjVFZN zDwmo|f9ar<4z5<4vdmtWchc#to8duYR|Zt$q57bBqmvd{nx3aCa!k-`0^(}Slgdo< zKa?GD%CLh@|KTGE9|deN2~1SsX3I>uRIm(kO2zhFGHhP!KQ$k4D=-7A^1YZ@PV4bm$@0-L?Pzrez8xT4 z2!_9D&Mm}?D^pnX+f{XA;3AjDJ0MBjCK-mZS74rq9a|$zBJxM(8D)}oiVmXMKnNcC z0{zzvfCV^`ID86|9txw$_6+Jl-L4O2jr_bcwUuO%lYPsILdK|bYF?@|bn*O5exETt z!yvJ&OF^&1tOi7{jd;XBi@u{h(YQDluMgVgsYar&!8(5`f@G7>Z1+qaNU!svu=tL^ zLqF=QrH1zhgB8u(iVDkS4KkRj3S=4iSHB6*zMC`2*>B;?1)zzi1@OmW54+1E1fau* zE{s5#!dvJA10)ym?{w8Ctnk9`o%MNK5cq)d%!FcY0Sl5x_9@|OVBC(!-OZbSr@C?0 zY$3P1Req&BSch-8D}Mp;h#9f@B`EJrd*DKi3NO2OCUbT1JA`#rHCu)}qt;jcJ0P z@MBGm2<7+r!m=0e_MUOAEfG`hA|2(c89WT6O_DiHoxqwgVoCoT;H%8K_ z{_+`9m(2W#zaTHgZ4DO*4j&Gd5J11f#m>>qxxbn2gqa3$X%yFM26B?%&rk)!>a^epbY|HhnXY=4Hi`l{vm;Fpy^fFo_q zSJvCr#lg_O^)*IT+$;yRB7#AhXl=lTMAy%W{J!|FI$wC6<`L+ z%YfNt@yU#%uVD2yQfuy&e+%Sb)sqqFAN|XhtfH^`>eKjZCAS*1W4u5c%@H@uixh(Wn}Zf^ z)z9gT|29&!e{JGWQf16bDLiZTR{;0ckXC^P#r%xbGwnGKz$A$qtUI9)m`WSBIzSYM zNNZ-*y6div2Wye{;^hE#AIQ3qE9k{L#7F~Y+_55>DL!=?dbCG)~O&``n6`X7r zV9nXNLFx1NL>qW#|MWR#7<1%rF@4?3REuVhnJF<|l|u$_uM0;Mvp*;lk@)=?KGM|{ z&UY`j)X4(KwNlnV;rher#VWbK2lSSUR7W;v|y)2BJlz;60# zE3qcQ&)D^8{rK&+2IczB2OkV!oYms6Nr3QyRVY;&)TU_E3()N%Qov-Tw2FU8CY!oi zh(Rmoqluhoh)`SU|^sateEw585D;Ucd%ZGK3teI>#(yn5~_FW+H3dZh9uz zp}PgbgjgYR=t>e2+o{|7o#MXGTQ^%m=Z(=2CXI`m-wMrq=#_7&ea|fpcid~3&cQd9 zC`?1S`xHsXNW5SoYNGMyoE!{pww9Yva_{E)wOxs-9|37ng`r=t({EQ^Sxi%6I_~g| zWt`6qd?KOwab?P5;2s<|D-0uPxFNwwG5G48&CJ0Uk&Pr$$%E&CYb)oGXa|eNaK$@~ zNr1nRo`(9}tx_^ERlR;`%07~Gd$*ntFgiJgzPfoP38)P3rmd!v1|~lprjMU-H?Mg1 z69r@63nq(Dp=^wZFWDEr#F_)htZ$5v-(fa5@3h$&(v^A(KmAb2T*jt&ja%jP*nfH3 z%JW8p*`0xummYF?v)BP;v#|CVqKj~vsu}MpSOcQ}5&?HLGb{3k8-LLFCr_jT<9NH^ zUwb(2QSz{UoO-zOousU)PPkS*zm&h2ZiE%)t{TCaQ+sC~B(qpE!#V3}rlh<8sJ7dv zBZq0`AcR@p6IMd7__sesY3YFTMgFA-&UCH~r+VE5D#xdZo5)!|)XDY^!MSn5(1L4y zel4gBMp9>j+aRRyx=hIE0K#;0Mk3obv_^;#e65bIL2B(E8_PBq#9uSCc`diT`zv&)2eZ=L_3JW@d z7sUb8c4x}}Hwr5Ww#h4*LSWA@qVd#}C-v&DVpD&PqV>5~cd9TtBYr>wEA2Pol={!AWiD(y^%4))5#)xHcAYZHICGx2M(<6cG zRhxTSLngoWGit=aN~^a|b|>SJ+^#F05KNvMp6}whbaoJnSNP7Hn9u=d33t^1}^X`GRl6YAR|LZHMg6 zK%owS>Ixad=vP5?&tvM{v+5O7iRnMDbRg3?=QU6ODiqU&D;UK;5QT}$isvZQ-6xnn zbdY1s=gteLWL9T0Vo!+72#V&Kcf9^VpL?4vx^+3TfmzEC?k#{=cf=%dC`d|CoLB2zV1LD~%71Yk4 zBd+QeCh*&ewXs0R|LG^IUcNR7KpYKe5)&oH(E>xuBYbZ{r7Kl{X(aib!ZbK;jQT_& zwUYS6dF%Ddq>!)aO?zh#=wiy{?{Kwy2ua%4@k*3s8~kb&QGCp+ar$u^?uq90eL!VD zr^7?S^U)=XziSi=~%UQlJBEwQ|3~pRl`6sO^4lGnZt|g;@#;Yz4QA$i$gec zqdTGfrE*K^wax1Lqq^$PMAlo*j%n?vP%l5QrA~h?<@>Vs8fs$mpI}IF-ax|u4ivNM z1GDbTu1yeWc6C83`EH-$vg2Nw8nuJNsRzcXQHFbjYHM^?!;5H*lqZ0cTE)ntLA6ED zU+1181JsuAbY+?P^%Iya>K>I{(ItBk`BF=Fg(Fy9Fh}ZlJzIP-b2Baa)_Y{ym?7r_ z*vuIrN|SxD=2wktc9#E^j-!K7iqbN-@?2BGL#1RX3X-ekFcW^rs2Fvz(7-#w0ObqQ zNnfa8X9S0V&dOa5=V02f9P{%%XLQf;K}7F)vu)dl<>X+3e=4{{WC(f>@4s^{`_@Xb zF~9dwHU4URtTVNB5>4q!bWskW?};M&EM-w=G*#9YA7}e{CJgSD@7A&un!C~+=tB<< zL@B2XP78zfRRL~}+u@C*a6pKwMV?{!n{|ES$CYdD?+IihDIGQRzK1g^hEcZOA~!3t zpJi)-f$W#fRlgDveL)w45kc8!leB?;C}YYR6!f-y!QF8q&hpYw&?P%^QZDWghM4O$ z0}@~;Yw{O>kwGNnwVHYrg5CXEg#p`DcimOc+j@Mj(@qQKM%b3-vhDs#nsc~#Iehtj#SP;j~fSkJpP|3N8loQSUWe+IjKjWawGLe zC%<^72ee*~Uk~W*YaM#s<~}3p2VmP^wTp;!>!|2?cPUn{YHdu@OUV3ZyiDq~TzX+i z2u9rjAIkj{y#NplrR*rrkI$j}#Vc`t0}MOMdq3=m(d`jDyvrQ5met`EX`aIf*C@{R&Rv; zLVMRs`V*-@qX07c@;Vl>pZH!IP+F6>BT7^cWJp%zHLQ0Z|6k-F)1HYS)>9Zg8uu`C zfWB9J1AtcAjqJ>us?u!MIfhz5PsCPRU+xN_>7$Q{*Ai32H3pANVHjZE9(uWJtv3ic-4H@?r)2cK{0jbKZ#ao{qThK@~*d&Z#RCkLW3xFh}Hfg%!Xg~Nj z8!#=2KC%1R>7;Ujb9?cHs1lS@kF7-YDkCt@x=_j9eKa|C+jMv}rl?Cu3cxzS7#n~s zTncVU6P%eBqU}y>xogX6OgR$j21j9xqhjVXR3-B&eu6KT&)rzkzSO1)vU4J{hvz)4 zG@aMUKe7DE=e<@NUcJK1EK3|@V`u%nnxc5GnefFMxErk81zO6B`0v>u3{x{2sTa$5 z%rxM9umxqxh@4BcV-YC|*dP5Lk2=***Jn4(c$bmFGc z`q>D$PF-~i0uP9ekn->2lTy7&aEzBfS@hW?Wwo7Q6K(H4;nhU zNyWZDWdJ4b#L0$2u6Pa)xdY!_c}BXbM4z8f$s_B|MQF@8WzlbG92FORn83Cd64H|z z-4%%Ty)NtF{|8*Ui|Frqc?l|D8A$|n8#K6iGUuFwWl{z_E21`TZ-X9Zm;X{{RtO=< zIz9TN;wVG!YTkN+4H2hA#M;G^Z&2}!`6Sf+xp{z1KH4sH@$X8jCFZ5pWFeqxSs8)N z$7S*!fzgjHYYWtEB5mPMGP9j8$HVU$X5aqgi1oi*G+seYNi+K6C2twS5U@wmmkGJ| zXHSym(GDO9W0*VO?bM!(%;I|y9hgc}l!Kx%=oJbH;xV)`(S#?m@`b*or{hNhCk z+MSa6$>vKE?+r(m^j4pLZp2tJyZ6-!nGa>(>$W6cW+Gb7L^s|QYn1GVGRMe$C?(d0h2X;f#G8xk3Y&=u-ipk<=mVG+HzVzGHk!1w&Krg6^wd7 zV%=;5YMMdhis`HtH^p-&PX0j70Ift*H-UcF-M2X21?Gp|%YI+Xhb znR&+g?P-DZS{zH4MmMA0fR|~uUXm&B3@xOLovx<}l9O^#S_JuL`4I*mdKF_4qb;Ct z*>{~n99ol~NEbR|B7@`*{Fr3zcTKXNIJy*_5b81zU6k488C}+O0<4cEWRCkAC*!AX z96tD4gKNo)n*)Vw`=gBWz%J0oDm4)&aOXM(KnL`0V{KJVz8N*F@_o&CzQtHF(`zD( zGpxsa5Q-fckDiEqK=sdcUiVO^)}IoEZuN$#HaqtBp>eS-;?&Lv_lwm$$j?2RKEWgQ zMh4O5PTGYc?~*9NGN2)3(!yzfxn{(Vc4!=mq>~bE(aHhp$n-CWhuCwJV*!zr}_{T32QFpbA7&t&s zQZc&p~#66CZ# zIyb82GxRb91nz;4GZcv;W&%};IPQ?b2h;395LLep`Ro}lqv{(kWI;Z!Hy9KTPWGmf zQ{htoKa@K03-xeR$UtbcL5$d8@Vhj*Is@@2y#Z-;DV!$~_DRcmBjaDn{Day+d^ZE- z^2Chp4!<=8c`qc1NcG>%Lg)6?9AZ7&Mh(&Ht%!#pa0~^sbB!kBw}?K2Ac_{Z97LqS z0P*G3V-3}o0&i3< z4TjcLl*pTA-!H}m4{3V#cB7fkuK#_nFk&l~uZ{gn+UF4X=cs7SvPmM-!9yK5eoUgA zSk^}44doq&#GEWs3ML4GG3#2lv88Q zmm3oqq#px7^YF4#v6QX_(LEH2`sin~Ku}zg6x~Cq{&tTH*oX*us@$Y^tK{(@5Ad zn(Or+S-Gc&(;O{}GQ}2;*lK0-vwi}aWkEg*2caM~9q*Rlp~RRgWIqKZ&j)f_vsGawt3ZxMCBYSv|4@b) zdQ6XiEA{Gn(Y~%|6jGIzgU!T))nUl>%Pm}Po0sg#{LrkaX)l~U*@Y$>>%ognuMZ&i zqb-b+d!7>OgC7yTy65eqenLDjmu$bh%E3FfCT!K>N2xJs$o@Nu3v^ve)$XK>~)a}>wrt4^jHNI*1g0|I;!Zvisx&KR{CQaM}-LAV!6-wHCYSzyp z4~efpXTVXx=P-=d76xu^G4p(r2tj2VSuAVDKvxCPP;;b?E@6@I$XAQZkrPwd?pYU; z)@pILv`I9N;<45={-w1z^{`xMp4q@htlk}PnFpDSsP5&nxhU;DoXz**;6{vO!%m?t;ZMw55*ytZ z6GscXSppxdZ>+2^o2+GFB@2F8R&Z56Bf;w3KYlwe$CdU<91@q=bVn7MARFU<^dx*7 z{`V95Nn7TbE87P1k{WD8S+l(}j7t|mXNslF;Z@X_1-d~j0~B$fLFh6cnSA_oa<6M_ zhZIH!iw2B!_%*^tL)iq}&!{4hX_1p4gIXw0Ib55sQ zSR8cXLp7&$=mPTxdD^lAX)gH_!0W0mSxxb6{eS5@`N-qvzUqs_O4+_$xX=9ip{mXt zA0_Tqu8DaT_cO`6T~gI=2+t)XU@nC-KcgKMOsn87D%B5hCx(z4 zX$xs|04j&(V7aYXkEbyCd`aimxHwjH0*Kqd#|}S(Mfp}vn_fVx0Cfk(72wGoAYV2s z*KOgB6F5GH@VeWujzsUIsFyAA5+M!8vP{wBmY$1C z84L*v(4aGXi@0H`OE`=L8ea)jCT}d)t7}|Tx7@$5caYpuu)&zJocL_=W2&k zlt}IS~gH0!=@dp~`o(W3eI^3A{4?VrR);l6b${t+ETNv1^Gc$o z?+(Soo-N%h-v?`8C}j;+tm#@cNLpb<+@&1+%yJ)69G%P2+yK$C`LfF(5*oKFM$a7^ ziECzKya=Y=0M~%skWrCgCh9NKapfI(QI$8TY0?;C(1(q!2Y&BFX+Bg1)tSEu@_?VvuqC2?qOgc;QeR%`2$*o6~YLKp9 zi`dJchmTwMpEnUVsMS$O3p_Kr!743xfFLRLg2PQY)d|mF4j(3LQLD81;EQ-@O)%0G zR#=nVV)!=WQ;k?Su1jpAQ(=54gqL@r;;0hsBTRX~sza>GS0#mD!Ev9^35tSORon#-n%r11=JN1OTEsArydON8M>YthVkY*Rjbx9qzb{azW*H68^Y(Hxs0#y zMLY!nB^{pbK9{R$yd^reim!}d+8ZTEJ^+32bz|y|Il5yg=-axfk#++4gwb{K+uN&^ z*fxa6sihw@>yKRq6}PI>6o!SP(u{Tp$PV5J|h?{+;-R9Pqa4 z4vA|%DnDR70xh5Pjd7l}Fjk_phIBKPcSJYQB19jPA-)=7_xY^*YV@Vq+?R(LQ@D<0 zIY19YA_NYl0aIj7IrAEZeR4m5zgIzOgyWI~T$s_b-d;1SJr5Wa9j|xZ8$lo=4pPjhS1h&+R!~8JGQ7D#9VTQns0U-eevF5ZmJb}kjFuUV~ z5dWt07JL(Q_(7T=wNl1a=rhx~I^X-UhktW4s6DqW<`cmP z(M%iWp17|MD0kd`W?)pH31cf(H^7DWT`UurTL)VAUy`l<&juanv(H?k!nhDfph^L2bH^3d9d^cmqMzbY4PG zaW?pUCy0)9%)32#JOHs`yiQ6W?yCY!&oxOK0-H1dH8<;oQ2u!YdX)(9l) ziUEqK`R-kTJAj`s*Tjo94X_7&*duh07!o-7j+YE%gfDEDd#!Caum~8Ien^NE{g*?k z5zKQKjN*f*n=7xU;+0!FV8hYCQ%<|%q+qNSFGicmo&0c8sZKG8_JRid*r$>7^TY<} zBN~lZE`=0&9nEzADQM|g3@ys`vl~8kExA3AOjNEh{70FyHkjFZZ1lrjk$T2NQLBQ} zYljP!En5jzzCvO%c0U@^W@Jm|{_|48Th{fInt#=jP91wtKreM^?@rfFD5*=!N1=-D zOgr+L5x!2Wr?e}kndGy_w_@ofBpVJc-4Sbt9~JS1EVJLBXK3D zc;^U)WeRq=XF8dGye#5XT`O`>vZJu^hsQNO>Lp(G*<4^sUbN-909szP@1Rhxxa_0MDsC_IuZ=#`XBEI15?8w6yG>Gs znlJ?df#V43oLs*vU1OSKC|{(2&4N0T=^j_~(i4kDA0x;lEytnh@A``5^d5cu#I_Ud`-K`YDQ4J2FUabnpO}vo$ZGo1%{WN1eRZ zfoi=U_MnvoTA~#f6e@I<1F4zvMt7xR*M2h$HFeUrIKda!w0NSVoM-)2V)3!%{E11P zvM;d0W|nCDQ`pdt6wD2x>5|})-B)a>Cm41LgIU~K;90{=(m&MS!F@Nw#VRNSIukCR zWJ;GKDjMB1`J>mi+6l_sRosHUlJ8(?v4)y#(xHq2grKynH<#v_kMj4tP-=p($FUp1 zw!35`ak(DwGijKsr-u@faTG zl;;>Cx%H9Qk|?|z^F^A5o>)0RIa*P^Yo7Kll}K>Ri$xdn&pIO#-84`|)Uqz@mK<#rtDp+dC zNfQTr_ZOqe9Ly8(X_(0TEG;(O*)QG;>sD^`DkfD!s@dT*7447PgO)4LP}~oo6j<(2A`O z5B&dEFp!oKY5+8@p%ImzT3toA0U%%|(Dt>=N_#B)@NceYsnhUAO*|GO|rEW0d z#RN0Ts}W8j0c5`|CMp3isCJH$SeTD@&AY$b?s84%F-H1F51$gESBe&q|2WH}Jifsc zNyuyuNAUB<1^h07L$~oqP#2*FkivvI%(IZafnxV&8<*Ofx|7Y93Gs+#y8(TJhQR7t z)b1ci&~2BC!r%Ts>I+q)x#dbnKxIBi;X)VzP-2v{Jn{M~I9=QxhPV5QBCRW{6>1_Wrc9dPIfS-8`d z>z&Udu*s58oa46y)eMS81sdM&LwJI2!*s&o)v_m#-Lp#hp7pFBBes10cdVQ=ZA&|M zsa1H(X%q^p-T@trtvNNXjOb^w*Y7cH+YwIW3ou=*Xa3DOU!LVpJc+BL9Euivm1)DNb zbUu3>*oC4*oCptWhQ35)ubQg|KBr~&A#v%cUw0`u(eyGHhA#ZA-Sk$8@Md^tlL{2Q z=h4|#o+I_5q9B>ia>B@T8VEL&`oBz4zE?gci8A zx+_r+aiA(^<13y9$kIIZD%%sciB z`CZ*y4{guyQrKb#sz&DxOH1RydCg6;l}NX5q+-|wFnTZ9a5$ky2~DkiaOh__YcOPi z2?#@9|L$=n9q7h*SNpd-A$RN#6Gi-epIdtlO$!es{jbq8*c6mD<<+V1G!-YFp^766 zD_vm}Z5uVN2le51e}vK(4J-gtxFMr{x=7(!d?%ExT)bPGHL@IC1!(+Lh_(6?>W{?^W^m~0)J%q4 zRoeXKD}tcBfg%_RLI8y!vIBet#*moDdzO9CaEoa1UfHX7HY##v1szhnS9m9p`jWE0 z$3+HJboja?HKg*}+%9hFG3BdmWgRT=^XlEDbu`#^t+Ry-alCiw#Ganbifdn)C7&_o zZ9Y2$7;-b^Q<^L%n-Re(MM9+Y-aCBwINWo!;JN|ZdDA{N*(q|SW z564EUKBlAW$PEY%!kf&bqybcyzn=`Mk8+8WCpb+6E$qWDcVI6Oow2<}9O5DX{ixbX z-~Io^Q<;~7@>ttz94UWEdsV?@n6bZZactSgegAfy-z` zKr97Qpnkn9+ond6b{E(CYAA@{mvT4?-Zo7&Ml=bIl z? zv^!IJ1R0x;+6TSglD9j-AsS9eo80>uh}+1C0=zj>!p%i#j5YzrM)qks+tor;qL z|3&IhrZ<*;*yVw#Kz&$t8mo~TaUvrU8uteWlVYc(X9y~K96o*0-+6U^eArNZcrQBeKZI~}FyAZ$mX{UWbVJkyI_7!xY+PfD=ACNkA zX)|F@DS1fY6f1uvtW``!)eJFb^xo}JoWbetn4-3@F(5<@0%y@=gyXn>Md`6#QOT@@ zj<;EC8c#NGsI;Z-WA2|G@ABs8^^9kiI-RvZJ(i&+OZB3=7%u376BJi9gL?d566uQO z&4g$tcCgBE^;LKPY`bf|>LuQlgZqP^tc^&p-Q2uQ(Uv1xqtk8j!g950;zsKe!=bqt z%4hqv`{nMzAhU{dC=@@bf_uQ2-!}p2t^YTZO_{ypAkL(MXs=Bob24pSpauY>^y9;__)5Ze|iZq0MXLHx#3S)uQk{t?fdkWA(ZxNF%rR%Da>1= zS?$~G8OpnX$rTb`b%fEedvr8})uMP;xHhl5gA?lBNttn_?1t-gG~)&&l&@>zz$V^&`UZ`O=`CnB4( z+4v_SmP_aqR}H%Bud|41044EAxhYNbUHzr@S9S~QAWqPQmqjeetPMR7u5|r-o{Sk? zh@u9U@0_ae!_1A&RuAXhN9+eJPwUB%Yq`gyI*t%pk#POfa`zyaU-})rqh~KK@Bz`( zUP>;lrjP5?S}s9et8hB6C(yCbQooAsj!n=daVo@p;+>%%XI~wSMJ($d7JjH)b&&$> zR;6nV({#5y&hV-ijZzBfc=f%OvO!MGfnUV z^zgoz-!V}|IntLXL0g_d2zh5}xpGUNJYK|;KWXNu385rYs+{0fe1?sWgTh47IhvX- z=IL$!U=B9m@FowMWBNn`*-^Jw3F7&=`dwP=WSRIDVj=`9wNN^Nve`q|3=mZ4EISf= zPX*mUw#Fe0j9-;rH$?TVya6Q2kMeN0Ygb}dJMv(5HkeJ-u+(2ChT}w`Ao}ypJn3`U zIkFbJ^C=AelM$GYV)x1!!8QdH!lTXf9$lBfYQ%`XA*X_pi6Q4cO6Tl^=RE%5ZugWC zwuFMH6b03HA&L1UZIa))r7fZe=+v{gem84+O{Ou-duDjg;WkZW@tRXS(*F^qWdl?Q zHroyGOG>dgudm*Np)qu26hX^Ni_WjZbvWssaB=bKG>Iw9MHO7FuoDBqXB>Q5Ws=D>Bzx^2x2#X>H| zC`oKRr`xBkQw-Qm`?Vw-W{+?1>b86nUv$JTcA!}NrG_rgIW5>AJT=w)$M6j$Lxlql zT9@~&lPW#YRJqEogSrSqDZFw-LsiMun-J3oU55cf-cn#^;%-X;gZgC(p8|;%$fm`@ z{Dz5!%L=#2=20aAT>v)*eu{B_d>72fsp(h|D`8b;ck|*)5Hv9HA7-%YT+VrE{9Kc8I=g6O2#huv%C01%@dimKs}w7E7a1j&nxPm>aM-v+lBUG9ChwyUx$4It1{V>_pgezvN3my+Pe z(U*+8`q8n!q0c&UHB5;1q`xQDRSGDE;Smh8LK{hU>gFQ%^a50kZP*FZZ>UV!TAiiz z%ADY*^$Fk?lrS*2I9#C;n?x~D9F*agsT#R9)E;hMgd{8pE262)kni-~(C`)k=hIw; zx@xqpeO-vFxx{0j0*_6}sR>_wu(dz@bh3~g|LR_XNIIfg_Gyf}QswNKiuz`+FMbo( z(1lpS{nEpf7rz{)T-|)#m_88huRris8Mh6M6?ez$rWo3!$_jM7O#s4;86bqQqa^9! zxuOzb|IfKfM#COXYQ;Ba!<0E6TY4x2X3IZ^zH_tpFE61eYTWBv6Dh->xA!5X+sMXaOq> ztOv^}kI^CC0PBwai3yX5KR21lsi3&s3FquS944N4D<(|Sc9%m6y?5fr%4a=OZUFha zK|@>9hAg)psmWXSY=~C}S*F#^HFhq)jCc(u_9gh%C$Zx>q>*}PNy>CdIB6vQ>eSnC zNc5F>eZkfBOqgPkgTDD8X1=h;Gx6vCzDSvk;EI&ozmhmNpz7l?xcCBU}1GAYl&*w8tgMa$gB;=U3%qE+Oa zbgcZxEOo_}KcX+V)HA2GVJNj$%vM z{~hO3dTWtiGtkyakX%*-%_gVY?G|5%SwrFjHA|*%>FFumXl7Sz4T_(e*d`~BS&+_J z^G_5QdCMM>4iyZk6lHAKiPfWQ{>KDhHA-rgDKkF=-ssyAcSO-f@wvj3JkpOlF*#OR ztQihASGku_u2aM7VyK0-Up_Wy0IfNcx_Kde#3Q^3)qLihw6bJs5U=k3 zzWM09Dg|PIp}XByHPoAH+_$gD6qx`MUR{s&gRMhk-FR6Wb2oUifhOphgp4OM*ik2q zz<(Z!VY_yiRn#`Vn|cJ;0==Z-td+y$&! zjXtMa=h5#wXu)C$pBH`qaa-m6?rP+J@#P|fG4M>~kp_9}sl%fapR?Dhj#2l9%^yu= zcA}dsY}~9Hu1nbr=XiO;PNs>jOkd{%*xrsj*?bO=48}!zLeB2%`yWGN1YvFTB5^3& z7MG~{UIp^4$$`uNRv)A2b|I|d=A3BJ8m1IQF)kZ|lTcW-G!Rjr7Y0?{qa1r~vE}1V z9KO0L)Od#h_Tvu*{X!Hm((;g(0RQ4?Yz9SjqY8m+Opk$Nh`J&|g;A5?OIiI?kJ9X- zObyU)O=86(b~!K6(o(_E?uqm!sBq{{ySl+9S9MG^9s7TN+2Hk~O#9vYt0-)Wk9cuq zk`h#m7-zVUi-9)QWGTGey*;>dl2X5DFea~7nah~#A}0vf1Q%%~@!Ko~k#x_nb10!Nk_T3K9&Bj3>H8v2|)3rV&v)`--^ zi6qF^BYq6t%fx$Gyz}7F*&5&ZxE(M2ft@O(*?8fG1;Ovwe%Xzd6J7Kv1kh9cv7{96 zm&kt%gkBr1D>{7#wEPgZ0{0C@3X&^m zY<6&wb{~rONUcwz#yd;vIIhhS1@|CKp4p;pm6U!ZUyRdSwB1~YC#OJl2!%c9#j`gv zvbIQm8@hNjeF)Scn(QsHPUkKqTmb_FJT>tob~d>BlVIJPZE5Z?-ozJ=8}aPHZI-nE z+Vjk*HnzU24Sm0wu3m z6U!l&rGSiD#$xo{sZt`V~jtK>SRtuZtd2^0uI{!QeJ-{^HPjEv!i> z-xwqyUpo6$<8#qvrEj@SjR}HY*6Dz6gr$an2EH7^9%Z1Y{b2@KANosIkgz{=-3rWQ zxB?|L75>nicst8WOFjO>Pix;>8AR#U&DAfxQX?-xaS|0<*3X9r8!7mRa-K2GRmtTn zG%7A?90|Z@A7P;hQs`(<>S_$-aHF33n1W?>Zo1@j>f@qMOC$~Qh!g#w5}u%*f=~>` z$eKRMH5RId58`m{k)Iflz+ExH7z|$Ub1-+E0VV`p%67n`S;&?t2cnT-pfk4VFndu zEMW2-!IS%~N$N2;1@^UYmOk&8_lQOhROY8DX)t)4COZVQi=SnxwpVaz6oK^kQcU`ciLkF-s?H$K`i%@s`dl2L@Md1-%Qm0=mR`QMKS;F}ij-DN8!COn_tL(ll3*+Lswi#m*}f{%@} zJ*noPOi9t;azyVVQ*Uar{fyd*yfWY?#U)>_04g~rK|8pl;D&v|xRxV)DZYHyY>wQ- zN66sMJEK>93yEx(x7f(_sLFxw?A|}65T6g%H8-bm-4Nh)N^5l2rahXc&mc!QTQna< zvRVi-pjpj*mU*I#x6;I9loyqB(E!~SLap@^mOznJ9NB!E+V6vx zo`aUD@-Bd6rI#@DdNMrh-4RV&f`;w^9#7!>5N6!)@$Po))vBT0^7kTOzYJ9Y4m!Mb}nJWKsPZc&kJrFX)>!TS?1;vIhceHx}%27m(Z2!i}9TCR0LK?JDl~m8*@bVIJ(&su*td#ez)DFX`|0)&E z@>k0YP{MiVCmaSF6UtvkDKdch1*8C@_rYca5+Kqe@~ zibEZWw=`K&trEvpbOrX{zGw1uSU`hg?T53Z95z%xFP-dS^Yj-{7&6NlAm^FKOp{SVUM zd8We*^@cP}*KIMSzk)6IgDMyc(G3YM{|Er2v#&q`#JOk7$R3>vM~62r>t&k=fkXGM zPAKS=N|uxtT;}Ar8`TN#n=7%&ny%1^tdKF|Jk*?^uS3gv1##**%WI(FQYrcxRs;?< z?Yw47^|hbc_IxJkW}5dJQb9U@R_|JuBtCFxvVr9LIk#jXX04%OLWQF-r5u3f+SL_K zMo~#crY_m6gbs(JkOMjN(3Y8l+JDuPo+fVj!?23*bB4$b90h)pl!raeB*#U`9%_Ln zONB0=+<~@19T3U|?FrcRi_^;mf+&$&j8O!4g2|e2Q`9RGGZ9aF-&cl;eCF2#)sW^4 zLHIuHm1RmXIBG138PVEOkL%Z&Gv3EO?fp+M;V!L|m1dTX6nxpE9u+@xcu{h3(Px1G zs+g}v3H7~b7mu?@PwYG6pm7}lQMzb`;fMg(=h74>+khJf65m=Li>Blv37R0V_Tvj= z^`5g?z);Xo#j`ypq>fY(LzJf|DDXn5{DGInCgW?@6i)0K^o9f@FhKf!W{g&lfKKB? zaL@wyB5XS{0o?8*T(gtTj*hHTZ&ZHIN8jxI6xDJ@`c%@VI!?p=*VQy|?ha5#X8cu- zApAp$be0sUc4zMM@%`{}NLHz0OcS!@sCB-h4ytrzx7}w!)9l~3nK#mcaAkbbL|2;` zmMk^76@8-}F1dceNWU$#=2^mCf^x^c5qXmZb zp2qV{$YQD)8x#-T_rCw?NSV^12K>kI_{XSyjb{xM>pwdkae+{L=)UyCdG?%EE&t+=!^^73 zQ3o41Vx9&C@nk%vihIaunIt0x2CieALwP}o z%yuruZ^xI7lTee+&+wEtm$9i*^9viLe>I9fl29Slc{PaX)8@wO7O@cK9gF=_7Sonl z$DYxPkq(Qz0Z&ryKk1TI9_AmEX4e2nph{9BNBukh$WhZa#ADaGo>3DbLT2xd&|r13 zH5mUjHez;eR4D$KGKSgUjz=>z)ig+2R3!56W~^!bpqSJ*u2{-Pk=>k)!XwVS{RL#a z5l^8lV;+7sLi$gkEpd=gs?xx$js`{DzTwTrPKycjEs(6j^jA{-(+5W>3!jfNtFtg` z`s+7BXupzq-lpUWFuUEB+3>}l78xy%qeJ+2qrZ+uli|n4|B@{>w>l=|3jznC{!6-w zGzgiGuguxaxo+wdpGe>yiz%+w#fW=Aj{_tehvGb(VM@CHkqa0Sv;A+DUPpMeEgmwj z@8+0F{tyW5|1X=kE34p#c}IVJG3O$Cuz^bl8(NUt>$))Fbjs#O ziuI~_dyeGivHJs9n-#1B?rk@^m}(QX=TJ=|IaowXGhlF}xoTz5Z1e*J{n`ImUjLhR z=(k7czv8#(+|Xp|NmuF7)s^O|Iti@1M{+zSo-X$}?kaYGvZ9hz6v856T6e07R$f)_ z7sOV&--Yul0Ww3)>o2i0jEIApPm?*Tk1q134m^10c+|!-d;9k>tVjf{`fmuxQrToF1lUUBXqcxgrks<$NqdqcbVvcu~94ixm^!8&<_dld9|qP?8D8)^ap!B|^E~Su!l7Y0#NU-|0?Ksz2-K1D9Z( zMu9>j+SU|ylfwD4Ao`F~gxhVn$n5vbs>$Qni;bTCKY@tSMAXd+!(&TUJ=jirB^Dz|NRJrQQ;mxDkGhk@{L4FEeNogE z!W3GCcRrF`+hI(>7*-t*ik?)X#bqbsR1Wdy<|QWMgn%Qky1kGJ7hh}eWO!bjW#j0~ zwq0l306%{EXQ9Qs+t{dj$Yj#im{9;;!V)~BvL6C)rtbPa*+7sh>phJBnSGgta+=}K z*7vF1f5KZUC)&aG#dOufGVL1?7D>@0HU$X|7xfHhggb)x+h|JT73~f}b&6dAt-w~U zgP)PmgYB`~Nkk@cW;|lmB6}^;wFoo}z56Tor#TS3evJvZAczCr=Z$T8;C=y=Sgn|) z<{L2#ix;xAStV~Pc~*>1>3*t?$nII+@+dx|K_f~sjv+v^0IVZn5njNbMlhZ8_L{N_ z_^ey2j}?=#iw` zeTD5`qAOP^GNn90=!u$W_I~fM>SA3r*}GnMOjpqM-73q@9`72reAEVdBsK#XoJoSH z;mNay`M1J_=;);?zfsl(m8R0%bS((?3)lv&4k>c#%;ez!mpJBX!OU)fZ=WEzR4LbX zk?RssVFWX$(hd~(YAf9}xajPF0>=SfxhX&!nVYq9?A@Va+h34kuDsEt$#$3Ey*d<| z&T}1JH;NngA|>~oKYPTc%?f0p|FG6m8+J_F9TZO>_l2i|K*_A9!ATb?#XV|>ibewq z+;Zuit+%eXAnT+?W)-j=SF(kH-kq0LlKi3TC$u= z(Q&^k!CZ&#oLB*hW6vLBtH$~+tN=d)&`1ojM+2Wo*8|VE+-Gr!LGPy7dvZvWWqnSf zdz2H8NY!U1LVYw{E8QokeN&(E2-o;{3F;rS{tokJ*k@gz?kIcIVg2B^ZS&ibH=K?Q zA``8iwNedAH;RN~<&J-fDgX6zC-{y5J(El``Gk%9YKa#@un>U&I=Yrca$?O8$5bxR zGcJ!CMGLoXuHar6Or2R;c=vJM-#pAelXk0|&AGT#p^|t4S`Lyk=Hyh2gLtdm@}nvQ zo(h;ym{lYs+?jA>fIqY+m~;@&ST^eQb{?r8uYy9$&X65gxgw%f;J6qRx3=hN65k-C zY%x9Ap0s*zm;V|pRl1xWxt>KyRMdtoxLWs)rD!GNf|a6J->VXSS|lWJp!9UhZk1Z2 z<;!yQzC<@D9P)D)k#w9x+J=j^a!S&OKMsJUG2qS^a!1l*qz%mY$-|6p^?LYO?&^n4}G)nlsp<#~N9{s*Rjx9T}{ z6XG6|JcV-Cr_WgG83JN6&I#%N$gfZ^sA3ln zdnAAKfhybPCtXzqinYV}zWK0$Z=eHkNeN!Y(P3Y%5M_x!ljcpP>DST#62l-w#Tp@*|3yxnL&7>WsugQcv zH?l~T4<=hImqEyoH7J>4f%IPei$k)=8n|(PtWOYDb@5ALFR%p>`kk4i`tMBxfJEui zENJ$nQV9tPJF;Zn>plwH?k%Qxr|R} zAbnuq6(&x}8uwQ<4x|0RFQ6|q71O&tpo*ciy^AITRA0hDd2pcCB~UT4JpPJnINj%{{c5Ji0ycl9A( zU<6##Yf=|dv9e@_q>&5X{Sp3Uoo?Edr#^3(l1;>(h!O({c^ zx3=qmM-xBR#1Em#ZE;L+4gBa6dN*z2hb4h&#$MaJ>krDOQwYouHXpcLp? zA?C$kvG^}4kZ52;ciCc5tD{t!bbqy+)e-(sh%0AvZBVl=uI{(^Kw-3MAbu8?xgMxQ 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%0D|B%+^8h^xY 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

RwSh4VVwZMj(8GW*&sWX+oRy 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

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