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

>KScBD7ks;-{vJ|cb9Id}*KszUPp;fHIM=|d$ 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

-y&^ExkmgsnEV z%-6kr`~P1|(jNw`4T6IA>8gV3l6~Q0uUUh%v-+JJr(jVqu|7xj z6EYHQgTwFCu)LGP(=zv#25+WSE;~H68I&ZHWgVbJFeSy~XN~fJaL&8zY-A75X#`-x zC%Hu@>1fPYWEgwXgAA9niXlCT`pR$p$xP7}`kS81>+F=y2PwN&tW|)ZYk-VTEcyyb zGi1|zQ@=bNT}e-#Xm1uqQwg)A1B`@Y2v49$umO$6&8U!iRSC@MSdqZPN+bC8Ys41%Cl~@>&eKL zS*SQJOouWr+@Nx4D1#16ggelzJhpLS5nq*ZPKWaULY@lEj~e+Ssew^_UXN1cg^y5VC)W%bgxX^%TG7_xdY;t4CNQBC z7QXZnVONYrdU^g?g!vO0n$#caxX3x4`_F zM$)Tq>WWv@#?}wVzAUEld|a3g$TuNqjIpH*^+m&kIXc1B%xN|Qu)JD?o=@xOM~+Q zF9x=};>z{Q2ye0wB$UcH`N_N<)UcGh3t!H3UH>`EW;M(h-^oQ%%it@yR!UNLMSX2h zPi*o2?rcnuveLJ?!9|k3|J0D(=8oud^<};7-Q?reoOlPd zBS2Te%np%w_{2~Q({A=b6O96Fz-cd1AECRjIaoPxNj%aaD*hg!d5HGSzj)_9)^YNoOS7 zQ%r|6Fq=I{QXq2WTb%#de(Lkhqd{$MZ@wieYokQ5ETq|&rYIhlx7<}2^y#qRF1{p* ze+H4^Z0i|?3*wsuuZ3}ri&t(ztLiTeBVB;t@Ai=jKtQqz=ia+)J7(obY~Ig0JX+mB zkpyLH^EbZf{Z@^Aq0^7y;>ylXUh@K`TuoyH$AIdp8m99hsq;>|O6yVONPN!5Tgp}y zT#>$L$r}EKtqP(hqlVnDViAk&A4;?Ij#nB%PgtaBi;g?-)|Y)kI+^Qt@>(;=KZUA~J+`2u4q=|IVwMKfPisQ|O{YW;TJVYZM-7 zr9Ve4nCO$&FWbG%$*Ru9@%*H=hlhN|jK8eK~-G2CL_m59n5aj5L68SUGtbk4A!XA0;rFUGkF`V@NC* z8P+Ucm}9V7?))IeK5PJq9t^U%^;JNKrRY3+Wr&o6C0}z)Mx&p`w)0s&$kwxY!CVa= z6tc7`FM0x^Kt_4K+q2JX!6U1!fmAlu<$R$YcZ+y-TSMQc6p17~ol?p|J)up02l=(c zrlRF2X}~4sI@E3RXq@}XPf&32(=+2Sf7SA^GHNW7HZwRNTw+03!YsWHPq>?;Q|Tg9 zjt{BZg-wjAA1vCsTafNqq&c2y6dq5Dr!*<4sCFU)Xl}r9S%IgzUwYv*lP2S{RNi7(~UxqXiV|{PB9eK{(zJl?FERXVof4m^@ z>s~9`w}5@Oe^bX)tKJFtwa*L>ie@89*{b0T*vP|7HtE0ulPB;ZhLQ+LbfsGu41@uB z8Cc%|#_0+DH#X;bRUYJl`<#0;wr9fF+C!kUIEl$bwCupBq!^WmAi9&r==co1g#f7m z{-CWk3?T$esfxy|85nTGN-iEoy#5-PV9Vwyh|8q6brlmkE}2)CO%HHVEcL9>`|vrI zqmKiB^Ju*)DugZK<1;*lAW8!GfIo2O=JCsvU8L7S3#C__U|Ku>6^OTzzgAMw-+Jnmgwo*S0X1325O2P_aA ztCtQ9$N!;)t36#l*dH)tZ(O|L)o%{8-6kbPf3itm|K;(clC}*Q@;GLoio%)^xmaH* zJed1b#MAl(32AQu!B3|dmffa8mEJ$UsQE)Rr%Ei1M};8owgBG{%C9ciWvm?67+)h zkM$#|+IUE>)4BZrEDMHGGM`J=!R6iIp%awjOXx2fG;6_m{;v$@8eT z7os6t(wu+iR!P5JV#N8~dN(LQ_hO~4S0GVT%{(d3c{;KYbgdVOYbku9P z{|&!&k2uQ%8wg27CA%xU2!5A45NtuVpfyICkKn{uqWRd7C*cptaudE7U zWN_4+k)p|+Q;>ONel-} zx&-yNP|4gS_##)%_|0|qT%$NZ1KI&u=a)q^W};StzuMP%B_D_po0n!)Nb8I_X>hYQ z89KuivG{B%EqL3b@=GY?@+#IMr*mu@GM@BWqY@$O`hioU)|Nl!9i2vcoUC^?Nn(Kl zsm_i!`yvz>OmXUwy@K$%@ zLb*W-SJfP>+zidcGk#cYO;~FI5fDC>a(`A5J%r+0s_jGdnSeAO>8+q5BB8Mt>2{b` z5K}<*k)N8xoMD#|imjG~QUo$=fPzTGde!k~Ulr@O@AXc{w;%8rl8dkGKF9?}TS0~% zS!5KHhlI&I#R7aZH1@#rZd7os0RPF9;NBo}|1HLi?V)`=ai8;gEQcz=JY_}}go+-d zhPJ|dJ9&RfHsbh}`6u=?Vj3|182XK##WXO#BU8$Tga%l7Q_a5P)6GYvvge_#`l=kc zJ!%js6%?Li)sh|GM@A{9F9ZtmDv_rzg=V!r=4+<)#HPE!+axGVDW|T_lR~4R#R)fA zodNe|l?k#6fdv$g7U&oCx5=+V$F7x#A z{uWox5!8&L=xV_G-}nsx_8`CgiEwz?^0O@+g|1`Mm?0Iq(%74%E)DmEW{;OS{4Glj z426rHdsl9vXmmNlT^jltlf12nnZ3OvV!En#Hbp+(qw1gQ1Y@kXyw9ou3$6|A;i`F$ z`oYzSOgZeHnswu_nE5xM%+aL-Q8KNS1dEjvKi)RmC6`tpU=Sqfe8~Ei`;#z=&vXlI zt10D6ap<;5etFnlI)1?tc9{b*J_8VGKmelg&pfx4gN)Plst z?JomZ-?_Akb0og-E>HX-zfEShgM@XYABe$Fg(FK~9rEF7Dj%qVltMe=U$;kBiTLr{ zDO+;9tY9#tOu8rVVAN9Y^%DhY2N$Mbar!eHG<2DGvBPP)$}LD%>ZZxX?1PCi)g=FQ zh?8E3QMch0z6N_*hIP<=S1K<}_Y}^4nX-+aXQ0)VFf6G~_-eR@f)DhB%ZL$-KeF82 z!#iTmP4DoWG@w9-*4NrkRB7CSGr~gXt#q8p6SybhRl&g#Hi3Of;Se5FCH9WW&TEwU zu7`@^j-XByK9G}`u4(}p#+Z!kNCHJh$AHI_F5}{T!bsy;^k?xwCU|dU)7rEDW4!gB znRx!>3r;7=1{kC%iruMyiG;q;j?rJVg80@67xGXmq`cjfwqO5nieem;4u(^Ap3A|J z#HDo`$E9iKA?1T+P2%e&6B$F;G>M$md}ZLR?Rn|oQpi-&kKn9HxPkND3S&3-G=@iT z5IC>Yb(iE#`D7EnzIDP;BZb)lJ^Rt0mjvm?4Xp5I`8D@a?;fPaP`-zT?tVP7ptX1^ zbFm^8W8=1ekx8Lj&@8}*ni%@a#FwJkfo$IaT%0R9*Qx83@k=n#+>8IWY##}z9})n6 zfBl$wzRd$=&&<_&OqIYLSmi=^`K1kZ^6RaFN(C|rS|s%%w9p=a=^Z}8tcU#TmTr#k z!)~c0Sv*o$I#SMwdq$~TPi7Wo^F(st*K`j(AQ%r0<6z_~Zg$fglyxR`s}4}sDtB@+Etb_6x{qbgd&MKeHXN~=8Ww<&jt=Jc9T}@xq~Xk zqDICg6`~#L*sCE7qyNqSAL^R07$M__&C2t6frs`$fJ9@XW`3w_k46A$f_}nUfDu&; zz=ti6k$Hr$x!k$iK`dy69q06ZjL&o~x)7p0W5b|MD-LOkwc6YAp~JYvY3WU2O!^ET zXKruxv?Y{9b&?Ze%gaow3J*j}MJ$-d+p-PHe~Y5t)gaE=!>V4j-11ysZb4j2UWhMs zgvEnN&SMvCe`(V->@t|09*-+osc~AG3HAHDIX?gOPQj%8YhF>DZo9&dZEJYPfL?Ke zG?7_<Wf^>$0(LC#2g}UJkCpykc7{!3dPUeBcf!@3-Rcm_Dw65?g4a}HZO_0l#-Ge` z-K`7+p@MEZqqi)_3gFLxZV7m?!eA|0MV&6X6CbpMb6CHh%FYi3pli%w*zCJd7b9%J zSXpHv(nSlw(IC6+8Gq}ph~IUPw0l-EkB6g)YJlt@PkS-%iKcW%z#vHa)2g?oEvPWopJ{_^-*~WF9k9@Xd+%%tH&wCPSh<2ckN6E8{-B$WnZPvTr zZ@&7$4&)I?Y631E74I=GT=NTvC%9jQ!Y~6f|nyBNSYCpL*Dd~6b0 zSXuIQ)L7^l*?r6e77=Z}Pf7RD^IV%H(t7z~zoa)v^}zp!I@P!9HL=Y3S%?H>eHaeX zMPci^NpqK$JC4E&+hJ5A#H4ZnOM*yZht!PXkVY|!8iRPJZU!|2;1AkEeRUlfI+X6a zmnLu$Z~fRP{KQJ_)ZEYwjtTz9Q)P?4}Ac)`-3Mz*dA(@t{|=A-$mjlEZc^?#W1y-Yf)qH^?H zi;NUr7_Yi9MnRmqN1>5KDSIcm*YdJ7eo1Hxug8%vqzNaWzhCUEld_>4i6l-1t<3K; zhmxQX<$sF_(p3LdhdyrG4lDR|2*g<8Mm2tkS&qFG#>v(t0WxjEv?$xid{p{ldfd%W4Pzp9o=5?;lD}oweN<^;6*ys*^#G1D9`cpTj z97(t9*z4-+lvaFe&QwYkPHAvgaNJB1<TN&K;J5ZTwhI?gJs|JPj-a)H%Uc z5J{3&48Sw}9&;58(|IEwF^#(O02k5?#os9lp-MuknK*R(Pk4<3QDmLpGI1(m?i{{4 zNAJ%#1*qt1&WU8cK*$qHsI>R|S!68B3H7`&pJ`#?z5Wyi!gvhI{r%YqU;bNHMPFLq z77u$ZzYrfxuMM|uT0aJ*J3tjBfP}dlmTy%v@Pad+YlsAYfGgXxSGa}g<*Y_B*dP%E z36VqA4p*->E{_$e3`c#_+gz9*MTrWLbL>L&sl9rfRK|Y`CO6I6>$ZZFL-3E#80#q( z*!4WCJLQM~my??mo>8ksF(qC=jZ|J-N%QTU0j9mNd?^xgSHCi#tNEKkp`OgUM`XY# z%PZ+`QUh}~=^4_mrQ*8AlIY+ti?J6cLd|+LwL_}q*BU@@0vn3v;Uw!2L^g}3Z@GN3 z3Sqye5fY0j8&DPXP|>$|@tScn%z*F-)lh2Wr;sT2@u`BXN(MTJmfgz81mai6M?L5# z-dZJ9Xr@HB*Jw)=-&=A$MZLL#+s64IN-?h_&a+6j zjq^6lK+0pqYd^bKk;|J6q}cq;znyex(JnH-J{J(zqOi;wuXEl;WsO&r45+}*L{2_H z8dl^P5XHd^D!d8tc3&gB0{Z-U;lv_nu{pbPETO#OOX=(Ks}9XMF`7^jx*?v zH6q}4i|fW!hGTGIm=l@Z8>QWxXI%ESbp@trt(f6ob30>EpKj;eNySmoieb-ac3rOohS-mE9Cz zOb&LbLCFy<&fF#|@IJY*;B2b7;Ml|Nv(*mS=+E;S$PBExK%!NsA(UKws@o1`d5^|&Zgj>0_M#qlC+^Lm0prOe2l zGwNuVckIq`Axj!Ok^>%qf;SX3JeEj(>Ar`pi=|ZNuX}^(2`lxMQuD2ua9?eKhG$IT z6UNUxCbQ}JzsChucbgV7O-Erc4g|bb!Zf|gz_=nz?&8Ic7BT6D%RJ-^doyG(k6-vY zyWQ2^(oeP&))$v)A6$G{%eCh3-mp19D!G6iCFV;V+oGzaKEkC3eEIbnOzIe(11N$t zk|{R#f>NuriHw?GA$80rYxjLw^0H4{9Kj+VfUd|{SKK4<7{L}({8p0U>-&p95|SW> zlZ2`EIIQizbU>Ay|B2sHhZ-qokqtQl))?V)1{LX;5EmTEo?%IwU!P~T5d6NnwwUwB9yp`9>#lC zj6zPq+7jGyUYCv;0~jm zP`!Q+k348ZzNGxdzlJMo#MJGCMBH0v*bJU9dXcoI{D#D8fQ&(|-Fl;omg|Qf%yzn} zj2$OURM^o-YIRnW(YhH_r#-MqRw6u!@mLQ~x**rXRT1z+hpqU};61!8U%vLXkA%v_ z-O*uKuap+JAzlI)`)GbK4qHpbI4}Yitg)5?YnxK_^u=@yS^#O17;6TfmF_sb)Q26% zBLG4?cmf>oL@pBl!y-|2ARgwGvjcN|iS-x`Ix|6?ps#Y9PqMuni zkshor*QV6pG1;yk{RxaQvl#s9?;7e(=BC{O1>>W(b}vh6@=WiMv18~Wj8f%w>@ zommNO#Mc&-WFc=zbh`Ir%EvbC(IdkR)-%`_6)-$?$3L6 z6q|--E=p~*{oogSWSL#hZ~SR%GC#W+&qVOaQi6W#@RzTV-+@`hA)z%+G)WUkDs94u=rCUOrHqgD! zA@7rRs+uUo0PF5`rwBNtP1@J1Rhl@riUEgDSDEHhRLdH?z@jlbUTg&WVePr5;iJ}_ zF3MkqZI31pfCzZOq}~y+0*KJ~mwXF8^%1u8+X7tV;X`9iP97{)9G^{M8wx-ly%h2N z!LmgxR|L#0W#A;Mq5BJt zCY#4}9&mG zs!XTMEFS%v@VTS7;cJfMYY6ipCwqhA0Ncw26{TTGn~&AU&+{J-Iqmv+#4&O+DSb@AwAA z_rj)26DTc=w~2bdsTs81e#8|3*8S7G0(yJX$CxAjGLNQw@DEdA5;;rg4gq8l)X79> znq`NH_HkncMGHJxZ0mDVK=|9B#I6UbG)}*m2&Vuw?7+F>cmSsQ_#)Uzl2|3sb@5As zBkKD*ytcc;J3n#qd*m_YQ4mz~i!kl}X9ErCsq1XpDw~MI+gL;phKW-PY6J2Y?4GN^UU+)JboB zojSoH2dHqE`COCT3hXX`3c^)%tdYilU2caB{$Xw_R;-m)+uQQ1ypcGBLwF4~uXhEP z-o?uUA3GmbVbBx$sYGutZ!~Hm3i)4Pvc^rTrgVezTy733c_5SV z7R$@w<_|jpP%LO+0L30ej6N%K4&weD2r#~^gZN*TnKJVjr<&rOY`V9c_#%&hNn=cH z*o#BF^O)4$>hr(^i^bM61TL;*&whgVAoX~=S8}o7-w{>GjAa89hflK6!#Z%~x8TBk zhy%Rnd@3e8)fw&C@ z98CJW!hueQB5dmC>?*xpu2RM~pH`*9^e5h={@(JAvUW|wh#c?FC`^IV^|Z`PipQ7MR^CY}EUHZiw(5lmPcx|V5eZ~ca*Du0qH z{_UQW{2m@$s>`2DZVjjt!EacLx0;-gUp*xU(w$Bq?)R8glm1*5RKvc<;0R7M`G}RY zT&lwKKf-cqwT7Mkk7yHbZ~&*3MOX{Ft0DMIzs^~N6z8ITXw5J~k)LpijZp!y*!~ph zP>8Ui&cynOW>K0OadIly@$7hC`Gj@IjJnsLShIv?UQ4e%d)9Q}O%G8h%Ygewcl$`G zTqeL}j_*<>eOU(a&mjN{LRWpu_}HzfUZ@g#EyPk_`W*~N6c?mJYNEheU2<1?E}2#rm2XrA#b)dy5^U-0=M_Q=W$v=x44OGNy9+7Y$cNbhVw=>{zWf< ze28^L169uvTqrBt4>qB1wTOlrFpCP;O&65NOd+K4=>FUZYwyX4V4G`yz*FQuZjlY4`ck%R`Y^`Qx;^=_yZpRif$NOkKBOPP$d74_K`fBPH@D z7ipkcPb71SU-ye>UoDks4x2{y_Lehu49jdYP8P&g-}><_KVy&CTclU=tEV=vMdZa8 zs0M3j6w42)pEY++u)F5|6^#otBIxXK_=ehku3xx8rHXz<#-G@d$u#zw(Y~iwB8~yf z`pGZpG6uEgb5L#X{FI>5f=p6&K;peqKNYuJ;~mMDWNJaY^-CeB)} z&h<=nJgLVm|3vVXl?_U1QjfoEDiMYYno$~og7okka~hX^_QaX{wHdNo$Mu&r=A=_4 zYsvk9omX!Z5a|fsK6eW68%NyK%N0P*V8w$mH~^r@IM14AvLF~)@+nqq2aE;`k$$?& zhQ{Q84@}pc!dT_dpe^KI-TkDpQGAd1*12xBdSLBW)^Nky08bit_B0Al(;0rzse)n1k{tPZl zTd#87+pUDOHbLTZHdm8;iU_VKekFy=(Biyo0EVoc0z7}vVk5w4?4Jq*bsv-6pYa9? zleM$@dTZ>8v@qm%%lch~^2G!Eoj4}Jba_uiBe}*rpF3*>v<8gs;#Q|@`EoL!8zIx`N-X#)hrW5GAvz@!TfL5Kj0{E&D*WUk~* zB7B)qd8|27U_wRikH(C)jxtR3!E8mBNY#;dyZ?D~)wN1b-FRdujh@BUwwBF~U)&U> zF0ZRlxu8xDQl7rXvzcagUb%7uvTHq922dx9(U#lhs#0G?D5!KXK%4O#LP79jRDut< zd4D>4v6E>=C$WhN#nI%s#vZF_p-{)#dETLBAbT zod;e$vd=?6@7WYE?J?H%VOMLceaEGt^>`MRL!{Xcy4`ai{!$wFp!@Y(K@FH?@%=FE zNHg8hrE%eO$2!KhC#PkOEg>#9NPO zB3;JV^A!L;h5D#FI}=7(J;W~j5-stWD$AAgyIjHt9w)Mg>sMQd0RKM#zymIZ1%U74 z$|BRXG_bp&ZuVF{NE=>x#z3fXu*IZBr6%*ei8$~Nx}4tZ;4&q1eMC(s=)9&r&W<4s zysTzFs&;!-&^)3>=9f#{&?RAk%LN2(Q?OVJTpef3L`A;UxzzbZ2f;d4{rX2RjO?Il zZI7G-f?rGnSE1Ic0ExbP%a&Ezl8yNI_C(jVV?J4mZmTtfW@x|`Xw6>o2I{ZJi0WNr z=Y~Y{MWIzMbmJG4#t5A@-`_|anE61Xi?d+l z26N|$@X40Nmr3zW!{CiU=ER?6OM$vtgEP6yxAF}Ltn^nZ!BE^flnkO2D@1!p&+QQF z^2n*&5%i!+CvWmin*G;#`K;Cy){I+0kJ4YaP_lH%Qs_12uRL+RSr;EV~>)UBP^~-@nD!^xycbie_y6z1 z;4+^RfFc11DwX)F>rX6dXF8+drXH58r{%$NIUWQVOG4gwFhTq#`3t)T=gQ2t1ByH) zYt@&uVRFe1DGPDRXQfGyZy}D^KRjP4gYyVARvKPTwajl%TK4kaz8Qr3Xsz%xdA`c~ zvt*eju$5IW^QO)GXT|5yDrLex+(M#Ybl{%_TRWr+FrJL>aWE`!Q4pmB?@_m-8SpZ` z_M8~!#(8jv09d?=W+N;$+#*y{R#ai8!_!U`Zp$OZY2j9IePQ3SOn&zF2EN8`TL+Ie zYRJt+3Bu7^IZhc~^|N7PYzgH8(sF`e&DoBXmi#TeqtDCwEBuZUxr5+I`8$lPmkadK z>L-_JT%cgxYxP$$xh~qYtvm=D)OQARlECndwT7SSwN}BUP>g+}YZG6E9H4kXxFLtX7hlggdB|Wdj4WEn? z7%At+=&M=Rp;<_M{$LK1vr*Txs*HCFA+&f(%}Zoke4e_w2uH?ALc1Aipd1#v)OEW11AEK|RLS7>yzWJ)6+M{Y2l@rCv?LCD3z&0S3 z`z4?K2MRtc`7n*rVd>8jJM|(>*)IzaYmam}8iHCA(a6aq1T{zKl8v=!wK0m;LT_as z?r>|3F*ap&A{*FFN6(?|9QQ2M=xgjAReM&rU%>9IahH9^jI{J3KcwBCP@% zzk3PhgVf^1 z({&;1gz?wd5ew^uluuv}rReuc&;DXCXpWe4-9=yC7q+8bZCBpuyJq<^Sqazq4JyTkT?fZh5 zMUz3q9yO{@ptoZJ058c)BLb|-d_DAJ(1`y&I5gy+2ZFy{=9-xx-&8Kck04|t*^Qx1 z5VU8({S6@q`+#{FX@AfJvoDI`|!O%nkF~t+OtXr8g47t6#JaN zb`_f53B{>*HiGrgwe=v$;gK$f}1CnTqKaZ9Z78qIb+y%dJPB z{I&wLoU9w{EI`hs{K?`97obhl&NQM#))v`z5iE2>waThT*5anQ37NXzu1<72yTzq< zr zbSxdLnem)gKey}Ev|<4|jpR3I%E*mIewfa1VzV}$`*)eiC)xI$DuI#(J@}cz(o+4h zc+mmCMbTYMj(Rw9uzy4{hQO>aiKHMzI>+=)lW)Hi{5W12JDM*7Pp3w#a+PV*MJv~4YHj=Hbwy^JQ>T5+u=NO9a>VU? zFBAF0*|>R+tCkR!n-^5eiu`_5uNOIV1QA%VxV2Kxt8>rN3;&px8+ za$Bmhtk2%m*Vl~uH@?=miui%Yw>s%E{pkVyL~aSjZs|$3X`>_83HeA$H+G^^e%hr% zH%e|JPyw&XcKXkp;G`;>ZLQqg-{~T_RIOTh5y8pl)tXkOaqK}AVmf$22xB0$k8XQ3 z^Wau8_1P{o zN7{4BW;4>#!K_SAH#0C_=I43*8PjNc=47o6tG+LXz&-4Y2sWfSdvB^%a2TjG$J!?< ziQ^@+@>FHj8+Xbo7AioG-HY>jxH2CNcdmFa+Hb^c0U&@?%3O>Nxa-OW#)R{7o)mTD zTsOY8xSszWm{o^Qze+UITDPFR*P=OfU44Jlcbr- z?})bH+z{1m5I;<$#iWOZ_ER0`_=un*E`2C+PEe$Zw#|d?Sa`R8`b~?w$@4@5yJSJN z-FMem!Mh;ib)mxafk7_-3JFaIW*_b!Uux3PC)`QRZ%|~T^Qo_duScR+Lt9e6IPx}k<#X~dC6jfm-h(k}nWt<4IMJ;b); zh05&BC6}M%K~EWT>zA|lSZ>~ZdwS(Ja@v-j`n3GYg=69C^xCtQo>#s$1E%jYpOYMq zqpzj_m@P1aRmWJnNOw`bfk-z6eQ_}k20TzBb9!zr2~!P(Ly$Xpu6 z#8TrY=qr}QWy-wk!|f_SiYy$48I-^|2aa$Q9*#Q?;QOI%ReLv`eEwMz)dK%{+;S+{ zK5Mv&fXf9#JYNv5HO(MRE0(0(T^N0NLXx9^vSH2IYIP)N2DdrQZ(Cc7#CGbY%SZH` zZ!?Nn?dq5W5?@B_h3hOi2I%hoL9mdT9Lc>PFwSYFTN?#OEnVx6s<;Ax&?M^-i%tB3 z1Po5RanixG+t$qJ)_GUn2)8XO>Ku)IJZ ztQd%mo(*wvU~!CQJqEVeUu|JWvc4Sb`$tb>1|(pC&Fwc{qFr8M_RAW!WAwy!xQ71W zX|0kf3;A#TJg8wAh20WNHoD#8#EXc8rgaSJj{2CngZy@x3oo%U(5F{BpQ@HK_PfPS*91QK(F7ge=W1+Apn+8RRLVH)f@i8X52f(ZJ8171@!z2fPs^g&1J^J9I2JT*`tqwOH^sU_4_6;TqCbH6}!gr1R<+1eJ=&Tv;SLg$Mh(o zSPwEX56nJi#K*mP>C|@-A}z5R+`AGYpNz3CpL;IJ7z+2AfS~Q7&Za5TvFQ~{5J)Qm zS;=n`Xd{M=EK|`nHGek3Kk4psUXS0C_9#jgV+8d`=TmV$?TW#?XJ*|*0NEX7+rvW; z>;%>H6?W6$c_+Ui1rtH$2vn=7QyE6#nGHbA?JB6VULLmzsI|MPbtaGElMg2U!9N^O ziSN+N+DW!(oq#XtJ5%-##}6HI5XgIl)VDfWH#k~~_!rWa)6pAEth*#%RVXppvVl(R z@x6AjQFnoH+MPN|*NF@M;vUVZi~72~0N$^Q48OAUjG;&eoxck<21m3H`82&<+22($ zPXF#8fumMjbw#>Sa{BYH8PtHj?)=aWIp~rt~yF|Mru#MVT zWO9E>eKpxA0IHEc?jHaCj1PNBJ56^%tpG zJnQIZJ(cDFzX|$|4O(x#hFmqDl2?S|$Gswt_cH=7aClcU>?`)=`R%Xz-ba4|FaN$| z2ph}z8bDe+Fu|TrknGo$3w+QseSuGyyDTpNUa0#pO$s6eU%9g4<3F=@E-JlA8<}De$2F;}ABc2%7XdxjypSp^AP5q-PAZz~+hAZ|?ke@R z$tajV zJ@9bTD%gUO7=YfM69-4XG%b!}KJWPcT%hUjG@c!03T0lwTlv7<* ze}RNzreiaEDxJaBdOtq^=PrYSQJk=P6ueR&cIT!LVVci$Q?BO$nyfd2@nV9l*eG&1 zgP_BlZiM$30pY9^(7v@5Ti+jJT!#lV9rQ|mecr4Z1xE*j|MQ4N8H;oJ{v05T4w9<~f}yCv$Eb{f zEv^ z@^1e+5A^YjF4x3?GzfB1mY8<>h~@>=fqNl*QBSE}`Ba^(E;G8AMzYN*wquUj!hIIp z1j0oMy4vPYS(Yv^Mn%1&nK~#4DACVf1!VU&%7^y5t)`Te?7TZk2Y6IDoE5akVM&M{ zCs!`?&_gteaPPT6QpEax(IcBMO^1tFws=~XuMh-Ee9L8EBE<&S5QO>ASoOnO#U0MZ z{yVcD8@4jI?PnCl@~)7=8yLJ<)N1H!QlNj+oUVwgzWUvKw-3mL!6 ziyx`m*FfD{huS_Xr1xE@*erK`w)?xt#_6Oyga+}DWi&VSLw^ zmpT5PwN(h|LaB@Ijr{RBuSvc6b`OYgo!=x776xox41GJl|v>x{IX=8TNFd z3v4l;0iSY?LIQgqs3me3(>^$~=Nn4LbYarSi85!8t?>juoO(NT@=O<=X5EVhZ?Zsh zC3m(b*)A1>9lSps|GKnQg1H_pD!Y{~8MIK_JQc}`S4^%<@8YsmU}nniLqbl_PFDMp zjUV;2k5PqSy)u{Y&VMJOT+J3ri<%$_->pyg3X_zbW(5P-pLV@!9t&5lQBd=+cKMh% zQA>8gx1C>j;7TvBXlofD){yQn0?H`l)MJ56`l);Y)=>rgihavEWaznJT4yXa1rry9 zZ!QMq)B%{@_I01Ed@Wy_6CG{R6*jilr#=dwyu?a{LpU_y3QNMO9V|*teR`hAszXL} zHNKD6h8_-Eban5|mD*|mm2I-Ji;LnnTYxUGjOdm!Fh1KJf0Hyhw37tjHYxZ^O{^;K zOqBAKJ`*^@&*8mkB|=AsEFpg#@{V^NxZv-T+prV_-}ZPlH#+p*68NQ=&;_2dgHiQe z%mAA709=VbJ&n4De_=MRMxaed8|3D`8_?|y81Cnnq>z<^YxJv^WWz!JEs$b8aVJ55 z$l_kD!)URU=@RXrkaH{}nm!Lnvs|}pI76M|NAgLog$dcN?kHt+sc|{=&B_`^eUhy( z_aoeWE0~QUDpopCjJZ+kXFeh1a!~nj#t)o+xw{ZWECVcg1^g;V7`Xf!l zlqHY3v}d&*ak*~|=zIJ`Y!D^LpD_b0+(4&@>VFIPvl@z6`9acnmm~FsZcYlIijtV& z^J20EggK2UPV#^~D{xk0!6`F%2XT#HJkL@>`q&RMR=-jy_r}owFRggHL^cR`=-Agt z01uTxS#EeR)Ml}KtV6eA8fNG8J6Nkw_n;YVIg@!XnVD56E(JuEtIsjy6Uhb!SvpSl zJ)KUSOsYPImvl}9tPJJV9_{qH zq!rnED2e#>6Ty;G++{Qt36t#devsr_b=FNaB7#;ajySJZ7oM|EA6ZII7m9K}=cy#J zxKFFTWG}d0LknFS%$rhH#^h`0)iRO$YyzKH{H_bmW3e!L1b@bo}0@#hFbU=)Qv$S_~4Xs*S`BO%<`QLR+IdMzzT~>^|IlFUxWK12ws10HmINzo-JPapa1 zQBO;h*%ROLv}( z@wJ*VZ_;fb`6t52mheR{TtK)rTqjY_5_$me-^9H*(J3_G;lD7jsdFMHF!q5Gm&fMc8Ccyq}(QvAg} z5ybrr-;xSK^cGuLZ+g)B@aG(52=#2C0dHF|4czFUI8%(}8i|G(o0|0Y;xp<|b77lY z!jLnG_Ig13S8}$GLwG^ij?T8J3C#U%aanXerR`m|D=arCW?Qe09tx~Bab>Zhlp0ds zfI{L%G>&?oB?sz0QM0x%Tl#~huZIh$4(iF}X(vxS2R3DydV)Fq{#uf+nmM&QeEAN5 zvg-uv$J5IhU@tCbTDsu9)%el?ZguY{i}i@9jf&9#Wov%U;uG}GdcWC^WKx5Qs3)A2 zNX|(QGqR=sO?!LQbphItWCQyu_U#yHsh9SfQn^h2PeH7pdyfA z4`#Ykw?2LJWcUS+x^nu|%6gC#JOPuJ`L05tkhUOqbg;@&%`A31SRFS$4xfJiCyV>_ z*in%*-NJ`^*~w`dS$2M={_68*YX<12Y<*e=lQV_Rl>pYlUD`EB3jsEuL;dh9U~MyB$M>Y;ut90S;@ts z-z8I3MpZ;1_3a8ctko@=%G_ISJpy|gI~=uaZM!kIO&$HSw2^iL9^mmkm@eCK@pIIGDn)i>>K*qHDdDmmro#{8l51wz^(DlRSR5D?p4V)m{@s#vUq(zX*tbz(51AC z+=^kUcFpfd5f288xu4 zMl<09kI8qjdrizEWBauxD}M`b=0y{p?e@1Ha){cL1VOJRlB%6Yz(s}WI67yZsP_UO zK8D*$4o2$qz_iYFliW6}s^G@aV~te|3?$@vEWOVw`maVx5K>!uL{kY+I$os<$D9`X zH`Pw$vGujz9Bj&z^CDd@+Z~qM;zI?}M*mWRk$a(JUq_5!Js=URjPrGci0|UL6VY^& zpgh{!iM`O1o!)VQ-h(wdedKndwQH#OU9`hpup} zq2~uao*u#|{+eBU+#ut~sLUM8G)oucO4m^+?EI38n?ej((FSr)F_aXKNd`G*s0pl@ z5#OV*I4;@RC%kIL>bEtb<5gzPPA9Otd%2S5)I^7N#YN1sutUwIsv}_BQE&)F-SkCQeg}R3-z5DL+R>ixM}p#{#K>Do z(6*W4C1(&KCiXyS9%A2xJKAOP`?#PuX4d0_#?*9}IJJ_eSwmWqJ&~Yll_>at#m4#f zfqi5xE`^dy+gnS!4p>0sCYosd?oEayrZwn*Tbp=KIov?LzzQ~N>x<)XKpZUYAkxGe zdQ($&VoF8Sb_o`}*DH)VZB&6k7NK_FMaH?WyMS!)U0WBq*Napkj3*eHzqk>wf*ci8 zyc;uxBFJBhROm1kP`im`w(x;3Zw=fM4T=W#UA3hN`mYj$@FNO^qwrQWYMg!m*dzJw zWdeTOwwiCQ1rHx@Js%XS^9I+45)W&DPR%^VNV@qYL0E_QDs+{rc3yL*lnmu9<_@wr zvi(x;I{H#TY+&>LUCoX31$vzm)g<=9pktE<@^O+P5eCH?g8sO|TNFR*7Sz=kA`O|iNQO?!n$7&7k6WW@>dyPx zno1;$cL5j0a`5}#mU*nThTf_f`biWU$=@7%z#U!L6WS%4cLGq#luGHDMf}Lqb*3thRe;q*x)h0QJ!!#=eK=Gi#P{ zFy3`eI}iTnMtLkkv!NyORIhUeu1VG*rJ&buieHgm!2U=fujy2xX7qgSc>R?hMV?ux zdZ>~n(tWDD`cX%uu_)sPv}bOm>?PE6uxgG@6C9Oqysf?8_WR$m|_h_7&@8 z1V6spw5Ei@R^UZlO&qaw>((W7dd}X;p5U6^pT`k=5}wX+N~bC4jPmsXb_hys@bs0oVQ+IGC-xPe)%?P)?sbs`0Bb};WY%sznTPy>zBJhO@+B-%6ff%? z3|j(IqN4nsI`c~D?NovbmlgFX(?#%~DrOp@s^Mj}N$!qSO@N9I8)lJ@kCwxVprw#X z44~AnVojfWARZ*<+?p}=S%O@*`O9Lx;xSo{rkqi^hCC7a{?`8$&Th+LoGQ_I9!S`r}N;)JLWn`ctjG6vG7@M%p#?y zs2$ce%TA5)$pwuN@CP;$ey)Qa|M~13dyppul}p_stFOq!t-nKrc=Lc%K=on(G9|8s z98t;5FtF-!i83(l+0dO@w92E2IBdT1#2sO4I#DRyglch|3fD6&@J8ZA%JZV>87b!~ zULCE_Z|8piC5QE)ZW16o#{}`dOdW2j;kbVBuev7)RnV$cS{5oZyr}~h#)lh6sm}$# z8FIkO;e*UzLEo#s2%me|Xi-Law=AShWSao18jr#3U~cV7F;L^;q}Rdu@I6 zT8K>$kPNYrUJ6pHeI~Lca6%M464rGbgI9RI%61jq$8QLVf=q&uQNmJHq@P0Mx*|8Z z_u#!`1Gmewi|#pyR_q8Mr`lVK?||(n(MP#Aq;|&aBk3J43wc@hwU|FxzqR%_AYI3^aqNUiA7Vl36Wsi>JfI_k{Fh(u}M@h^r--5=CyBlR+L#?mHO zaAO;{;Igx8S4T2ZrBLeR6ww@0s`}^>PQ<0znY7fA-;#FdX_YB6ARr50qd~6v2P~Y| z$YqAMagmFJB+9MwlDWyqNTrcESK?P`&h3-k!FexGmmacJM(a{)<`IYo9il{F8|X>k z?Y7Wx`%A(*db%=MQPdf088RrEy|hna%ezJ(|55<8?l|B!yQ_LE;R{SRlTA~E-UoJd zu9c9$baT|-?0CZ!h?|h%_%u(Cz1&-GGS)6jpC~nxD%@cRi!z-~&sjEYWlyP%MJ&NP z!1V$oSq57s(uR6OPB3Y*t_|71{h!T~QU--GJQC|QGSkp!fu^+XJVCPyR5G#?W`)T+bb|Cc6M-@LddKd+KI)S9q266uHcT0LiN z8RwLmgQNgs)t4}z^%N$p>5A*)ozEv}>OKXztK|5g!j6li)S}kJ;LRoCMI|O?Z4np|-Ac}m z%S2f#++Ef(sUH#VWbF9yr38aVZw_bqrH)jPF8lhehvmD=*ZCP_=HZWH;1E_TfM#ow z6RgX_$)$LJIY}}8+YiwIACT%7=J#)%g1Lc&a#zP#EYH4sn9-{QQz4FV=as8V$sPc+ zUld0M%{C&jsW8GUg?A7F`u{)oL)RtjmR?P$>uB^^?zV_gs$jp5(-0tpDMTx5+juJq z9Y;OSLwYf2@$jwk!qpT83aW*_aLayf85Fo8Rd)DqIJK70(lx?BPVS+)^rb)61!6IF`RI=9=ql7etsw6uAA%Xf5$#u)i zS2JD?Id%p3Ss8V~-z*N+1VhTz&Cw zyhPy(fx)wACG6orl`FMU0Hk@?Vd9`=>DvR>}wfWbq*3ayorY6zV5fu_bHoUW_Hu1Lg>Zcicri-czxAClR zVWBA@@-vWqk|yZW!-=N7QL;QxzR`ZSW^iUhAjxn@C7YRoJr@F)XI0m*$c`V8zkwge zT>6MbfVK(RIiiqjaPm@au_zOPgcS)t9gLR`ONeKLT7CBL5a)LE%&Ri|TrkE|*zof) zdeSD0GgtyKnT4DHx{joro3~+Cg;|uYv&*e;CR{K6MoKrpStH zKJ|Rh$@*PsJ1&ThPEzhRjzs~1@@K>|W!|MfYYTT>^Qxq>k8G#gAWsMb6IB|hSTC7n zKmqLs#_BMwdV*ppZAnkap*W74AG@M+51GG9EG%8oi4l1iylW5~q?mo<33{pNtU)lxi0s4RG;OXW8?Zb9I zhFW49r)*F7LJu#x@IcLURXiY~7n6L80Yrq*R{cecAsf9DisD%z48>+oOkj2q7PMC~dqC@@Y|7}HCLQ54rh1ul72J6xC6)$-PrrC) z=cAgMV8w-&Xb$XE4o6xJx(Uf$j0`J&EOVthpez&Wc@HH`A4WI?-A5^H*~&e!GtCf} zP|H)r7hg;UON0XvHE~Gmr{$im6>+LS2a%SUUK(Y|h zYyt~L3;TUdrE-qEc3V#ujQPbJp~>ne?anzv9jGj|g@ApU26;qaah)eSQ-(IYEu-0} z9YCM(e6oA$c?fZiO(?kWZg;bQ7kXaILYn*lLwq(k{`^QyE3JvhTvt%1D#ruu=dH+yUCPfxjVUvT9T$QxL~azE?>Ejn)YKz z%CNV2T7lHk`HG(?y-KCQ5`PTp?Ofbk8Qh<1p()st7B|9qh%Yj^qe3UCZ-p~K>fWOQ z6!~X|+U&r-De~!P{3w*j(_V1w(e!I7Rof!A1QY&@P@rr@n&p=A`kh&=pdDI)m` z2gsx_&0Kk_3E?C^|Hh(s7LaN;Owf9#tVO5T0P&EO>l{Q^vQfP%b7@6^XGg8S*$nOn zf1no`RbVJib}I}i=+C5Vp}}TrU6WNCD`TTL!zu~jjnESRj6>^zPyJl)#BfUapz(rw zdT)v2n{-3iy2@9iOM>KpQ8vdtxnKD#JwaJ(3@oJwW0wz9VF;+37QfVHU^7#nPW*2beafN)u-_BvZ5>&^NW+493oh@_{--&^hOZZK>17?(ZtrB^#KprFYx=1~(eQ0* z_qrl(d=Y7`a-*`FMFGd~xNF>G-gyeT<4d4n#2kD-)r$nw5;LI+Mwn4Onswgh->xuS z=X0IE*!ug=Da4IM$YUB!rZAd#&5<*!F=INZ*bW;y%@62WHW!woQhGb*i|X%?V6kb= zh-2wTe}JmJKe}QkTf8d4%z9%>w6||jrOhabNgXXd1J-p$BsUkJH6R@^pPT64;)xw=F6I~HD6Be z*w(kf$W6;1(PiOjMBS!Z8yaqO2YnK7Z?9weNXv6g{q9`jCM@` zfYgKGQ=2DTr&z^gF24AAauTSP3J4)v;lglJ94KwDV}0Jq)ovWjJ8;q|<`t%$1HFE9 zX1H3IA8P3xkUGhZG1Ncf!jw%hJGWPgy*v{B2AXzmOLGxQV&mU2Y>@q`WZ3sYj_X7H z;^4ZhXunw>|4)-!_>1)x1X7fB2T%N>km%wb1KtJyz3_1N)`^oJe6&qt^TWv`ZwY&odOm@=wAw9s) z3}!f&ZHO_CgnS4gn@fR^H$x6Cw0T z<7Y@1))}b>mSv74`>T1DR^!;6;F9I?JVnu+w7C+#B>M=D~Y(Tb$Ti)=)Vw_Tou8fMZOuW?kVx-vjAJvb~!CtjQ?$1rv5*n`nr9c#x zt7bZdn=C5VgD;HKSv%>gj~Y38M_Qyb;HJhbA22JkU1$6&sxsqkixSR?wg3hR2J$Rl z9ri7vk}NilFJpo%|7m1cY7hk6)LBhjuWB-*nhZ@wzYRf@R`HBaCeR2xB!!{q@% zx!8TKy%29-SH5_k5 z(1@(uOHO#%%2FjjxUZB%?cx*g8QV%n_oEwLP&8jik1gDmeD~Y6;qO%y;}>7f&UFeE z(alHtec6E6XIu@Ck%urL?s_z@=2LBX^{SXZ4hodC1A@m1rzp(k4AB>Gw>F{X-ln7X z0-~+&)gu~)flFo(T-t@-mLAR|m9FgNiZ?r*pbV!Ga_n7IVq(zH# z1R(i}uJS#_Z=#*87r=dC3aQLo9jScM)?$uEo*`9_tF3pTfH8s7HVPw6w(!Fu==#F zR9|xk9YH`O+%UasM5s77(bzc1`;-K+&l)2Q|4vab-&m>?C6zf(c5C+;%nnY}YcDu( z#0jAg@(S?w#65~~hqgcML_2fZmo%=o@<{ohhD6WV(=fqN-;cR$i%f|rFtj&zD8P+9 zUFd%VtK=rmySa%nWPvBr^H2f07UhY!sEtf!z_lk<{v4zmNPG8nEE9wGB!avEWcktg zs5JI9dg3gH`H;9=Fj!&fVXHs{!CJQxJA0LeYwd&r9&bfBHCJvj+?2TCl!95Y-bnQ` z&!*4^SrqFBMM=V%YUf;ukecK7rIaEFq0#w=jY!oS9FDa!s5@Kgw;06(+lu zR5=UuetRmcd$vvha&I=q9{2~4GE4Of%1$^BPDy^UYpsw(305x@zU!rZ1!Y-U*;ja$ z_#5K=3I`nUAjW^>UJe*Rujrw-?xAlY(RHJe1s7Qaxqq9CHr*GKx+nBi(y`D+MQu^k zo$^6BZdNyexX~vo+AxNf!VogL(>~oeZWZUT!m@A&bIgtiBfoR3G@YbQmrL(ELHAn( zN+J2N=NmnZifJ*`}nLc z4vf#t7BoDJa4=O?Sd20rCyJcJG36E5YxafhilLadh9jM@$V`qS_^7sG&uPdUK08B> z6&CT$+mo7{_t|c6UKDQuUcF`LHN~_q%k@gBWtvLIytzY4>*WSX*sgghx>Euus~s#N zD(_HuhyPR#7((=?7}}npFD3=>?}qvWSJuoWDD#1MqwG z9NN)Y5g$-w&PmU?+c!GN>sT|w0~3GGqH%Zuoss*qh7!`Jr$DzMaqHIW7 zjm=@@s`dzn$rY3Q7&kS~2M*Kn37;&PI;2}3Nmh`Qur14`7tzKyZne}3e~~zIWwrIe zA}E-2Y%T|Y2HWlZLo83AYssS#*yFXVq_D31B0+4 z%ISh3;Nft*f&J+b)Q4DtPrMz&X-$*;lwm31Pp4@7xu%9gafoUei?>53JIvC% zqk$RTi!d!@K!Z^)FC6$0{yVwOgqCep;hRn)gvD{CfpGWxdLzAqfx=aO0qkoMr2JB4 z$xyNonSXe&;jZXF=`0R`y!--6plz$rywR@5IXa&<59KJA*Y(H7MtWB{88S9`pX04) z9JlLlfIN5{{86k0#EmPF$XI|@8M1DnHo>CsuJ>_mn!nOz=M-vavB6uL3014qEk3Kv z>V|yd>D4#rX}V%B|A$61sv)~|qZLbE?R$-^lib=l3xgPDbHEl{F#6o3_+S#<*RJbg z-Sp}6erE)mJV^*R^e{FxA`(3a$|MbcT5}{18~ZOeAScUuCEh7&{;%mh^%r4=d{QwUqbwN6E|y$>oM?p*1x~l!UgPKAjJPxNH?{(5z*lIy+G;Ik#7rX0RIZs-dQTIKMcef`OoYdTk=sh(LnM{6dHFBRZ*p&`SbkFX~4FAht`v~fq}CfLCmsC~ zG&pvJB0|mzCVGuN6y;OAK;lj9(F;E@Nhx6z-(lZJ+5yU6X%X-O-xi~EZw-H>;mezK>E-T^H_Q+--%x15gXt`lA5`P0#FB7E z5o`t<3k}wmPhaC57$TfqK)g&?%kicD>^6je`zwfvz}Cc*L8i&Ymph^aE^GNqRD}sL z5LaS-8zV(YUD}JrQYeyt7@)?}5NHVB9pgeS1lV%QC(Gx~fpl4{h**TA2W8XlxhO6x z$#vny1{ngC?xyP6P+N+4mc0#`IixI8pUPr-d1josI^gu3F8B9zaXsAbNcY-4X(tj# zBGG|F^z`o(xf`u~ZUXTRv9Jx&mK=Bg#lg$L*t>?zBEqD+*#|9q!_4fq7up(P%g0zO z;y_6i&eZWjN1v}8Nkyn!>*|8x@qyX*bM7sl;W1{`i=m8$rF=yAJfz339g{-s5bVym zyWPV9n(&fI{uRK_Qgaf;M044hx0oeA&o{D06s~H^j@+?!*#5v?2M1qZH_z$N=YzmB zmWzmyLHhJ_5p3JF3VJP8PS%jGeF|WPkZ#w3Mb3{se^|WVdKMqkm;B?5_y!dwB^lYxQUIdSk^crT@{1V+S;B?=R&ptZ&%T13D!jm5jKB zUKp2w70t`N__Lw1w!Sb!p;DfNOa0pouMaP`jj?m^pRFZySVGHFJelE}bKO9QG_YBJ z&}QDwu1thIl{b8c_F9oq>XPIaHOf!Dmm0NFqJK2{M&hCrW^2L53Nh-b}J5sT+ZgcgMSZm~?W?l$1j%t1^=zi=r-`2CnB?)R<0VECE z@-C|zfzcZ8;E?Z)9yIzomUZ8ad&b5xRe?ave^kFpKJS~xonj-D;&CD96&(~RReb|c8t7xXnW`Y1|{V40s zwmPujpYAHh`xFz8SzZZFV9)3Gz*DT5dsT740U2kkcZ^50zKhphSrQ|G@N8^FlQ@Ru zL)$Y*3&fxjup9;({S1U+d~f4<3=FakO4u`P+^rc z#44&znF*c;pRsamRU~2Bu8DT%rxX|^h$sGWWP^(OJl_TQWirZh$nGMw>X##7QT!El zE5fu&T^_e2lE!c*gZ94|n=C7Ib`qzuqv?jxl2#|^k zMB4R?(P_H2%A99K5F?)+PDi2d02}Dg(L*iU#X{lj>A`{yYrreyW%)B!0c&5kW2@rw z0jO^NC2Zh^>z(UDn&H=h=f$43UuT%dM;dCs6>`0y>&y^C*K!!b$D0nD^7YTub0S7& zMQRmnb6G!<2HNVS6BG6PWemV2E94?OkeXjyhCrxZtc4Eq_Tn;9zuiV;Lp<)7kw2Rh z0E^$F$IEJO6Lypr!6{PUZYWn1CcB((@dp-CjI*Bm#FaPBKQh@u;WLw-(r(Q$mVx!7 zZZ+SMI|GO|v}VzX4OD$fjD!_#BSGAhN0=d1^{# z;DTw!(&COv3M>7y-!Um-U&8)+S!FFOIXw9qxALR}*09bl7li_ZbXrGyEw#UKd(uBa z>st8bYBs4*_zlV`t(WvN!s+rV65)*TjI%2Nvzuq@n$a_)k7H-$Qqu=YP2uhG&0 z;l$Sout@5l7y!T43~ljG*hSPU?VFpXin1+)nDkhd>U){zCDkFJSpsVsahCcWmXvg< zLPVG$q;+7OS|Uw!nmEiFtVVFYvmOfltceQ%TBwe;LKxqSx`#@BnkPY zc9lZ-M$i$^NkHWL zzh6LOB7wEH@9xhAp?XRmRH?IsCiONH@6jXxH+hG6A)Xzp7u?;b;@9we#-1r5$6o3| zSk$QyfRd%PLWC9ixs-C(7T9Y-Q*3=Tq5&!nOGc^h<$GGaRal}kHi%n?yev~ei0c_+ z=LMd469b8@j=GZuh=6__P9H3^lQIauzwly5xdMCqmnB0An65V7HRnc=XOZ%i2XKuA z2+J5>>RW}44oHa8Wm0|mUiFK{N_Dz;=?_)Wz*LCN&Dj_$9^j&UqU&7=WC)C@Rl5H+E zC;t=tQvI>aA0cWBCY=!z?2rPAiV5-@aRe1#DV91?wGAX;+adT=9-MxLoI29Y2uUS# ztr~n!m>%gBC|wQWME!iNuMj>;k8Q>UdX54f;E_~18$sBEwSbNIeU`42;TEHi2xI5O zHlvmH#(o2hR=os}$|8tp-FfRg#x-5BKb8orUTzQgca+?RqkNK+Ab*HJL(5@C2itltPhBdF6Ci3{2!-t zhXHnVFMU#o_3Oir|4O3gdf)13J;Sem-0?Kv1Tr@)m+h*U+>fAN7!a8Wd*q*Ue&zJH zKMrSWlX!h}6Pkl14(0rox!1sbEu5=qaxrP)v~qkLObYzH->9K55*O6lJ10$Vq;Wu) zx_Za<165vN)6{P5#A+X!1~@$UN9A#yI!29*#f&x4yAN-TYFSA z4?(D>LjmMU_t_;+LQL@zkPE?9DTFPdW0X|atdfj_K_sHnrL#1xHn(#O?$b*W8BQSM zRUIIJLe>5lQLUhi)!ixyMT@=*W?$9a>tJ%iJS~rtRW@&C}lusYd+VjJXy*1RlRrY@>>G$Z8@)fs>F;x<0dUnRtrE!jO?aEFrvzOj^+x&+tSx!1&`#c!GF!lw8bp8 zXi^b&LstNkc@hZvGCohb1VGYiJ@4bV0^-lzmF>>7H5PBO^T%ZGbTSn5^IB`$C7VfyTqM%G5 zyydQ1mrv{}yy-MX&qNP%&WPpNu1j8WQ|uRR%A)@sMshKAz{hY)9)FDJIY z0+%oFzKu+BcMFRP5}JgDMQ4NSMMykO!|<^oZXL`E7|5IaPz>SOvF@cvmA%CfJaKRc zMN|9^eAc%5=&$Kh3;;g0o^?^Vfp-^~H+Gzk{d9REa<$oh8|FW~v+~@Kod#27!1Ige-3C>RryMZn6fRfs0t=v%(t)q!X4Dj_inlX2-;jQNy zXRNGg$=1ZUU??UFyl^%J=N9m1Vx55@u8}I3*ItWKgyUIsRe!2`+8)7 z5M&+ZRrJc{OWhu0rLWQ!rvvG#0h&R>K|6Su1Ql+S&vAQ&4`8AfmoFZqa0o)X% z?ysQTV>R;N*dB9-Oim_;EJcHI?=lhk-&Y!?AFyDv5+ub9(^V8E_F0^QCj17fpih+G zlpTJfII6gC2l5ub zQv(Nh?~Cna`wqba!Psnb-132dsTES7BdgvMkDBBCcXhJh?l3VznR89Yw(ZRaPkoufQfg%^jfv;cUa!P@T6p{wc9W{A`1Evyx-_H+ z*mpj|YX>6@s-fB44wRgtX~T2lC9@0Mn8FBaxerFSz$43C(HS^)67aF(eHHh\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=20m public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=VPN-Server +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN \ + log-prefix=VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" in-interface-list=\ + WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=vk.com \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ + WG routing-table=To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260508/20260508054001-Diff-Config.rsc b/MikroMaster/history/20260508/20260508054001-Diff-Config.rsc new file mode 100644 index 0000000..1901f55 --- /dev/null +++ b/MikroMaster/history/20260508/20260508054001-Diff-Config.rsc @@ -0,0 +1,20 @@ +4293d4292 +< add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4294a4294 +> add address=104.16.4.81 comment=xhamster.com list=FuckRKN +4297d4296 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4298a4298 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4300d4299 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4301a4301 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4303d4302 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4305c4304 +< add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +--- +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4306a4306 +> add address=172.67.172.95 comment=crimerussia.com list=FuckRKN -- 2.52.0