From ea19d2b67636e3b66f1e041424ed6ba69ca806c7 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 20:20:55 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 20:20:55. --- .../20260507/20260507202001-Binary.backup | Bin 0 -> 297773 bytes .../20260507/20260507202001-Config.rsc | 4644 +++++++++++++++++ .../20260507/20260507202001-Diff-Config.rsc | 18 + 3 files changed, 4662 insertions(+) create mode 100644 MikroMaster/20260507/20260507202001-Binary.backup create mode 100644 MikroMaster/20260507/20260507202001-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507202001-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507202001-Binary.backup b/MikroMaster/20260507/20260507202001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..8575b6f71566e84d2ef195e07d82de2c22b45a49 GIT binary patch literal 297773 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�B# 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%0DpSScJF#5-MycUg);WwPSd6gE3H= zm#0u3WNo0Q;v=AQOiwz#4FU$kV+v-;cPFpKq)x2Ed(F(cm@(ab1yUfSBB{)QY#l~I ziwRWxcEQ|y?rg?>J}4FcUy$g$9`)D%_FKB>6irTd+B%J@iT?-Ug~|49&rSqsGM%jAN6t?mPm$5(Wjr{lAtKr> z?6Zx~aX=~3vArmKS6G8e4)$6pPu^j@!rY++>&e+>D?-4leiJD~oFn)XJpf%=P=j_D zQzF(?CJoGkpD!%B;7BEwL$IZ{D-)L~iZ%uVbPc@L$+xn^{3@4$Udd17x$K@+_yfpn zSR}}GF3?PzMW2GOBZ`j8J~K=bJkg1U5dC;F2fKaRN_ZUeod3W-czn z(nDZPp9=HfEzqESmqA!*jcC8g%$4(Q5xectt6M>ye2wOygUW(0b%Y`oI@K_7?5~R2 zg5^TqQLGv@MOlUebqHQl{5_1>w~%r9N3`JkyRd^=6sn)Gv{PjrOZnDqJ-a7K!{4Biwiz4~#NzOx3u667e1PUo;D4)%Om(0Eho-}pSdqJhBV z-My~F)%l3N{fAtww%fG4$da>&oK8iP3Ds*E4a{0bVPl`{`NdQ8yUV?fw@m3;K#ed# z2gEC;*BWXz``?=9tGM#b+i!`P{x=^c6y|%o70q69R%V64ji&SY?6xPbl+dp&R;q|4 zL5lYAeoGs?LJG-K44A16wQ@TiX=R^QtUR_m_Eef;K8&`gBOtrnM*tk>`yRq`;Ez&K zARA0cw5%V3SvNF~?rUxt)iH_Mvw;_c`V<%}(YWFpwO-=@NYdWMjcW7PR7(Fa9PdMH zL@DTvHL=vbK_J&)7)|7AVp)FZBB?2q`@7IP#Do0XuHwm}^xpjJ%$pInqzh2IRauIm zT@Pz6WCAaC+BvFJu}kMG{az*Vz_r=b(ezk?j#9L+&A%3%0tb{Jl+z*D8;fh{!r5;F8Ds5UAs9 zt9vssgul^g7l)5}?s@CG!|ID15SUR@Im6MLu1&%aauS_d zaUx(%gVa&v`^_1ed|*}5WjI$5X_|Qe?0ld0Qj{b4wpTzt5L5c`?Wx^Xa!w1fq>?rr z%cUxo%@~gQ4=A)Zq4D|c#7H>92fI05I*cGpj4!0^gJ(b&zY^Lj8j#aiYmWQzHN#dF z%!X$Wqd&c6P4m_I2m*Bp@WCOGkPE@y+1yTVOLo#F*iSl>%un}IyqWoUP9l+%JmR%O zm6NELSApIBdbPGI4L{NvjG%*Smx#yER*=DwD|vK$=Xl(?nJY*sp7tuSllg;LF3~t! z#i#nBm&|epZt+vrIbSEb_vm(t;T0zcQGM)0rpD(RXT}&C=b+pFlJ59Kx;-OD)GLUp zk%8{;yXp$Y<13-y3~cr5_+kL=UoM}|3ES<}g%)j%=d?IcbG};MeBDf}>Xsb^jJtI1 zG$vhPKtmhues%;cT>!P*LjzP;?Zx^46e;VF8Fx#=dY1#BmN>DEP!+5abE5{sv{SgE zz->Z_d56Lufsus7gwBDH9ML~EmNAUZlj!T}<|E@PoY5JF) zfC(2b8*p)hiuM0zvY~de-*lBVA>EsvnokRQ15JoOlTyNc4%}#e3L-EyBPC47`W-bz zXPA5xJ5I{C=!~#bO|A~Z#!5-JCj;Xaa4VNsIar6JYKr2q;r(k&@_hr7u9?*P9$Hod zW&d5BeuG4hd@v@+j~9pX1Q*|@_+myDZbQN|w8foHLVxd}^uB0X@qUJF8vmW8N5PH} zbXOK7uU{3epwC1)O#=^DpT*S=P%bi&HueCrYER1!2#l3WzeN{K1=PYl()r6E+ph9s zrZL+JzK94IX+au8Gl8}izYchg5+%`l zVZaEKGj29HeXD^3TqTv)d}1CfNVID5Xr-_&iRQ9zemyc_cJ#57L_te`PP@v$F^+N>0tBs0i^dQ!VpIA>|ZSr;Fxzr;EObXISS0uj# zsTLyxmg$p!pGBUgyO!Xj!)^Utp1>xKjPIDVwb%`RsOYZIFAq6VNh*t9vt%C-%3ddB z6+Zf+zUH^C5eOhQ)~#bVn*J{&9VT@?@7{dEgoFFC_G_Z~iuKHef%Z1a0T~{^)%9Zm ze6;8aKxVx?AIoTy*21OxtOlRlh$AZJb;Z6N*Q;xmUXWnzE3M<3WRn^AhR}jk_^IRG z3#iYhMbHRlD*v6I|Lo7${ha1pz2}2Ez{{JJZ9jI)l1l{O1WJ{|o~34DEo|-HNC;Uk z(=##GbF~bWk48JXa8c@)xncQ}6J&wOR*lOAf`d2TIu!Ho?oy}~53z~PWGeAML;=0+ zfi|m-=$W;z%cafK_7liZ%WBX_1fL_Yo`lIa2$rZ|0X%Kb{QgJJ&&GkHdtv8=7#vm^ z>tk1SyvkaX)y|9X#>B#X689!Bs$Tsa`&+BcINJdmA=Oh!qL2&FYDEy)^BdJJi z$Q(_%T8#z_5|szaI(xR1>|#J-w*z0Efl#6uNjDyV(_pZ<$>jH&2tU;C;Gu~10Oy-7 z>S5F9B_Aa%05KjBx5dwEPmyjlI;1NJo||m`dyiAQ>>@f#%fUs1;&dRwZoQ96?to4b z@L4;DS|9Hx3{y26A-wV_e(rpj+9qS88yuyQ9AV+CX!wKI$WxOyf($Z=zna!N%JDud z?@Pkvl*BHNBYcGlKbQLE){i^CP3*Q9XwqYq+|Kl%q+{}79~8m(khI3lG3!F}!75@j zr?8&lIQ>k_@{SVqr;f=wn8zdLc#$w+Gz}SKT{Vj)TFSlbK%u_~FWQd|l#3C#G|+ zglR2=s_iB`t%u+D2wir+N^|8#u{FfPguMC8DBhunD~}>HSauQ~3y6Mr%k*aVwrs>f zHH%e0N}VMGpb*1={x(gb0-$f>me+H^&>kHRI3zYw-;ph(>^u&lW*Nrgala5danQ*9m+BDi(8cC-LGWq{H9sWss2a_zd_5km z7K9rz#`)zHu2D*LMa)<#CF|z28GeUEG=LbqfvYAIPfOgBO9$q+bO8PINTcCncOR4a zacbbt=T@;LJfEzzpoywxl2J!IO7M|OLZm4k);{R9jWon4ui%RJc~I;j`+}d9+BcV; zD9nQh5-d{ns<6Sj#xlEatSckdI6$HiANB)>^o1t=&U{3cAo`Krk)>$r_UX6R8 z4w=rISQXS0;~hij-2XatDr=p9*EGBxfD6x-n{5a5TR4kxH%NU9rom6IsKu&U2$RX!kB1;&%kGkd&&^~Ud!*jA$r~ePY zcM%!x#O=QJnkcO|hfkT6RYKke{M|N1V1$sB*!$|_Mw);0qY2A3W`tV2pAgOqAO&$J zb2Cy|+mG}D0;_sk`AuhHhjq$K(i3Lh`y0+V1X+z*nlGJ|tG%+mCPL^;?40#?o=5Q* zEylRUtgG3%OH)k9^|bXN|mYw(7fpl`_6pd4_N zxSrp>%O3TWc@e*k&Ju7@+;KlM*kEQ%wWuitrZ8odjqddBq&Mq|xE)PX%WrC~W3g6| zZPo+N06=;kUNuwggiq=lhgIF8VXGp3P7}apt{qQG(_8l+I2PnwFn9u=pM#rn&bR8{ zD6tBPibwypan~Yo=VqgvV}w1=Zt@HuF`4ZrSHb4c?ooyT+h~9sj}8e<1i*QNl=l*G z8x0CaxxM-Srw=oMibN0qmZV(Qn-3qBqkc+*w=8-f1bjY&c=X`BE@colt4kAZI(+SVAXI@UR2_Em2BVw(eBfKdy0Gu%p0ME(UH+V-6bEK z!_1U^n8bXC@+;=&FjEh_VP2b7b)4xZ#HZ@K=tERp$A^_5@eojN6} z6QnMadYO(Ixp5)qK4L>6bf_8os1j}2`Z-nwniOVAJ^uzuNvUZV1G&H`Z#eq6P>>O8KeeJq;*`IzvgRY zmv`&C*>57ewMop0SUCXLq1q6__22bZ+#SS;cVAoUH-WrJ^af`Pa|B%>n4~G!#c*=6 z0b6d6pA9QpeZ-smaKTsxcV{<hl=#~c4dL94)}|J`^iQ7W$3u{&) zaIa0`qWx#|qJriuenPw&g$G}wef=}hVArOC3Rr^C@Ja`_K`2K+;pi?^oB~99N8VLE zQD!=fs{pM!%W?+l*xC)VA@+{63^$lx32Zhxq>H{Qx6_f$e6}|}NaG@NTk}ye9=IjX z-ID@Kz(Y>v-z)F9SI)05Nqb8dRqfM_|pDl93|0$w<+M0>Roe60tBXQA9@ z#Yo>mYJ`fuL4k<82>L)Zb%nCw8~bFXH3Sw@@-ct25!cM=&YbUlZ+joFIJV~~3^2v6 zlD1e65_ghNlM#NTQ@EAu-406O$Vn5s5`t_obTe5`E`K^vg&)r^zyFIp;adE*)9WHY zU@`!PffE}lBwIfbrI$h%IU&uR6W?oGr+fgzj}0`?N+N1vnv{CRgHlSW(Sw`Pd-2<6 zHS$&`d(7g;Rsn4NIl_Y&@aM&)M`^}t2-Z^qim;O%Z1-4z^?wm}388QKZ|(yd+dhD? zh4A^=oVDU%Tfe*^WWdEH{W*!PU00yNOFs(zY=C3T$eoGh_WUmE)s8B{ zqZ`j_)%6H+>_Nb+v5D>||#w z54Pwm9umks=R)T;&g91)PUX<#+m`2L23Vhuh~O>!o+#iK+ZMM`5Wg}`_D+!4#;?8put^f)btkg-#nABfa1;}uf7!p}}LrP;#Jnrf8Q6bbv zl<)WRM+sFWFjNFgohlS>EExq8RLej(S!E?gwsPdNIkh79ITC8UlGrvJPt)f?7^_jE z0NGCuPtq;bBHVHC#~0d3Lcs9NbD8cpiH6h&iZkC+t0X~kV(X!QIQGYR+{it)<0`>U zyY@=Hw>}_5j70D4`SxFbkifZ9GMm7M| z9s69D#cH0iYXP`M5EgCRyb~30Ky^kSEP7{9UouPcaz2>jgK*w=iH)Jo>F48e zf3y&Vu5&PYCx5V=sYC?A>`ahx++%*B{Pz_mK}fRgm(w*IH$0}b(+t3hlv+ga7byNG zIBF8uq(iOe=~5V*_%mZ0Sg*=OrS4OH^7;eomlBZZ@K<2WoH-dQAH$p&9bG>3$5P9N zoJawHnADIq1xs{su@Y|&)Z=w8pJ0Tf%%?>Hk<<5}lL z6d!jQ;ofy{{sWmSd6Y1TUUMFfieOp_SMG+|yAC`$Pnn!7BDnFG`0geQE_kb!Q-e7q zK_r5V8HCC?UM$}VjSR^b6b)_lk?Ju0FLXwKk%1)9_8hT*0yaACr?{gNW==r_d}=uN z2#ZPZUTOHJMr5b86bV_vC=ixkwoo}&HuKNEAvj25g(Yda23zq@#uG5F>&c08d$5#>8 z4tufnjm2Zx$DA8GseHQCD`QpPhxB@EN-&VIj7xNM6uey7EE{MPdoa#1NSnW(#Mg$(HdddsHN z`cSR+w2ftT>C=ztVd+P$=%Nqeq8M{20)IIR0^hd#vUjZU7`sf-zi`POBGS@<&X?}D z>0zt%S7s&#R!avXj~;LRA2c01FHcyKIf;B}kf%(+uo>{2y~>pK4vh~Vd;rJa|3(KG z$1O~7lD1??DIX+$lv$taeZb$_XaaFZ*blD>r96dUCThf47tPrn73@rA!oQO06d@-ieH3&|C%kN!yFJ zx!%`wQ`b*om6`#~0VOKV-k-l)*0Ddr6IzT%X7o;zJ*iBWg9GbWBFju!!ax1FzyE|Y z&uDcrrkhBf7raoex)&O<@uh1UkY+o`i88@EasDlq(u}<_t!0DY!Sn|ne%EH5j0J_u z<3OQAjGYq(?F->Kg#04WKye*ZEU0NnWqH4MZ?t2eq90uv-<%x7@9|F97D8}Bg1;uE z*+g*686QMMx;4C63KTvmW8v@Q$V{ZFUH_lkU#&(Rh@S( zvC1Ih5YFnIgZRVPNh|mt>mLN+=3a~Oxqo6AB<$f26u1jP6kG-W0n(VppO3`g>|2|P zfRqk(5c(k1fA$RT&inz{eIvi^4LetfviMv?6SLYJPn0q1LR~I%Uw4#%N;4RPp^(v*^f~zB)STL z%n(;@^vOKmx+i__HBJwt=)3is4!jN&k+{P*WvSvPl&i}>hGob(N&)E(F(;BC$Lvj}VY`e8 z#BWk8f5P+sic?nl(UeKMcb}7bcIp)pwXeB(OyTPC($6=TYWI{QlTqEX6hVValQfYz z4bdVQQpcVki=c ze~N(2(feV5r_Xa@TQ98cN-rr*A;`Ib2X8CIRN!w^p7O7WUbhm@;)V35VA7q9Ho3JQ z4Pi*YHV6i%r^dv+bbrleeq4^Y zebq~h%=JK}jqXD?$C)jRc} zRmHb^Yr!4}A&*CS9;#&&Nf81cV`tIl+tGsGN0!Znb|To7zFO!d4k`tmPQDotT3T5c zH~?h7<7M!@EJ_tyrqZmI!k=Z|%WM1FFI08=2p}DB=wi^!b>+rsu!i@71^wK5%TV>?NeQhG-rVgh)J zRte?ZM7cmOwNIjX4T>chyp65KJhxiW6@i zn_#yygLN7fsU{7PQok&-(R7~-5MOH-p(34)Ph8Rww#U~1l3P|Eg%xfGlJYGuy=7_- zkzqgLo>o)Q6$Y4c3IjI|pvX42N9GGwp$1U4IjI~kZtPUKOLS@UnVB ztqtRjXFj-u!0X%@H{ftMSb%(>r_sPy(fqMqmBsUV+X(BO-``q~Icm}@1$70`3oS_& zWt6%zVGiqy1g<+8d{Mb!Wcg{-LD9^w+HYys#w%P27)2cvPTpAD<(}a?6^%62f0=Ln zkds(Ss4l{n$D3|jy0|g0Hb32uV#e7_TIk@W7o_z9_Q-%Ey^deJRrNfVc(9;FJ4*0v zJE1m?A)1~0kXWU(ygad0Ju=9>yI3sk2qPXZf);PoOp);yB4=*cCz1(IY~V@n8gEMx z>&VuJj;t-W1Ws;Ke4IJKpObDl z$tbFp%1o`y{ER?7HA|!37p%Lg-WtE1IK;2L^CO?L$$M-^zxP$2Ya;tMp_i6L68itD z>-^5jG>M>EAf@bh^03Ou{7@S*F2>nWJma`V{8`v9A6Sr6`5zHLP5GI9b_<+2xu^%L zWAKRpe;I=TA_n(Drp|NX1tOjksR88!i}U0rNMqtD2L=p}v^ule9iWoF+=TgSdS(G7>w!Su0FjoNavt<3j5FIuwdZTMh>}0T)Pxq;%pY0h; zB(j=4neH>tWaiFPamOyO{f#Z_C9GTPn4d)b$*i!YW$*$T#ip_!k_`y4MlRXpKYwLg zxS|u@H-`Ga7lOkfWMvolP1S(r(~G_9sDJ4c3%xpfpY7EaF0C^*&QNBHx&~FKXnB}Z zjIwirK6;ZcV<*y-L5iuIhJI2w??!iy_WY`+ua0Bm@O~gcou{BgdVW93kiba?wIQt=F3cW+36!ir8ye`!L4Ii{ z06Qe^D0%DP$QhCU823m}W7lScwdSJ7>H~#fI+Yd~fGP4UMv8(Z?0radxMRKaBD;n+ zm67C{6DAsu3`+Gn9;vgcXXBNb=akelU|z{|7&blHZB{PKz$jl8z~kce@FGsJ7Y=4d3oynx+U)!7lTqH9=})Vku>8KiMqC=7_1uA^U`bH3jq!B9(Q zhPm>%+gv&kfwpQDZoXaQ6o5paRAWHJx~co!6OarUW1GqSAR&MEM_(-30$zNdT|0A^ zaEY(NIv;DFkEE0jcx$kzkGn5LT;SxWWLKOCi$JXHN&?c&uee-%$p$)rMl~R=a&$-{ z;<~u#*(W0t4=!aN0#;%PWU3WzQH=V}4$y+X>D(#-KYxP{f$HNrT3!KWx$QBWP{*Sh zGJ~5MW?)^nfO1fQIdW4~!x}8QfTyHkIO33{LSnjK{gM3FVC95rvK^Xo+1)l;T|r%x6_eL25he z?9)4eS~vA0CkI4BMUlM^^lfz)aL=^v?NK$wGvz~udHU!Y3F*EgXO(w5M!-zW53Hl;&B5y!L1gL@I2ZZ_J-QkLKDimGz=KX(XFw_hX)Pj-hP`Q$aR^LQRzjDF1`; z6>{w0m!S>XhF<5z>$XSN#4MBY>5+tS6yTX`fYOTlD?mf92Kv3@7dY4QG(h+<_%!Pm zH3q(%7CR>)&AGGrmO$A&9h*F_TbFUIP}Yeg%o(I24AgU!Y@j$Q}atl5z z+cZlwG5oq!%XMTvn)f<<=5Yti&DwoB(Tgjx)KyT%s_i$|oJ$HxupD?NFXS+c4Vx1) z&j;bV^njgRUj2K*xWcWI7SG6^q1^{g9S~88H-)B2=S_Qz{Hf(VY7Px>}mb`CK4 z(Mzg^+6)J-0Ld+Vhc9tSIju#p?A``V|4`&!z5|7JbC=Ukcj!!R57?aG+_0U=Ae$xs za_$p3v1(F*1kmN?oxm9#3T-maHD+0%*WJm@JM|rW}s_` z9+il;0QlH5?||;;sX3<(+Y8*AffHdRQYm=k{2gXSI5MenzzIVJk1rt6VWNU%DU*fe zg)i<&@i6Vg5f0gJE%`e%hHs-28+4hSg+sCzX?XujWiQFZafNzN#|d8)no^w?s!%6$EBbG} zP$&sw&1BF!=nKs|Aoc<=t@R-fM+Oi!PZJphmkBKOx(>zcRf;bhSg4v*K#}2c_H-n9 zyfo_^K60tE zvhk};`6|-nnMsBTZN3eu{UDAYJKAM|cAhi)Y%aEXu2j;EY0Ks8^nT<9ItJ+WlbeM^ zZdccO=(Cz_=>|5l?yzrMk^`vc^(C>qycC|vEL+fx`Vk*#Gzv`bainQtYguvZTR8|s z<%;f|9Qe3S@w^=DqQ=}~cKK#vub8se9Ko?>2B4OAQQg6Y z_y*1xhqx&R2r1&ZOQpG}aUhek4e&f^lWc3m|15Br$h1?;J|u-}DM5O10)xIt+!LvD z5TFt7KomP4^Qnhm;mrNq-1;^0qS~LVdVAcdba*tw`LuM}1p!SB$auuho7bESTip`) z7z^g<-tKzaEa)^zXIyBW;6N`npxPW9Act)o8#I>Nir(Kc*^I3OYm^)GlP9xq_Szj@ z(T187sTa79G#DGO?F{q+vwi48f>8tN=?&6<`TU1-Fpwu2rDMN{+kW(Qc()W(*wWaG z$Ad`MfkgEtjviJBL|gcO7LS&%D zb$xF;gAaJ;Js*p+&(vg$H+%~A5PTEm4qU(4KK&J9EH+)1oNZ%xrrC}@*(h&{_!I1# z$tA`A%~`Glwz-0DJe+96VrO87X{i){7fL6#z*+zez0#mr3{51Yk^KcAUu;^{0YsvH#z~65so}zFa|1cz2%Mq9IJ7(S1HA-U48b95 zHy2KIY(#{8G5q?jow)f_R3Td_7fH6d8*}i!$UXF+iBAzS+i|rdJ z&wX<=Y*xefevo8jq18@FQiwWi7}nUY+&YMzxLG=~qmrNhiXt7cM$aohr_)PXPZHJspjxF zL;-Ql$4-nX!x$fbDxHZIIT3SuC3R$H&dc*w{r#t%H)`#o!7jX%p(GVcO&@?sk;1aL zYl=ddtUt%P{VR2P7n~g2TW$ci`6j;e=lS&Ztj^Q82=>QHDU>PHVoH{76i2!2aab5+ zPlv}(sKhzv8eS$v|I%4$!COyEzVGUgXoy08#f^h1xvy`)_+VV;AyRgMOTAuJ z%@hI;Q>yBN)?D5Pl z^R`jOTOsQg>#4$L@Xam2F9?~2b(HP)@$C%3X>ur&!d-5fB{d_taGX0ywqFP0g}4gq z$aW#7CpC-%&1(pz-r}-*R1t_-ovmtBS)#CDpj)~{DL?H{ow!4zupu$3M;5|+uvIoR z;p(WQQQZZx*{UL>0bS=OER6x9HZYX1UqDB1Bm0$t;LR|F$9JJlQ&Of#9AWr|i_PM< z0Eax4Oi^8CMosLrHkxy3qvhhEtqIzahD+*jF|+xT%wPC?NPr2{m;;~4pil7`OFVOj z&RxccS7S`EXH@VE2-VV5IhoP}arhWCpwq#vVd4#|dW8|((hOSY$LRAN<&}v+H^cx9 zOyI|5J>#!v{=Qx zOfGkM+SM^FU@P%XraPGRuz29X1P%!|S}38QicXN2J~cfYhy${VTe1Rl`mSQ}@aG|q z9YpV-zudQv7zzblZ;zgfjoAMkx?`8F*&P}dMjyv5aOl93F|qz8$!C3NZBPf?!Z$#p zYZ{w$>z`#BTqhV1q}VU`^qoKTfDB{!?pxJ7FNNqflVJ`e8>e>D@17m#%W8hUcjBq;n9uscZFg4d%aIdHe8si5611HC_zrgoX(+H z5LqLgz!&EtgVKCh&5w~KI1>%X6tb9@`;LC3zc82olX{k|M*0khy}HiswYv8y7emcd zhHi;QUr3V6px$2y6c3E{)=Y*R>2Iq*!+A685=W8?E1^Vr^;%(11nne%QH4CmVgjPg znGZ(nQmq?_93#2NPFTBW@ z*;)>L7DD-wj(=J5Wt3qs#9*im?Q=v@NDRhBVVcCzitrKn*VtH60{33jo0#D&+Z8l`WOo z)HEfmK8YGNNKZ?=2#~!xU-|ELP#{LFG6O6FfuRsobY7dppWd^n`#r@m4lFD3jcxz& zrC={m3w>)Hz0OW#(L+Vj+Ax8rkv$`*lwNPO#vJ;xaq40w<9ry|iTOceI>@+}<~X0w z4-NQz*q~0`AkLI~4@UlwXcf4tTL63I_gnx{`cE+vc$W|Z$wJ6>lXk=?U4^P2bYg8% z$-#NK>4f-(%CFcm4h=@2ecxQAT7zUs1u$yDGS;!$3`Jhf!kZLo#epm1OB!`33iw!l zNK_rK^B1l@2bH`Q1@p;G*r8v!F} zv1ubOMe-S3?p~*ZS3T$WwL8S96POL`CSJy2DbFO%Dv?@ONa2K?tfhesBpgXBdwlhG zYfTO~AvhY7`q=wyK)3!20PK1xYqLm@}HKxF)F^ITPkLc zWbWeIA64!}!{U%=064uEzx6w}owYmhv~pivsjFNP=5+|zgzq5=%={?ovio9sRTNcq zLl_g=8)i1SOKe{()Ad#%3)>@{Z%V^}4jBOltVhmFsLWkWJ>f6 zZ>2ES2v~`W@6##LN_!K)pC*29aYKOZCy>6Y?)9D}{5ziD`#Y4?b+y3X%#1fc=y6*e z%4mZ8ZOMVO5glra%oV@YR%Da1x7^SFN0h)1sxR-y#YvMfp9-D1{eeHuchI;L&QtCyJXdp{` zKW{1~op4@)h}gRA^>EqdM3D%h1ruO9eM%iZ>1T`ErHAJ-s$i%V$*;+m-UJ>Dmy^Ir z7@1qBvV2~dj%WK9n9bDnm@`sz?OF?w;m?82L?isanM8cAiRcj|ix}X{F9&JI28^cx zdXgtRF?!8~mT?4UpAu|MSK1O%VWVu{2FAkLLe>mUYWoEnsu8RABa%rK55cXqcH|Pb z{-Or>6D+;`q|E$|VOYn&rvwx?_yU(8cFGvyX6*(V+m`XGB-tM8{$9d#@3{1qCtj2v zuUY^RIaUy)HRq7DefW7)jk;}1gnwugSB+DY3RKGy z{+EXSxe$*f&KQ%p)Uu(M@a$?~Rb0KVk-;tx25%`G5)(JcY-`lF5Oc1tBzsGZ+h>K* zA1n32pW1r5z%U1pJlNP4l_`l6ywEwrn;zjUm-SZPe6fsE8_be?D&(=2S7?wOMv>56 zP8!#BNCmrkCo8NQxa$z@%*gj$4gQP6EH}cNxg~oZ*K_KvfK))^R9?$j&T{oYuu+76 zH(t$xN*b+kKb}dyG%H*A@a-@SFp58LK&Z)_Qrhzha{zl}|@4{|z{3vM}Eqr8}-th(vtjY*13wSR=_Xl0)~2 zMx`g;4{j!9z4h-ZDDsAuTbNkPd;G{Skno)_*Ei;~Q5 z-t_F2|DWT;>5cAruzW7ooP~Cx%Fg`u+cEgE{kV{(qwAc#(a?>neXEhaB{fXm!azf&)G(=l5 zmG9T(Hmgh^*|!Y-tL`8>y3=$J<;pkQndM@<8HM0_^$}feP_Y19Fn$n+cVdvPm1l)s z1{Z`3xfg`PD~c&mZpHS_!B2~5973*Ne^3PN7S)UFXn4h(Q&6I;{5iCwWZw!waty^7 z@YPr7o%8S!_Wx_7)7p$X9K;jrR-b@a0uG);vhN}E(UTCbmLB)`KseVkaV~)2!Yzw} zu+K2{*@saUe3D~e%R?G9`O)Q|wG}g{l@G#4i^}NuPfG|dd=a?~ zLJ3TxKPQwv9zr6IBun1M!yY;ClbEJ4PjUJQz;w2?xOKSLD+PzmrX+gsv>WfJ#HGJ2 z6KO76^h>&;qlPAb#r8K%bLwrUO#%ZrVYmvV9-FcaCW_X5bM!w3v|d@dr!5;5#aCX? zUS68P&7D5y(3U4_VuU=R-hpF!Z=}!SZL_OXQXZMEZQM z@7syrx{|CjD#00fEAQS#xVt51m^`zY#T81~j7w2>#a;{pC@P zK9YicKV~8*;nHa2hHSl7Dz7CIWiD&rhGG62hKZ_^Id(+yKNa8(Vqy2fd>{Qd$G0I- z{{K|2$oueHv_V4iNJcct-}B0$R~jyQx>h56JV^Y}gEE?R5*G@F^E%n08P&f@u532O` zY9R3$DX`kB+paMsE-tdjwZtTTT!)OqdwD0^``As?o5hs^1|%TV>Q-A#h8=Rj1>dkX zfOw1V&enh!qg+AAI6bFBm){s+kS~tMhf)?UZdAnCQl6I9RwFq<>Gk01XSG^3)or4! zHUXiGrHJKvpNIb^G&XLxX&}!ob|yn&r@hll8qrABx{dOv>pEUhY!4OKu6=_s5pQ3J z`5Uhk=&<)w`^N07NU-#F|4`eyj?4L4D#BEQ_M;R_>(V!CPl~9!vOaiBNvJE}-#xYu z)8lpphMU zN^H+~SfldF=_&H>;Y*%;rO+u(U`hAQ3x~>3Nr)jKU%_Pr(F4%Rpi1Mexo!u6pfwz>07*lB$g^A$wZV; z1G`srcoT~PmYas8@T`L$f8kz-fE>@G@?=x&KdRQ%wuvc<>Mxp`#Wo)?Wf>2OKWAD_ zf^pQYN>2x$D;0g0J)3d?W+3@O8Tc>SsI4+(=G{s^AgaTbVY!zGHu^*eJ~%{^RtD(&xixn!Y@d0K%HwSGs1Y^$ckCB<#iNSgNyh+?rV zyhki}>P9k}tfk$m_P&^cbr1gTJ4QfF?-tf$Qh-C+@49f(6ta`KIU^`6??c%(UmhlE4PCE&re zjs-Gk>=^qFlzKK%>WLw#K#K&Ol+pu#*)04UC1!DB#)PGf=&dv~SOHj+m;$U@2tm(y z;BcurrO(4Pg1(Kn<<@kYwV*?qj8AkfMoXsmZLdVK0*Z!gGpD|}HlNzVR=C3DYE)Gw zii&}oO+ai5*ZC>uojGP2`vajU)l1=zMQ%|i zSo84Pb1_CZr&Q_ZQqyGgskp;Kk`HYa^9Tf0 z9|MUfnacdE1SelI@{sWThflfri02>`IUG)^95c!{&ymh}>#nqVo$|oGtei(9k#;^V z5NEp{RcvSYdwQ@?m~p&e;W**Y5IhM7qWthc#LiMm&FbGe=9@{)9XBWMQNWog_ z{TIJO4Vfe;G}XlHD|OGnBS4Tj@w!gepFooE!F1Eu66ZZ zOv1bWFgw;sG+i{?xK;0;$T_5ahjqtrP)m`i`Ai^5tn7r8siD(j|Mc5rt4e-Fkel>rz($R#e6>ZFDI+0ut zv%8p&3QA*wxvP!``@_hcThi_Op*DzZ-@89Ny+z&I2UK(=8|aLObY>wC%{wuN;Vvg_s^=%?$Y2Ts zi2My$t6^UKri{joMj6`<6>>_WFi*?>F%|^wo^-*NcVmLf| zm(Ru4A8v6v6Y#j?wVg1(Ty5>-4a%N@s6e1mh$UFW`>|2=x#Pu(EbSI*VJ8ky-N;AZ~ zyv-h#{Ql-$-(qj}LgL&%zMk`#3(qnYZEkPZMr>*pcFceg!c^T_DpIzy7)ot5m#9v4 zEW`@4#B@mNyu}b@{zK*Y$sxyej^czUze_aX}$*p`!7v~M^s_>|ga3ow6{B_b0$aJ8oDL;dSHCW35j zS98my7SKqY6Op>K16K;GB?A+Itz|}jsKl0G<%*V7Ak~Q)%3WA(FGhHFr@57`cceB= zqV`}7dU7bf7CP3S-y9r1-5dN${pLT8jL)pfa3g9}G(7%~lGtEeJVnQNj~-Zg|7G_G z%|3cIQXd0NUVR2&qtG2+*ITCsmQ04_TVFId8eog#Os$O5Km*nY^Ox5Ka$tVO$ZH(m z{|GR(&wAY*J`Sn2(>U@)UBVNp1b@I5FyQob=)Hyk>G4NEP24o1MT+n$AXzoC`79-^ ze7R8$JKJG#k8!fpnnm>W2sxRQh|-DL;RR|Tb>3vh<+m4Pin*Xds!Ffs?~EAe3`abR z-L~%Di9sc^e`Rq&(yzYCu7)P{ndzmEU@}d{5h?x-1N132PD}{Sw?atPe5zC3`Xyco zo)gqS=IH;9gC5R6Fv@Kw#b4~&p#%g$ct$S3*r-AQrdqpXy0UlY`)PH3q4H=9-)#AP ze5!;#n#5rik(xzWtQIlne1G(#1)dgjF|s*Jx<-loUN|1Gr4mQaZw|FmR~eV)j+fwt z(8odRO3R}l$F9?~lmYe#B2eJ{D>YHz3f|eK@I<-by$6$9vjoMkRsUjI`oriLLZI+= zF%`U>nSqU|=xaI{wq`EJcg>d4@{^a#$%B-Wjn_%18-A^ef~0LY{}IO` z6baDANEE4Fwq<#v#>b7~nJD>-(*UgDw4HFLmJ1<9gq6%|1kA-ZuyNH4k^cyxTI{^N z3h>FGZy3avgkO7{aL6Hl%+C=dLQAh=%p?vOFrDYFwNA4XX5dyTU*>8E={&ZcH;h@} zd5wJ_?b8)c*fJ~=FZ$yWj{z?V-T5saczF?l-AqHtg#Rsjgx=)K<;F{LHiwtbvxF1^ z=upZ!^}Od}>hif#S|f{4^y$WX?%DDQs5mLiZ?*OiWHw&cf?*>GQ9VwqNH^4B0X=v3 znxOTYa`!twwzJa0w0 z_g%bAA=uUQJa#!O%MC@;-GO=5l9;kBJ&_8r+6&HLEXN}e%^J=3PWr^<9JztGdCd*{ zuRebCCd8dHx1sbIBWV%VB65L@i7AGy#a0jOAZ%6&?tbOH1U{qjQ38OchyrA9_`U1n z{-Mr`p?zi`;Cr(k>&`ICKrKX0`>PsRmVH=~$dOumlOEMl1lzmm)|0OeR8g9otM= z)3CR6Bh!6Po2`fy_ek_!mt3@6Eiq&S&k+neZuEH805KoF;%uBP$r=hyz#VZwnM3|P zU`+ubdzl=v90YlS!#4arG8KZ8O)+Jyj&?O^PUUA5O*_Fh}+SE zC05wlwD4!~cTK==0v;SzJUrk!Gi4G2qXO)%7ZoS~3H6fU_@lGs;;W6x_ZiOpH*&uU!o z%kq!EnkwKTxQx=Jn`uE-q2d_#^ldA_6KoM_7kfzAH?Pb%yL*z*MSlJH@HGCT{FvVU zg&SMJz8TdJaFHCpw;?xc@kbLPHx40R!KQ z&m{uphZa`fnZ4dT=ct7>-beY?qdaIxi(fBn9A57jzE zC3NH-779AqWdxJsA##uecb&ukv=&$@OtxQYOlmAwJDH_g5s~qWVtqOhiNBdg|M^xq z_xMG@Mu?SEjp0A(f3`x7dd~$9_LoqN0_T6;;?o;t|BA-QKE4U3$wJBdxEbw5;&Tv7{5O#K-I|~2zSl6iPMi^3W1R<;p z$)o#Brh=#?ebhTeL5_kwHnR5#34rQHSC^^WnEaSZv;;1*LlYsnp!#!+3LbutCECry zO$6mxZXYtx?9{jH5~h0u!}mL6^gb!eT0~|&2=n${_*}LlkFxIU#mgy*_^OO|z9u3C z9#u!tcl&}z1di7J(6Vc_*1u>@(I3Sz*nsB@%R+LK`h=>rlNATSXb!Y?x`W=Ghg@Li zVN;N6ToG0!&t8t=dkmC#zE~bI<0YS-hw(AjovTxu4RA|g))7H_BYPJD+_)d@mV7Bf z@K{|t_}I;SE}y%cs&KjS+mewUC_uEB$n(eykBKiKlF^<|jHuSckBR;l?L^P75%zm@ zvw$gwroDZ}_ZwCXRPM*9u*Ag^D-;%N#ETyT_IgBTpjSnui>($MdG}>L#68?+^hA(u zPeViP@3;P!nQ(GK{odX#z=yQV3|#ltNwAq$brbW*sct!4Q82n-T(H>>*&dXOi1NJY9`Nai%A*sTV|h1T|f!D-L3ng+knj=1sY9~+|hJ=~}wCLHAo zjNEopp>58^Al31U{Ax6glX74)wq^0lH(rX!FJa<{I#ZGf1WOG^IcFvj3poGm31266 zKBm@NOn#n#mSby7fGV;GstiB-iZjJYaLR?^urEs6fS88rGj8wR`jPeH3iVd#xXkzAGzG0suZ>Jv zmHTNpzeR`pnFAzWaTWLw=Kf$FDV1bUsntvcKq${a1-M~g0RKM#z-z8>&ys6e#H~sd zKGKFMG~;-im-abyfF$oAo`1N&FQ_$O9|+rl|Km%tU4UU@T_pRXP$vAXb&dB~6Gk4c zfP+=NN;y!Eq@8Pr@hm!UMjlqE=Yx!QyvPjs@SWswLn(rw{#mZC)eLEF8P57Ate`%> z`|w|lGDp@%o_ihW)|(ZhT@R($pRYmEXHd3^OVQ_2*{2{(5v2Z%AKiiz^zkb!GtZ!% zzuY)HAnn>w|6s#XZ11++Lpir`nP`<3lA`xnW`blusRDPHoJZleRHNe0yA` z4ALBnD2<%1LuvOdUgoD*H)zP&iA_{QOK_Do40_Wx=_+pdot|GAF3i9wE%85g=_(~Ic*#1N>R|xwI z@A1$;Tq|g5RF|bxGw2QeXjwMigpon}FkfGTsuf&}EK^6*9Oe?b&vk(H0JbI z%*~T@NJ6jbPjxYEW2qaKoB|;~rU^07QFoMyRA+yCo3yy|*SP=9}_|(pdGRnBR!WAv1o%pqW^FPe6)zo_RnyXPb1TIz5MN zeIZ#BxJzTH~AA0i}4>SkkRu0a-G`>IF zXhG&af_*@)X_(>=(jlor(jZf+7-{;`e(Yj1KSNDO*d5^Bh2t}MFnN%nR5;1s?|{`p zDx20ZbAEg^-{5z9f5^{xWTx56YGn8{F_VK*lN;ElB@wDZJFu_0jKR}q(d{9g?2G#6 zZWGG?qNFzTrq?Nf?-Q}PFmxV2RJ6vxWS6f#zT-DBde^@F>rL9-VA?`X;y!3E83UKj z3yW?KS*n^Ih!1N3^1p8L4F5byGvZEjrvD1Gun)60t6W+Zun#;f-^#w*o8JT1KFm*1 zX_6(#l6X~aGW^WQR1Gg3s#5=5z}3f5r_C^Psy{P&uE9#R8Js78&oaNP&wRhAq8z1N zlL+#ygTkxC{~1~*UvSTDN9Zr~@>Zt~GM8^Brf@Oy@~>EsH(jHY3HH_$(y|vY<1JzD zNTFMn57{JKf!1@HN%YRtR7&SaPp_#!uKhs;@qOu?>3dr%c=W98XSRFqrvdV&hIp=cq2|Dn=@&$q85V2JKcw7X{-*fBwVIv@O&rGFMBR z{{GdwQFuO#za3_QeCTT7hcY!S-4P+rA}T2PX1q;Ffg8_gmBz7Jf8E_NJB| zK+r0S!pfW6*lgoXHsJ1(_9MEVOuV?zQrYVn(t!o9VlK?l;SuDiL-Wj?kKXP!)abi5 ztHSxVez@&9ur1z@E~{9%-p9Kz(>D=*;ynZ5ev2Hrx$(YOrbuaD^nd7D`u8k>SHJ6I zijD+1{}?12QG4esW|%mCFq^2=E|m7RO-S}G%Xx`&w6xXu=HkgTGbv4M1K`AW@=YDS zgy*%N@56Gp>63%c(_QuBqkAL{P382urv9JCdzYEn&C%!v9em8Fgz+CG z4xTdz!6$@+Te#LWwlH$F*9{;JhkWHmIzUA!0-`U_8aS)3YOgi6XIT({Q8X~R_n1ZQ zq8|LJ(urSM4^vglUAtUCHsMQ6dnpSSl1;sm!ZU?< z&gn(UHmuW8S{3Z-VUm#So;SL}$4do2Z}AJCEZqwqB2i5Uo__Dl!zYIGP3Mi~i0 zWYLWyQzg>$g;w(QNK`yy=D-Tuo+!6d1A`?LCMy82jIyD*EVAVr1aCR7iif!y<^-s# z_UY6uF!pn>qgzjX4e<1jLkmYfDw->6kwI!ydDv*Bdd~8ZT-YWnljptg!rv`W*$OuB zHV0SIx(R3*zA3SE=H*Q(22lc%D#nd%!c(pFRxQqKt~um{@r0nuZ&@nQb(c?oEb3$_ zMIoxcL{!2O(Tr51Yywp^ykOcL57fm4RppVYTE~mYS_WU`d9oaEC6sWJ2g52~erk2r zw();A{-xpBRuz$+#A=mV+_?71-UY*>%aP-u#W~UelGy2_6{r-SJXthlH7yR!4Kh3^ zu(l8eIr^>V6-G{8xYXj9jp@QBy9Nzd7iQbCml{^Bn2Yg{9l{#fZUgutw^uZ0ON701!SCJF#5v513Q^nzxRA|!n09Yniywxt5nGD zQ@yHsYUBjOtI~39uiO<=`mbr9TF01P)8w*k$~C(;=c)7cKRkb3yLVc>cHOzLnMD#3 zF@vA8EWtVT{4tY1gVwCFH>hYjd%%=d@VZFXbAK@ryJJyXe%rS{s$28-Jf}J_xg@eg zE5@c_zLu2w!eDIHAu~lOH%qsL>g9ZnAUkZCmh$1PpVMolP7S+KUR2oh?2}eP3Wr)2eXhXj;h`z=a)0hj`?A$nyzq4}Qwr!+0f~|3o2; z#3fuy%D^i%BSZ-pkoX_+e{zb7?%$AIeNR z!DfMI`O~@Jn<%}ayz9GLL+R+#CSy0y2ha*+0N3nL@kvMg>Fcy^pHGr4sj1V!@QV9p z1y~(lYKNQii|h#h@FFkU_m|{>1ybX3%GKLFAP6be#OE~n<)+WVP*B(5cKf4ApeR)L z{Mb)y;J0=P3wH{F=GV*G&6M@$C<0Z`ssdp9b?sgtte2Z>e5N+}LVB6cw_!0d>Ab7f z%?=7bmJSeS!mIh!h-`F+4f{1nILE6Z{bdPmdc3eP@1ZB$W2zB+09ki;@DER;cBY>By`c5DQ31ajE5E?(tU9YKXE6 zlxXBA+R!}j6C{&jnBi_(rU%nHdJw+&Z>)X|n~K>GJ6>$c5Nh7FLYSl@ zFv`iJ-G=Oo$xZMAV{mV}PF@-1^hY`?I}CAzLs*Y;;qDO|Pmi->WeR2EU+-o_Q()7z zBw@B31>8#vGauVn^Fj7K+SnJpheSp#7aeRNsQZ%Qtq_ZZ@2e-niZ(Ny>^8SomEqJs zH{l;XaBb0>qQ+LmFrAF^4g057Tv-q~=t3t?^2aO%uH;T zQWQq<8mzhGVzawGxS1SkE!aqMk7~ZnpsW*zD|-q3yW}$&Xx?CKQA(j@acAX*4<5l( zj|cj=-yYt~g556*GUElvsmj9{JaS(ot7-V%LiKDMVNTelT<&TJQ-}mIa<%os2>c??O|JHr&Yf? zx$jYQQ=lEIff2ZO9@Cc;jZy8bCt0uJq26BlNBPFB64*eT;dFZDYTjykg>#NgfNeF$ zfQxgK+*gKiCr{^P(bpjpfqct+s`{llIoKqP?QG3!^+SN*WsEPWShw)X_ez(oXVe)fKMQC4mij? zIE9s?b^+*m4#PO`$A;1m{73D6TVw;4FYmctvU(_(JxC}(&YO+r2N^n*l48b(k$&}3 zMxPjcEkq_&yFatYkmF?ADAx;+^9#gjRxtYD)It|iyLHLJ!~j}B>q8qq#t-*#fz&kL zfI#4`dr$5ASj=Ck8VbsOa+$_njRS-ofd#h+^>blxZN0t@M>zVLzmwfRiupdq&9usL zGGm~vph{leM4jdBmaLuw3MClEDZUznPxpWby8K1j_mj!|)~S75C{TxD0RtL8+TS|I zM=40SWHj6f3{Vo;+&SR_XJ|a(8Q<$G1)bJkxJ&zGrhRzte*;MBIm&Yl@j7bZhcgN> zN=BLqHX*P}(X?~l54^PQ-d*qpobI2edRZa-b8n$tK^!4j(n65XL6lGYz)~M*-2c7W z8JtcdvTXR`O7B1+4fYB751=wiFU(&mMo*tCdCWmQkuvwO=R*G^L5>G`F2hD=H_gpV zH;aE=8az;M#%(^15iHFH@eV7oII(@phw-TfgGCzD1`Ax2lmJ01SJIRteEaU+BgKVekMG97;l2nk@d~4WlO1P3MBfFyM zyZxIVrOMaDhN;(&cVJ7+yI9Kh3~lS`CD54ur5c|gdauIyk%<0~maO+}j|!i!@%=?F zm<`4FIsqRG^)I;!udjd4NuDdy-aawv-dNAE2x#k`Z-Jq=S(cAJED|NA&BrrQ-tLaq z{M}KjHmCOL$)+|+GslK-&8x20QKjNDQl9r-5RBotCX0iV-RH5Si2RDN1~o6Dr}1$re1$Cy@Ydyt&8y@r;8MM#yv zL$CD7k}9qHRB+E@S8}>7P!%XI1Uo{;MgvGKl1>{jEt3y^^+!G@P?WZz0Dv(>Y)5{27T5O$06ibx6l z{8GQXLVI|03utn*7lslU9I>Z!JxblNU#y+wy~LMWO~w_gGt5PS+s;7W;E4%CKzn+w zW1%)NhqgWI_w)|*H1KI)D-_vDjWqU**egy<8!A|H&W6`Tk~n`39QFgsj>qyTj3m(m zsjzAu$q+b5t^;nVzyg@Xnd#Ew!Lc5w$VW}2lQ3vJ)+QDOGJZ=(P!IYYDy|B`3yAv#_Yg7kk8=p zc7qa}2Lg(?Qt@MRK~^5@&@wCr)%#tuHbibr`KO#P`@~<`jR((UsxE{SrQiA!sOMK} z3pL7-oPfEM=erDcir$;IMnemdE>=I&d8)LYg1k>V5*OXEA2$lpU~!+qOL8~>8#46i z){ZABt?ha0Rt{#+14#1j#}Kfgv6^SfABqg(rc(>`p&pbTy{`z877T9#fx+=FXW8JA z#qjxLAPPZ-lR!BBLwKA4E|0%n&|HOfA?yOj%mvh1{bl$EBzZ^Z+} zu=EUQUL~BKnjZ(0Xc{l5&zE^A{Nhay8NF>4KDY3~s26&hPz31$2PO%x^1~a`c2W;U z+gI?EzQc8b=Y)H{)S0Uzd%;9G;qQ(bpL2FypgW>+a zL|mdlLmH$OtEryIWkkl|NlQM(_frbW_zSAQ~FcTTI9=OIJSSF0CZ2~BhWh$ zVu#(a{D(99oi(I#ltrmLYu&0R*y+<*X?K9lnx_~Ks)cPWqjG>b;T zc1?e;hQUlL+Q+|!{cvb8OZRtTZcqzTHSl+Gl*<=xLcl+Yt1Z@R?iCo#PIF+O>ka30 zWktWKXITiNG5mtvYiBn@;(8zG~OO0KyApB~d?=>T3K)dZqPF%L1(eBvKq>?w7l;lu&N**Neayn&629)(U zdU7aJ^Q28i0xX&n$A}{tYzz;Qow1&_V0PFQ3d7A=tt6+;$SnbyN*xh{@153cuY#&r zz3pml5uJhAc_Xz2{n`-@_<#Cmp10gy;78qVo8Wt${O|j5wLcCoTn2_ug zVhA;+dwnN>WFP>Rh&_=rC(^3?y<)Rep5;=J--%?0K&Z^=DiTT7XSFWCA}1~vH`Hty zz$mUdIb0mv?k7t4%8QL|P`eWlyjK@sCEH~Z`MK~;)wB;9p>CLu|J{2g9HNz*(eY<< zeNKO=Je0kHcfU~^u(cqi4;q$_lLZmaltUMRw}cx6BDxYgqzc1bo1w(4plN(Q5kh&v zlGJpY=%V{^g>R;piSzbOOW^2YxsNPC#8t*(#XK_r^`>w~*#2&91QRgPOAG8Hs~^N1 z9gOaR>?dWzUzH$zc$yeMHam>NHRwb38ZKXf$Ukq(s14y(om2X>q23$V0Ldr4)=1D; zkKP+Ingxh%eq5_oK*~6TTCty+8GP2k#51TWgEI9L5(B7SEnlAGXxI8tP1&&Q_Ew7s zg)Ei@a>d|7LRIG}V#iz$DfRB4DPN8FG60G*zbQi7mVGimiCDpFw!7or$GG1AA<=Qwj({)`g(&Du zvK+xxWB)Au9TQab!tkC*Dl)wU_^3ef{s(HV<=i5j1x#0Ps3XtK{U#W7Ze%K=chFp3 zzhkS34LPTXBXNg#2yeBP7(U)k#zeBX!7H92V{lW!^=O+rXXiw=WJ1 z3xpW+B|96__aC?g&O{CL99I7Z%5sqdCG^;S67z5v#iYuKf zO=!HQ;1UzjdI33aU3uKDEg>}Gk#eU3IdEz<8w@SyW)7Ym9(_t3iC`H~H5DC@$rTT? zcYXiYEWdU`31@l66gV3l?E41ZLr2^)|1+zKQbs>8TAE}Z!s$E(<2;68SW;s0Lr*9g zlCFPLq}P>z6o#=an}!EsFjjNGw_cKD=p17=2kC2WP=6|L@|y>nzXkf)X7m5adStUH z79GaS}R4WcBz=l00H1%zTkaCz< z;TafHJz7$B0AW4-H4G@zM(NM&69X;d9+xXIAJoq)Ai~Ih5H?1V{F|Nqf)C(yuwG<8 zJ}GmNNr^Uht&l~fV1UrBK>N}157G>EZHFr=I@*(bq`PAKx9(%U1Fwl1Q}&8AN+ED^o`SsdA4)_(QdutMXk ztl!zZrX|5W;q_HEW$aQH?r7fa6XBfMIjfMhCBmoMEIe+<w8)p&cK+r>C1F z>p?}Q=i!PZKn>Zdl+#5ZL~P`2;6I~7(~%EUV)6gOueDHv_@c6R{1W81Fy5nD@TuDT zlX>7%ln2uJhYbFIX+jsqnCR}4jc7$Tk3FJV>20F&JW4;2Gl`#2kCx8qieXw^?WcDW zttb7ODtz3y6pePQ@8CV=%JC8@4Y9p|I+4aQq|F^)_;-D5?ShUC05hJttxRN_!p#3f zfZP4vYzWcLxwiz^UoYWUJmfV+NKfgXwIMM#Zl92@JTYr5Tw;}mlR;B}`fNYq6UBF2 z2ek9%tu_wS1Q85-ZBsVDF1!1f&d`Mh6xQil5cP5*a^k<^blZgqduHuCWac~knwy$9 z%Gx{H2uPLR*~OKg#cPiT#2__rjtcJdR=!qr$vL4~dM$sc38gG8e{==6nnTb6Z^)d2 znr^ZdKGSXnxYdD&uM~lR{-LW_WpLvOt?@ z!jo`=9!n{PoDrBuhO~N0-m8}n-?iN03pvn3%Cz?+s*jt96+-9o&@VF;+5F z0Nam_pXL|Q+!MAQkUCLVs>RRkf&Y&B2AY9wg0>Z%+@2dNMpqv15rg^wOT>Yz!AVU<=qKk2vzdn4c7SGc;Mj)R=lI+x_QbPn{J`tg(i>`}69ZLnsJa%}1&X=dZ;MV( z?=!s16k@{l_0Ih+Sa2G=Rjc`V&)H+7LQm>z2COy_vO#o*dChTsai*!wxnRrykqo(c zRB;D$=h-s#NcP2C7nnOYnWZIV2M>Fq8Ds|l!WA)?cTn63WrpQ~8&KuANU=rQu-_L5 z#2K&EeOQraYX{!wQr#4bLUv!L7KkUAa+Cc>Oi8RWc3JBDrqcn~-dJ`0aYFOUEOMTM zhf`V|hETDsoIKejau)e+d!;G8tqtNs&wR#S(ylH`1j;pRz6%V^xVDSl3R~Qea5X1{u5= zt*(38ps2?xLJw(J=O_+_v-|be{Bhfxp$k*=5K*IdC-7%Y-xQY*$Gw2>i%8~vu5La& zY=A37KYxVG&TO(#nJntq<>?S@`Zj494K%s3&OpXY(SKt2j_yiDe@JF~Xgzxp3k;D6 zz>2B$4zfcOJDSaAJ6GBnTWi1(wwHr};W=#bc4*1UPDb zM6WY|em`tAC!7au7_Q_sq(9dmJt>@5qmghVsd*BAGHLKxiihL_{&U87xo7 zz(n0<*qCDovcYCqtr&+-B^~QbKxVY-4gcD9=LrUa^xgY6lAmASVVT0Z-vNVHNvP7$ z%QpGY6hH5T(3QdIhX3u@ zc2Nq~wpUHzpwdlbH^R=Y5^stM7|-Dy&2J!i-;DzBECeBv?|rxPsc;!s+2do_akFqP z*`$Yi@SF&0szn*|Pgf?KuYJ)AdRnodb<~r_jOF~#a}Thf@n%q8W4x_AF*anV()VJz zRjeY~F3!`0=nhf9qx%G6;X_izblzMMuek(zPZ3JwNFC4}f;B>vb0*})6GGdMA`ngu zAWMt!NEw*pY}Uh$DPRS)I0+pHBKus%i~xID(b`sX%n6o-cnPD>{^u5d7~e9^Hl?(Y zy|2d=pW2V_(@`sxiagQLy?$UHi~Gi$-Cp*M+)Eq@)dg}fN>+sv1r@1ycZyw|hLj2a z|Gjj<-^x3qGOx|~+Fhm+eCR~p2Ow~hK!2m{ZEo8Mu9ux$m>jN(zDelu`Oeye*RZlY zO_{jIa;+GOWR2{+kr8427+c}1iS*UCk!^suolgfd`3Bdas-Jsp5#{rTes4Qu{`9nS zJSEg6(tI6Yek_IF{t8)yx5`imdQKCgm)QSj!LIYQ5qOuAr{#pt2V| zP?UO(f`@rcP6{Kh4EzLIy+rF>L_o%mI&To#{4B;O@ZU6rvAKg0+SB^kS~A);yDqB$ zgSK!<=2H3V88)F}QF9@GvOa+WP<_K?sX2zO2 zWhRVdf#8Z>#o1q<0}iiaFz9(Fopv(!G*#WL-$b_`UZ6#ZcUHCNFg#nnVTJpPe9W7 z*Z_I>UtkfzUuE*kK2(wkx8%?ymc=~x@v#eJ%(8#9_de`1k*2H{9FKv~8=&;VlM7tD zgot2+KR@`t@deLW|3xDfV%`bZmg6|0xd^I0AE1tzN`wbr*SWB>C5xQ3@A@D-s5D`r zGIYF&XAR>vOx-AI(RB$VDx&BaR+OKo<~U@;@SxQ>S>x!p6(O=E**|rAR_5i^7C9Xl zgu4jz)YgB9X__&1Wn@JpaY__adR!EA8DIkA8Mn)xm{SnmNjBRRqxOV62VcH#6x zZa4oE=%We#Qps_T%<9^f_uD)>RQ~4TIIFr3nI3rPdRrBXz!w0#{Z#QCCSeS^dk6y~(>MVZIlYg;G)(D+OgFjA&)d6}+<22>w|2dm&2H#oRkTmn@j^krqMukDX2lWIT2GENiu4peK9NCUzIeM(%Yrkr!)mH`Af>GC7 zQE?+?Z>=&_B9u}J<--cNdf(&9g<5ts&pWg9R9$;YNoWrL zJjyeg>Y5>4k&{LQdXaHZ2IL8b&CXtvYgj~A)&-xaCq>+ zgYOBc+n$O3jtpFMmt zWX&CLbRg59C(RH?>Fk#0TV47v7Zg8jt;KD%gzJ+{iFgJrHyv~hFG)n76jth6NC1c* z^j_IWPaqt=j56FznP9OJf3RwoiaS%8O5B%Icx8;!#r!C|F3DT=z#Tlbc$VM8|NH7~ zG`fzmmEjw@dqH>6&SVj>dL-l$L?8u&=QkcoF*`uE8+t-A$XNl1*3W^%RVjsO$KDm= zri)AvoXm@0E#H#+?hACKM4M5(c?dzZwkpDfel?qF)n{tqf;F1=3wHMLFJ13a+>1PZ5x9@kMe|WR1vtI)b{k1_E zF8aGL^<6yC+14#ayw(WP4fiDqmZqU-lLk7CgvTm4A}>cW){pHKG>&|;pZ`s-@YNn& zS469af=$;_*RLDb;yyleKrDVrU8sz;);=Sbl+V=vtqg^fWf#@3kzKP@2(-DjwLU4#hF^-V?LG7LrMB?ntZT>Rl^IgyPt4WW!qNIR|7H6HVkpUS-r zbd(2Y|F#<6ke_KI=NM9&U<11V6S42#t^`>B6j~Z}$6ll^kRI%H1emF48L%DJ(~@`T8=v@1{c;6*rACU znBJbKyl<=v?VWG12y7fS4_ILd0lp6MNQ$B!TJb>XS}B+V=I267JmE?hfikXZOH!v= ztVR|1`va>?V$~WN@yGVp7F`=?XMm<+j;kE~w4{CRRaO&>!Hxleyhrak(hxpduZtR7 zy`cG5%A+GQW!mL=`P9?%SPC&~(e#XV{TM`Y3wU5SN|70j1!0nGG~CO<08tA)HpA9< zKyu0y>OrH-#X{oa%T#1?!@LyS1my_V3+q`0{3fP*68gFC<_?03 zeuab{s?cGZmof`2xPatuxt!^0t6aOciZ80!l|SIs!TM7pMXXWh(j!%)aw-NB*SrC* z7i@`z=-D>n3R4E5pDwYjvN$*vjzdE&vFwP17(DAITg^HA7udpLH;aJ!?LGmXj?$bN zL;NF=kI$;@2II5CJT(wC1z)-)P0>^1U~W%vo+GpH$#5z%loNfmXC8$L^tRwf-X7`x zTd>Rhk<`UM_IzT+=oHLFvH&g)8yY5Z_N6YZ@ni@JO-NiGyWa!PlC?cA8c^3lK57`~ zgAXp`#`+h9)dze3!JWw1x{I;cq|Sl+PA)nmDK34QAw4WHDO=!%`1C zw+xype%G5eichBRKF+RW-%--F58_)r5q_P

qDU3HEaxXnMV0)x3%^Tz4by0|zw@&o^8flJ$Fq$EkySZIGNv(y3eNs; zK}i0oz)l+a9czwsT`Nf`NFW$3vT>K=#8pmjEl%o&ajX~>OGGVC#an^Zrsr2@0FgOX zLY1-F1}mV8o07T#Pj#{*lRNPC9zZ42PHxgV5gMsk|+i~=o{gzWT)4QJrdh7a7db; z2sIb!(`p8U4T2b3P`l(V53Z-hlw)sIHow&xfU;*)TP2WX`C1I93fZeUYIS^(;INcM z&%wKWh&_eY?C*5^2B8QX%AiFpM5$Jmjf}a@|Ej{(n>{!lP$@HbG3h23STS^3W`urj zrJWvJQ{K(r0$GuOGeS8@d9~NY<5K9w&$k&Wi%2P^V}ty{eV^xGwq}2dt}U2hh7tae zAY8yCZ%B*3fF8oFfX>pXN^g*`d1~a0&y9K)14%(SWwU{5Hhdwm*WDh1h@Ztm2{VwwMOo^%o>mnA<|}>v?vHfOF{Jx zph64Bb$+fQ3@t#JV;2k9Hap&v<^Q%wd1_0oD+5RmagZ<{kGV8l@r_btq-J#yG4Ran zg8oIzDvy4Y(-6VbT8#kRLE$4+q4`a+-AcL#fffSRyXS=qhteLk2`~fZ+@E%0I?^<5 zw#_E`D#?CjjQTaAbbcT&4aU$xJXp=IishR}nNl0P2_Bfr+)IPxW?o}ti%L`NDk6_o z@hA84`RULGajhRm7nN1VPCP3!%|jnJqXyM%g7E`9eX30nIM+2UG-U)lmTgb40b-+q zxocGB&MevTJEY*zL-*>&xx$h)ps5d8#XT83uHFTvFz^MFD?-C<#tH9XNk7#)xfzA` zv#2{loI)0_(FlL;LedK~fPIb_9X|8TQM}maruKewf5a81r&C1>8%7BcLjw`z3hwyp zJtw|CgTgKC7FAw7heZp&Zo&UtKz{xZks=|%`H}mBRW&yolIM9kVu%l>7F88pk)BucLe)pP#+LT*c!HQ|kWNqcN;ZP<7;}yLxWO8}= z`T#@vtv@|zx5&`W$Gerb;?$cRJ3HA2XVFJ>OhvGDJ_mr&ygHlmX_#Somo7>+Btg|b zfh)|vRz!c3_IE~l>P+$SwpxODjDI_B`3?0b{~eG|>T_*~Qth2#V8id2|0JuUd!piF z7986fsjTu{q*g6l@&`!eOX9T`2@EO?(&L`;K%lAwurRUkIdE_bVE5z?A9-1C2h0+F z*j|pPyIOdmM(7!$VdtW)lZ?0?T&Ne($zY8uh#vliZB1q*oV#Lz2%Tk0;Ag=}UTeLJ zB`kM)l*swM3LTR}l5T3A2|J=7L)=F%%5<@~!Ym+i`L53UI z(!wk^fED|*6!eO>M@wj>;Ma|UIDUzxfUJ87DNLpF@0lrQ!(tA-av6R`gi0lg{9nE# z1?_1Q>-~{yL;Zvi1&N=Q837IGi;6Ub$HNDD(E1sH>3TdbsK{Na3j(R|-Oy?8;ZTw# zI@h7)oio6G<*s?ll$cE_lPuXx`$fF-RxHzg&6L_gPfi86EBgPxts-CMNcjoOSm1kU zRF@0i`WKLD@zoJ`>sPNJq4D8#L<@tZ8OFMn3n@VaP?6=+A^|z0hSIRcVTJyDM}fW^ zAE>#1>HF|8{O-Ox7pe***lunq7oqGc7N!7A6b6W8@iyYylg+cT<8N2FlcTdZUbdMc zr_=6)#X&QzR-Ln>&EYyFY>}01!b(fU~ zISajgPe=d;2lVQM-}Y!wi5&M=uQMZ@5KwKMr)m$)bZiaF-(}EY_@))N;sgn+>U%@v zHU1G0vNA-yH(H6s4x}XszRsj;diMY9-YLMR#qZRTnk>=)tqug#w)$xUAocaSuf+t?x(9|# zc2<$|lH)m)I}e6vag^cBi#U?A9~Gg19adHXnA=$1(Xr028u%E?wJFe`oIt0tmj21O z5uBnIeG72S%N0KoA+|e6pjH8-WP$VanH{5D(}pYiT1ZkaVD-i~E8TN_RBV2G z_%FO06aOpLJ0YPO+!S-gwJFEv1s!qaXmT06A-jLo0iR0egm}B+-UY7#g8^Eg=aoHn ztMy!zSTSBcxDX5IyiM}6%Md?LAfKaies{V;Z#{8hai?GJ3bqmJq~K0HdkS7UpgNq} z&xGdE8eea%H{U?1hM%Q0Xd$#`vG?`AqeiGDdKfxqeN*SEra9Cw)y-b#678s#8DKG! z23%f^Iyh?E!)jy)nXTqij)@OlhSeDyJ{`Td&grTYrl}ZCk+I;83^F7?(!3F%N`TCn z0UBfPOW)v4vk-SD?BAT55styXxw4_c<{D5)qWCesFyV*NqDb=s+Idibq^&|i6Pi_v z^f+sR^K<|k0u-*|x2zEK3E<$7Qpt@e3N1!e0TyPaf$xP_HwL$K1OO#$d|z%$sATEL z9i%EOX$&R8gxZAPe@QWH9M+AZr#B@sKsf&2wyX!UZWcJbKrhI32iWuhK33US1?bcN z8pWL)ba_n!uv%~zS1GyP@hnEP-T)z{G{i`SZ2O@j6}1s1U*;e9sb@S>N|$atO>LB+ zm*x|_ilc+{)?A{W^=~Yo)qPj4h3>^L*cSn9m@wM~>X#lydff&?S@1BfM=}4V3T1j4 z|3(nVN4k;;aR0B!V>E%8S)VoKC~RC|TuLI=3w^W|5sZxOxj;PLUTDfu)5XqDSJ28g zKR~d}r|AV+9W~tl1~x17KcGD=^M^zzmUp8!o)w8nJvez>t9^hD6$(BIgx#V>`(v!E zO^SrJkp3D38e3z2c*BlMCBtT7$K@`k$o(BBjYy8&+y+7|`o0Fv!ItYu(h>Q?do@)9 zmd`Sw=X{>S5kR$PFr4e%f(rc%=53gJdU+CDfb#?Wy#50sag$?mgq5;uVo$dhOg`O1 zeV5RK^_(MZ$+^r~lufJP9APcK|BN!Y1nYiHmn`PCqzM+)vbQ}N^s=2vw39)z$C^}S zI8~Yhq}$44%$-5@%9H%{W^8rz_^*Knuz{vz|1gZlmpd@RuZLMWLn5*@tdoiy(fjeR z>hgJHW%|%~w|h6m{oxC-3*4`N)4YpJfcCLg47aXk+_FV-AW5DE#mJU@*Pcfng>k$R!%K zue+2`D2Qqx(f+~EB`Q?1TbX|Zgx)1`t74ba%Fb}V6*C7g^-+-4s*le{vBlPR1-bISa09ArFd?FBOG&|oINu~GM@cyUB_8w zy2MjG1_krp2%$eydQb*QZ%qqnhxHl+Tw)cQ0<&JRLiVy@)XZU1jB?J}?`!QqC$Uw6 z9+Qa1(EShRfz&=OY27+Hdb}JV@MQ@&KD8AkJ`6k#Bu;7$;)+uNX&@SmQuzBp|HEz`57{|SOxi;;GB{~yro3=_S_c?P^nea9?SfVk@#7dA z+f~}Cy#8fLPPzTym(%nF3PQX`&c+KrmgiAq|%((0Mxob|CH}5yz&u%9S zwt4Xclq3QaVp@VRDM@8dw-ca0!S*V_*N9mV@LJ8ZbHUiNpFdc1ODcdr5X6~Z18`XA z!9w{#r_GqcoH#1{ZavIwuD_>4qE9b#U?#p-xXjiLcG+u|$LyrzC{EHdu+9q&eIV7~ zC*y9#Qo-7c$kLbHZ0s0T|7+AB8Oj>y-DNJ2l}1x{OUC}4>pE`D()8=qnr)r@CIl) zO{S6F!gie!((EJIjfsp##$m^lFNt#t`~^5b$JDtKe=UweIVEN!wbp94VbscQC|;aq z%BMFP-$JY0?1c#ZBaEU!#+1byW@@#%AL}7RSJ+iFnMGzhJUBl{$uH1CD|qQe91+lL z(qT%~;JuX|BEJp-+Czm!iuUD-6Nv4Q*$%GyKH`;%!@A}kuS=>;=Nkux*eruz{zsIH zH{^sXvBA!!GF4z#n0$qttc@iRD7(o0l{c2->WVDWu4|%ce zEf|jql8_6s5Bo4>7)UqBN{D)%*P)PCC3(V@<0o>{{CXHV^!Efdp3u_t>c$m@l|jYW z1(84+CnIl)nTg3xGfqLvDuXe)S@89)U%-u14g?|elfS+t-tFeez-Ix0AW_Y;R3I(d6Fg@m zW#jPWaT&G1D3{c6l^mN^-&&b%?s8(~)bnD(aj2*-d$cM?xikMcG?@n@3#b4ZJ ze71+sOoS(D{hNljCtCMLJ|JGG9aQn8k%tvlsYn@hT}2EO$yF>lv_EmwcY#2t zK=YAZ-F-aXcn~bQQ!$En(}bewci`t)ZkyxkqH-S&q64FtIOuVR$h!{OLi&)I!-Uj zAzyi-xB2VwVQJvbvPhzTdeDo@DO5Ni*RBhK3?{=jyTp#-p+E5XS1Lbo^2a(lO$9n= z5ka9n9}>dKE#MZA_@!Zw$femHfCbo4X5|b@A)QxPJ%FnymFp^nL9f*r;a66sAiZB@ zhBCxODmZeHZ~zgLQZjPzu;lj_XrQ!5Y&y@{_MPFr3vN%#9N*4gMLs*5n525rP z=Z>iWN{p>g{(%e``Jc6iqXy?V1=R4Ut>k{*Zta8xQp#Q*E;+weQp8SO=rkWc?y5}E zm84y5MiW8@*@OxiSqZk2;wovQ;#5*PDdN&n{6gzx<`vRQ2$J(t%(1d7c>LzMp(MD~ z^$H1s-`eh{ys1=)Tg5dKlOe8RNgdbx^p@JD!$5qZq8`@oXC0+EaUU*xbkd&sJF#7p zAq;%9f_gn80^H`j+7C4E#JTHZ(eTp1PUO3KVx28-keeEw2=sT5T4(N(v5S>5+-RVx z>?DM>EuU?nI#0(1ONd0du;mO!4fIBlLVPsfw=`xEZx%nb_IWo{XPyH2jvVGs5n(nx ze3#&G{`9#a(T{3s0#pmRXTaleNHouIi^iG367FdRD+j(8v+h2*sV+>73ZGxDcrk`# zXRp1CnCW|A7JpHif*XA^^3Ilh#H!$wj#OT`CSvuEFWG?idme5m%}?K8{u!=|4p?jhsi7o6U%zdt=)7TJ9iAJvpGR(uQfjYbolz#y#dLIwlkyI4g*cM>UzQA z0$P?V3$lwN z(rUT3=-hBI?!J=wh@y6{(LQ5bl0#qlsSzY{l0~JB>u^_e$s-uK^1*XfZ>1BvEnKQ~ zTWmz5gbL{_jpuD{Dk@IK%mj$J!_{OiyG%PM1~!#*NG^j!BK{Lp1qISstiXaMR{UWLAxYwZOc&Xk*5Xs$0rbp`m* zX5{}D<+=g_acF(cazWLozv_azNj9$CC-hc@aw*S9;&Qs-2xNBhS*d#%7=My#+6Itd zR~dH@DxSF*NcTR3z>gXojT~4ruDX8Qzy>3#nowtJbqzH!{nOk9&omRctpNHn5 zy<*EVnKxvlTfjuY5HsVCI|Ap9sQ!OTlcv{GFPEQOL>#T)&2fnVjRcK8T?M@V8Wn_` zh<`c*l^$`X{=Ky4JF7b!$thCW%HP*61ztOcSPJIok5R{Q62D$=CmH6hoV*jY%dB;3 zMl#XQH~C@r6qLO#DDfCgmqf@Pn~8L{Lq z!d46^G;#nof=-ulxBb!l`T^?U|9n$U}S6k0KT_T**rNet=#}7wk!CMiPEv~<0kE! z^jI8;$Ql>qGx4+#7dhk^WmWu67MXNP8{ccP_&}C$PadKwOcu#&iOlP=ik|`_2ia2j z9v?>T{A6l(Q|7JtbZLMAc1q);sgXmvE|xUl<+m-XhLSRGq%#a^8d^iGyx>72+_`+l zxR(^)q!2I!6lfswKa#FbconRey%6i#-d;ZiQPIJ@vt6kUP8)7{skiMa zdH-T$=+(*k&paz5zBc20MI^l_CvB>}e0;*azIO+*K)Int*u&LyXs#j&cM|=R(!TDJa0X}QY-4fvLgueFtm-`H#dZ`6`34#w_abd86B{dB(XlwmcIZbAmz_)BRzz+_) z$jk4yU}Fd@F5|y)T6D93+i^eKG<=Anr&YT>;3kVbr4!a{)@x-~4V!NBOPQnndi{Fs zkVAJF8~!gbH~>lv4}j2Nd4DOtg4<_}W&8|^W6(RfqN;2GMZvC>wb~r`F{`2PP%dj` zGQo~Ig9bsL0&pS}`YNtowT#_0?A=J`N`za{0FCn#q>Ib^g+8UjTXi%S%cOpqO@TLkUL*C1xDMNX%h z3S!D3gVas`@~O29Pz(*J+yKFPhY?HF(xB7f>p=!;1Z_6YHM{q9Tt*R{Q8|FsQu4s- zr#W?OZhc+#W|=v9oO6xU2aZMkRhUBf3tFWjQ(z!ap&NeY|M#uF_3ExXtYz7pxfNAAc zhEIDvRt*8e?3elniQ*&5KjfBJStu^DKoUhDvUh7~#b@&#u=*3oT$$G3$g-`3+2&ho zjG2y?R&-xIHKR)b`k>(hZSH@Np|jIqW1&s*4!K~mg%*@n&fU6HmzPw0Ej(EAz0k-c zMWUcBIFu4Gf}qh+L~*JUqZ+91wXP0#WWOGh0iwYkHduBE!NkLdUs49q>1T!mPZ+B% zoyo1)P_7po{(w-G6z|<|$s;*;#6U6(B@2Ld&z=0V%(*hf3rph$2_s}F+&w^#;8zq6 zQwwoTrQJUeXYre3_eBZ!u1rbSRuqQ3R=8wwS=YR9dmt|3x3r$LHAqd5E545=oC=iK za8Wext(B>m+gxWurNOlrEbf8FTA1e#{X0opXKsf3v%Pv(Zh-zB>}PNdNHp=5Krv0d zJWa}w6){U@vAeTk*dLfhf`@K=$s(6&5m&xltNT({{fm)kGHE7%<_LisV}w*Ml;MyF z8LO}Q61V_K37}#vboJ3m?Atep$4?dQjCd#2+PUldxas@{!Jg4V+~7ghj9cRIWWrGm z#+~jthjrgVLQA<$paBEtstFb?wJ8TIpj3sQrWRCa7ih_LC}XE!S{9e5uP z^PXZwhF=ZTO}4IoeeG`;x0AKpuSdh~InYjKWv;kw_TxD>(1k!nh~|kOsx{)3rLoZY zc)F)Lp5e3B8I-E^ab?WlFj;9nz2@3X;|o)HMN&48_R0mmD!2-WPy;T1?F*F0B9kbB zYH_#nnRh(JtfOJQ=iJ;7s6_eyZer&zp?`Z2%yFgK(+qp!Wec~57 zo2=TsBm;%ps_BZ8mO?S_w1%7e0+8`sCO4xjWI^VB$yNpKghO-W%GuN0wMR3Q`x28b z>dGk^Q|rY;MX%|RmrV=qOi@vN2 z4vETbWG&$6bs$G92#TMN$o6Trm4BI}nYbSBp;M@hp2V^^YU+WEs9?D%PHan?Hk ze}BY@(`lZ*ZZr$0N8YW+yO+LDk51c}An$kACqzM#`<^*p3F|u^D)GguVlGb*i)7sl z=EfO(qSa2toSe+rLI1JP`APwmuwSKjNG{*Kt~LX%$3`(;t%%kGLvFO4EC|edPHxkd zO}|~At0GFb(p3fX-`@Uo0b3t)nzSg`0RLFKs7vMVWf^P55&El*NKd^?Uj=mS@$p|G z?3rqc^meluXxa+3u8@6#P|Ti5@{0O;8~Hk~v~ zi~ZL{bN^LfKwKP$ovu$Bg4%sVD=MgNs!BDAaLYXvBWTsy;CgY{z5zDd&-s%a?(s6U zZ_C^-k$i{)86v>awR~#8P84dZ=jnqS)t8AxMg9g$S@dmNDlv!8UTCRBVsj$^2J?m`5#6zOimbD$Vk!NefsFJPZstM%kto z9|D1zC!veIkRva+K6jA%qZwnMO6W7vloO~{xrr+8zC7Q$<5t|?l{4QqUNGtdTLEpN*mc! z4+2?;$gw)dGdP}4mD@*Ag`_=!D3UevBP#1|%>A<ZXeR-evS7m@ku@I?tJMYR^T@~!s zv7N%-7Gdog#=r#LhCYG4$UW^~n_jNq^M=A6tr^2rQ zyy_05*-2D$$gJ;wiZU9V9FQ0`;K`uZTKiDugb=gAHlSoR38Tcg%(pz74NF=d=7d&H z#leCRk0|Yveob7ERvDqq1E5l1X@QUXmq>7xsU!0Se8wu2Xo2Qee{NXhDV=oBF*{0i zxXfM8SeObOUyJ#@EwY5PY6HZ+*x7#009(Isbn@gPO zAnQy;i#Uv>Q<3Qq+;dTAl!WNpz?s@lWkQe9D16?fA1&%`ic_l zjnTNXGm>lE=D^9-;tEcZ7yY6-N;GLsvr{-66zyrm$#PPg)T9!xya>5MV~5hTTOuL_ z7iib8Hq#3fFB~oA4lK4S8BIsjb;o3xVglQVdD6+npCGGCMj&-tATWr%Y(~f%aVaOv zy`Uc$*xyoR%IqcQ7GM}Ca_*$On8UN0tAZgZXW4O_9p5OZ=CpgzKq@Rov9fDQYc@0= z4{>O{E3Nb9!q6`*wU7*&bUwr9ab9XgRG}haolBh$8%pM+#<`d`Jjvu0vDJ-Hi{ryUjAJB)AL^um>)n6;D7V%)5UQC1!r% zv0)BwV`F^)l>&N8i7t~pZiR_2=5^e=on)cES@PlwF;pk=z#@nNfTU=zoHvs1d$GM; zJ}HySeiqsjD8gD6L5cEfVIGqL3?!_emciC!yC80?HL6lT1_N8z&W_XQ=M-d<6dZOz!o_mOXh~P;4A3K_{o31*AUuvJBYYGYWsvnEwWJQv) zpMl*SCWjf&Xgj3~*ViY7L<8r?q6Qx0thAfo0KDta;=EPYo-cg@%!!!Nr2p7SoQ31~ zJna6J))ZQG40(+OSH!1k&WU@{AknkBb1E;jsQ%!eN7s@C-;(UxF)`bfKXk}tcf!vB zc2l@xQxLAz)82%#%VG^{$0crwqsc^jygy%6O%#e!ui6X6aG{XFqo)AX;Br&b-2bu_+oPG&nqefS*moj3l)T?<7n4~$h7riCN#Uph= z1gYD}=@@>GaK3^QC(9wAnBv#xAn7QiwAZZ}AXy1c4~b2rOdlg5dh!lh<`TGE&9^c7 z)r{Ex%?X`B?F93T=HupR2ibBOK~iXdX@UhVs*|L%QDPwb$aQP_nE+<0H58-ei`y#L=V^ey$LZN^o%km?8tAN6!Kz?(Zsmq; zMCtJmX}OPRuGGjkKnPln7r1$_(+(!(t~=OW+g7mYF#PGN(00(wx~D1UAuX66YUS+X zhbDRUvHFw&Tru^j%mB5uM2#{@*aU(YGF2ly{eg)8{Dobx$DU&E>u1eS5+zZ7Gvo!=tG(sad7cM_(S^B^2 z1M4++iv?bAe27y%FO-h?-CIa8z=JB)61-Hr2mBF-TZumA^t<>PGd5?JoS-}GnY*p0 z`#TU#Opl@6m7uP4|LaDwA4UeD7Z$F`LXy2zp&irK9gkrBvH{`!!7`5a8{#+cJdDX; zA)iuuT4#V3!H<#_Ho*K`gAh*nMKx&BI(O)=+X7=qKAkE4sxIl7$-92s80YoecqKVH zBOYy3f9j294X`I{6(_5AXF8#Tw$fD~bc*6#?yvTysiAtTjCA^{77^Tl|2axigPA?r zG2-~Twi#Aa$ZwWN6S@VmiJyHC7MRm4bpcLH4PY<4R^L`ZhwHzndaF>6k*UAc#ND{gDmMq6HGP3pG%o*B@K$AE3Q0f8%r%WfJL>0Ww?6+- zlxeuyAG~b7NebAVb8H&tCc_UU8Xz7f^JljINue=+vDj034$7;_6Xazk_$R@HP7Zsn z&_9Q!UD$~f8i03b40lRKuo^C+9^J=-dz4iD`e6m@Ut z$$J6j$BYxa1reunbfdJ3s>9!;!VEo~bMJ&Ivc|^shd7oB*JU3~bn%SPrJ$oo2RU?{ zl&E<9LRT5%U1`JMKB>}aSs#la9dU^3y}zvh20$@%?)p(_U9OAL59dKz}+0Z6ifPkQmcUS$mfFxK9D`g78g-LkP z&fJ9aW0z*)a3VC{6QKs&Eb}{5WsIkOq+W~Q^Y)tQK^kD|Xqu)Cd$-d(4w16`R;ui^%(2U{mJwB80M(TeQ>;;t-TlW>_~Ex7T_ocDHq@KpyEKN zL(Y}C#kQ&;q`6yykQ#0VAbPw!7pWMSoRdIZJCr#(g*(hxyhD2EMWFL`!Ig+l+z<~T zCq;i~4xhi1b{w93NT2d{?WCzSuQ(om5qRe@Gr`p6@BM+$b!jyc^Sb zI~X=rTAWrz1km8~--s)IfT2ll-?{f9LIy@kEe^(mN~YqObs1SvFfIZg?%G(nij6HU zFiN+FW7}T_5X7-@Zz-Z`&Y+;xhgavDnyNIVCU;M_)NqT%ga~D+*m=~eTNU|3_`tL~ zto4`{-Oln;RU?yYTVZr4$cf1ZO}9OATP@b}^C}gRc$OVjm&nK)o~7445$A2y;_7^AEn_<8 z_>#qqa-WZ*w!G%AoF2OoDqydNZ1{2KP;@lITQ&cjVsG|&A<{ghfs)&6EhvCpHV0P# zN*-;8!@Qf_qRab03*Ib>(JK74P@Be&>Fcm=&EHL7x1ck-(gt`;dMC*h6!C+qwt>t| z+RZ?~orE)gx5WgyQ3Pi_H!1 zc-^o#i9k3{Wn*7ihpGCD&t;OJWa!y)Cy{0XlA!%d4HU#YSxG3M(JmUwR zkW#08iF@oJfvRG-gbG1SGyk~m2Duew*r$h6ECpEQt&>J4iKQU0V5NRguyPw3dxD*{ zaVDTPd9QESL(jkX$x^VsmW#8Bw3ExKa-#hLP@OIUdlon(`DFbs~J6 z@9OhmJ+#+flr8xRGh(odL|30dPbs&JV8tnH$4QqM+d?YCp!3bMx^@)sVec)*V)x8b z!F4d9;_$u>Q4otB6HTOJq{G%I=&!8eM+38;>}d|I0nF6h`!amL`cADZ2OPbT+|tS_ zNg?zjgRk9??B9(`LclXh%UB~k)USf%3ormA$?(-yXr9+LC_WJ!A@0GGkW9;^rP{u! zwEVWKQ0{Y7i=xdF!+ML>zEg2uuaJw(C=HL!6ovKJlk$rNQG*NeC90#2T%p9D1sSJJ zt(neqLUel(d3I)a2Hg@U9&pZ8woRGm{$R~AcP!&tdAy~fL6xxUXf&PKIs_r|3y!=E zsm8~^XNJ5236n!g0eT?^zNOLTK*r!B&Y>25d+Y1VVsj;7$bklp5+RRe;MB?@hox1H zZ_Z~g_TL}gGi*Vd(-b5Zj~oP~awVnZnHWrq5mgdSBM~z$tK`GXn$DxDX4S^W zH3vZ{zyL~$xr15E#{@OSBUQI3XXTmw`vhSmI=m&-%$bDBm3e_nb>e|>+)cdmG=U_^x02XxbH8F9dOIKhK{(U zpnXq;Krmfp#9}^TntDCwNyN`*tm1}t)rd*8*!H1SB{GY(EtR&OtX zo`yqE1FX{X=vhb;7s;i`k7e1AAT_i;{}@BgqSTSsAldw1+dzX&hG-x1YCDww7l1FS zi+Dceok)9@We{78)}}Q5%l>%hzWavr@Ioyy0R4RQpl^O5UM=Fzj};Q?<`Fv?ygV^S z5L`t!m-(1*uL)nNIkhO854%lq#}**Ew&f; zulFx2lhX6PM3Dp6*FAIj202mLeuXMTo0Nx(&O$;mOu1^$@eRTLyBYn1_UrrD_U?z} zR1$U*S4xmyt|8=WoA@F;gXm{|6F6z@e&?1G#hK!~msbdfl1ZQ$i_3B%BG-7Qm8)BF zCZ6pFS&L*k0FBOpR8!r{v4cE9RSHR^6j&IVd6g(s0vXn3H1c^5NX*BPQx`X@`rDG5 z;+g<}*XkdBg&Z+@c*(ouDOFY9-XPq2d!R}BF(moXkKDqLASJSlAD*;Q0qn_{Ekc8^ z+^MwBbB3Z^*~JCEk&2RCV*9lve5y$Y9^sFNQ0^@;)fR&)ceNh90s#iTM+d-`&9I%u z3i{w%&sUF>=sp_rnOLrr`k$Y&I%lj19hgZU<+EI9KCC{H2yKIF-EUsKE7{Wv)NGdroVFla3@ zzT4f4%!o&}e-ZgoF9xU#1Fci79EBtMu}rBge&OXnNi5ltBZKppJiV zZpx0LTII4q(g96y)V#lr+F($`bJWMaiek3&G=5alb>tXYd-@4lo&y2Gd2bJi}o zBj5){VN-$&Jjhf1$;GnYmm471GIvrmbah)pGUj@E zW4r;6ck^msYtA{avw{_>t*Dq@GnGnre9-e;SaLwUbTmH?}k z`3sGYCSkP-wEmJs&&+-GKaz!83H1Y|pq_q{oQCYsgqs|8C?vqHx z<+T%j^Owt|amMH~kVYKzXuXJpKM4hd6Dazxa}-Vawsz=S#1cmkgMRp8{7vO^L%uoe zZqwYvu^9&MkoeU|b`z=j71iidI7c%MaE^+p&x{K~{Sg-RWEJ^I4#S@4RgeW@xez#n zam5)K&in05S%4g`4vOCR5%&tKJdt9 zWPJ~*_)e@6KQVppclkWJOyXLSCzchF))7@{($_u>?e7j@Y(Awe-q)i}I_)Fj*G0uz z2%CXO&=jSHE0w%3SgH40Yz-2x#M!+PrY~)Wf;eB>_U?Pc1-mgDTW?jAavH?XS}%;; zDAte+va^ZJfu1~N=IMgeo+#p;zXZiLuo6 z((T;gxjCX?s<|bjk@CFRA)TT**|$_JP=^W>+D7@~RILG?`|arOk*iCg6JbhPMGW(f zLeb!hBb+pWchE`Qr%dqGX8js=q@Q*6H%om`R1>{f0`d(G%KQi=TNSMy)K_di%IsDR z&dkJ;>wwr9`6L?Fq;GB#RSmG_M+)bk$=fbvpG85k(kkqkg!rP9V=kHIjPQ(w+_$99 z!eNMmC0_UwGcVW}*inR6LQ5TA=6$y-XIHtYiK?hm?t7Ej`R9Msan`jJ_ z0s$q?vZxZu<}-ojWVk{kEw#4=V}OB-f$7=$uz~+SO4D6~LQ#B)TMLozl5w?jEE{Y~k|7qm|iOT8i_LbhtbX&M)NFh1!{#@)Zj<7Y@N`J)K9D$Rmi_O)3P zUUy{R`fu;GiFiGpp@wYq&&B88E@OdsIo$0|Gi62N{y7-dKuItynBsssi!J zUkT*DWSs*pjNP^sIKxfBUi;9*J8aGw;XQ9nU{^M~vgGFjA%I{tJggFUC)mJ0>P}q} z3KDwm_<_q9wCZQdSxlG8Df1&5lf*fgwR7*QlT$=Pug7qS97icC3vR#vhwZI|R?*)J zzh_Q7mkdu%R~AN-e%@$@PefpRzP5(`*>0P^s!26^`(KD0Me9Kioc$WIT@|fFsE5pPw0;_Zr+q!h*1*YaJ|iJj zkDCl5tV2>99P-9g|I8+QV=@(t1o^RqTtwR=e0Uxfnh6to_#aay%Wnh8>0lrNyDya& z?_={v4J2z{Qw2iD>w;eg%kylmsWW`!j1lT!4%di~potZXkzF`R7N&HB4`ADGvz$l& zejaer*~1u1S<=hM10Ck6j9NN|SXJps6TmWEz8!;Fp zk2`sYR<-X6g!Tf!6vnv&pe#pdnr%X2t%5r%O)jgRNfpHECht>B7XJMXNQ{DW%3I;G zMUMS#PcpILAkij~T&`PlM&gC~{QD(q12F+Vy{9Ua$r{#X>i7+Ca{b1jEOtZ@B`L|X zd;rMdD$HJlLsudyPYVlTBji4P`zy*Y_8@hT8S0}mTBq6QJ_RxA6c|$zRq+!K_=s2l z(HA09%TPY|WKD=5o*>!;|7( zmq*C9$m72Lg4j+%=o94}gXCeEipBkksz;}l{^3`AdN|%RhC`*N2B^$Os^Po;skz@| zR!I&ytoAA(jj@?GQ#PX8OFbQC2D4+a?V1HQd8TNv2`vQ5j9{hGu$u|PwMsve_c5r8 zyReYP$>2C$0@HeEhF>-g8-MrhL=RWHnUM_TblcVOrIP?1NvZNMdet0P2O;&SSdb

o_H>H2eq;O=VtR$nn%?O9) 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 R{n=SH8aVKiQq-<36?X!%CMf^_ literal 0 HcmV?d00001 diff --git a/MikroMaster/20260507/20260507202001-Config.rsc b/MikroMaster/20260507/20260507202001-Config.rsc new file mode 100644 index 0000000..8fd56cb --- /dev/null +++ b/MikroMaster/20260507/20260507202001-Config.rsc @@ -0,0 +1,4644 @@ +# 2026-05-07 20:20:05 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.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" dst-address-list=\ + VPN-Server dst-port=13231 out-interface="ether1 - Unet" protocol=udp +add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ + protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack passthrough=\ + no +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add blackhole disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=WG \ + routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260507/20260507202001-Diff-Config.rsc b/MikroMaster/history/20260507/20260507202001-Diff-Config.rsc new file mode 100644 index 0000000..496f938 --- /dev/null +++ b/MikroMaster/history/20260507/20260507202001-Diff-Config.rsc @@ -0,0 +1,18 @@ +4298d4297 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4300c4299 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4301a4301 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4303,4304c4303,4304 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +--- +> add address=172.66.164.200 comment=dou.ua list=FuckRKN +> add address=104.20.28.254 comment=dou.ua list=FuckRKN +4308d4307 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4309a4309 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0