From b81d81180a11e00e6c7bb8f4fc8adf570918e975 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 12 Jun 2026 04:41:35 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 12 04:41:35. --- .../20260612/20260612044002-Binary.backup | Bin 0 -> 264097 bytes .../20260612/20260612044002-Config.rsc | 3596 +++++++++++++++++ .../20260612/20260612044002-Diff-Config.rsc | 22 + 3 files changed, 3618 insertions(+) create mode 100644 MikroMaster/20260612/20260612044002-Binary.backup create mode 100644 MikroMaster/20260612/20260612044002-Config.rsc create mode 100644 MikroMaster/history/20260612/20260612044002-Diff-Config.rsc diff --git a/MikroMaster/20260612/20260612044002-Binary.backup b/MikroMaster/20260612/20260612044002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..42e50bc1df2ceb90194125c1bb4098c4fc564758 GIT binary patch literal 264097 zcmV+aKLEh*sF8D_2Lu3qioV8p@Ajc$<;%S{QQhAF000O80004Z`SAPzLrz$3^P0Bb zGz3W108*WsR26JuTJ!8bRzu^FwmHKI9Ji8pSaqYY-dX|j~l#IP8Ke<&?B zA}@GgN8JM>I0aH@bIqO~YabaU1IWMT1PjCxKL4gnrrCLf!OCrk`WrxeE&@DiK_jvU zHpOh}!V#9pIyxCzJUl2YN?s@S{;^&bn#*A>`(YQu{y+nV%HvqY5U*!KzaVoU>Y+nL zYPB57qsAc)Q4tlrI?K{F?ll*&-C}nXS$E-2QM_usDStSSAu0bv%QPFVD}rTgkI94O zqmTEk6SKZq0kIeKa;8tB!%!q#JuOP#a$5kmF6gcY$#W(gV87FMp z$bbj?MdW{J|8~Xm2?N_B$^A~GCvtRP#N3f_&_&1K?_&~KB#G!?UJSMe(O}PW&|!2U zgmSDl)u-!S`@IuW*;ss7t$k{8aE>$-(aJL~Fc<~A`3-qBxQ9c(?jaU*GybkT{2j&0 z7KvUfF%rAptmtRv;d3^bxfBUJgVn4ESk~<$vsSy*KGF0(<8v2z*~Jf#ny8cdve734 z;jxnFhSxmg5Pp5>hF$m|2EEVL6{!|9^?9~6ghDZ7mMh=u;Ux*!^xdp?n|N)nx|4gm z6{V?-jATUC;%4r;)W2*SUT&E3RuuPrGLtANg28+b4hL%)``X7b)9(aPLwJ7J66-Wg z+@2t8cgcF6)wnx&gvVh!lcWA4SHDo~JfY}E%*Nw)({t#YZFvst*(+VJKA>HO0UYvl z4mX*iaX`8k#kA#}7g2!3HLpf4zpAJv2@9ctn{NG}UP6as_n?~PL`JQM;M~d~QYaNZ z-nQRJJV*T4#^mcUpY2!Gs&*`F>z_3@v-sh>zual1<5oy1>kHkx=W8nY#!k<^%ZmzJy9i^6*n1> z2PfRf6Kh0DtuO$!gCqmD{5HN-TV~2~s8ijI|A(X19EN1;?vIWifFjGpsS3iJ!d+VhzZZDClBru(NkIEhp>i zLytzV7fYClte^ibA~mZy@;ke=Y@9#f=kmtEblIMgdT(Iny0_!ph@vFRbpY$4ws4;2 zVo`Z1!eO9+(XTlbYJ7D+lA`sA_22N`f@;ZIZ-V}#)eG&fMj$q-`s_TE9x zW*rlPDvotCx$UIO^zuwh&DVx`l9izC`6D!uE!{D2wu1M5sZ+$|7^m54*tV!IfRHo_ z{X{az^%_jT*I$BHwYrsH#7?AO-2C&s!Rs4N^iIk4Mv2bNx)lVRi}g`G!` z=^T*KyX50$=@}qVFfUg=0aI7F?Cry83j&Rp$;ayA79T0(6`U)w(Xb_*3Y*8!C^5;O zTJKtAYG{a~p)JYyRYoTaBka)m@1YnTZwnu*_n)93!(x?sC&l&!K5rk$>@5p~E{|GY zUH5Suc??8!`q7NWXbA5h$7Rs9fvYWMGL`<8)BxbO_Uci+J#6`^+<=4S9pazI*v?L` zY_hB~b%c@WA4}mF_uR`Ri1NoKBtOA?;*5ybTwE3Pond^EKxC2CfqH)KcPs zV!wh9Gy488@uZ$#JH%R1B45Ut)Vu3LQj7t~*)oN+1ikq32@EmPU+hfTIcFyqW6qNg zN!V?hKW<_-egVOH{(Ryl?Mn*^%=KXkf63z~DJF^QWE;wZKf~$BXo~lH?c^ZRekyD+ z{ns^@fn7qqBQ=9ruB^{%N{+rT;Isg>7QqV-Y01umi1 zv@PAa&wZo|;|fh<)eJ!GImh|g_|>h4#8+tv?!q;fj_`(+xpTq%JUoG8cTP&Tf(;om za!olAGN+v90kyBOL!?F-M~X1HfgU{baZQoF+r+w*s#Y6|kzlf$Y6vEJdTS$$#?#_* z-Oj?rIykRv6~O7ZEa-f9%l9vZFLXC`c{PavY;t3oynqyo3{dds55Uej-X{i(>5-P# zM9`f5>qJyRFQ?XdYl0%R^&g&u>1TvSJKqY!1wf}PpScHBfhOBF^IAmjk)zw<44Iv0 z(P7`r)Ar24+`e2>TA5WoIImM%NbxS<5CP9*Ktcqm%1_$G!`YzjHEz%ePom!X{{b~F zhK3x~R*8j~t|Kvryo}gjH&L@58uUmn=j?vPna`vR+>3wNj@IC4YO79gIkq%1tkIIT_cFd$YnGlf1khuuv$vK1%;3U{UIQt=UbLK)T{&WM}{ zJ=Of}{?b}4a*E9V2AOQB1fSU!4h5=p8o1#(u$2cH8W8MBnE&$+->U~@yFiA(!H8C) zy#xstr?bNpFcleCJ@&(xt$eQu=Vuk>EAd02%*^VcUaG9lN)BbXgGGfTBjmNM_Gk~P zWp2$}zw1DaPhIh}U+MsYH(g6Uz&PFMLx56|4Z@@!q${Eg9fNu5Vk=h}^J9i-a}8%4 zw^t*l4j+3VSlOwj+2VC$BKCJ}O4JT=E1W?6ezR;J~GYOxpd0h z2`laiG6=&{<0Va4Ctcd_07X09qX8j-o%kC4+Uoy?Q>So+{2sN8zsfEz51Z;_ft$D( z9)T{snx)jPYnnfVo4=c|PyHt}h1vs?t-6r$_WGC@y3b^a-jmFtBEiEK~zZsiA)9M8*0M7YP+SF+IM<4M^T0qndVEj140C zk+1ANe5_KNoExH4p%*R$V9bG5P{IVP#P>$rZu|G2CoXuDLM=?-t%N< zE)=tER3}@i;;m;tsvV(7&Zrs46z#9LaLUbeqYWE=g6)$h@i1*d%AFT2 z2eIm9kuqKY!p>MTNZVZYiQ(>Zm02veQic}-zo+nEOw|Zf1l~y`I$|sBKwzckn#HMP z2)z`CBJ;vUr!f`7aHHIJsBfsc-23B#Wa31iW(*2TU~15rkn8#o)gq#|=;Wbz){-a8 zSnnc9u<1)UjWV|#VAr78OMSDE%#v|G#uJ(v0Pl9wSfx0h842dhUC~z4TUD)m7v%9N zFPZF|8Z`zedKxww(}}T$VDqU3=$$5X$%zIUO$1!WnC9YT&z@?7SyKUiFe%n1te!*q zBZmxK7w)Fh5c>kFz2 zGb8%sb7ksdTek!8Z`J2%PKpvkUWC@j1@Mk(vzi-G#PTt=Lkwg<$Y(Si&trvno2%G;+aCgeKZ#(?OvBR=3ygT6ZH z5ot*5sD&%q>cdG)U^C{O`JW1zP%H;7!E~BwNFM;EuByvHdM;aS_+#Ise zd*un^N51S?%Dg|EB4dAV_N+}NTc!%&@0o2qLz4YG3G=MVO*cbHjz}$6GW3vQ?pd#T z1sp2v;en75pH^BI_+oOJ01dF1PRn)(l?utfguv1iin)tL(p`B@Pn2!=iU*_h5Rn5PNHMS0 zfh6)NKgJ{kRdp=$zF2gciy)tmQoZn}Jr7Qf4460n?=}YC^aFO%rt=K+u|6wjy~Q4D zC=RSPR^&X>Woz>U5t`kVD4=ehV2ND=+UwzyLgTg`1Q$}dB&8#Illm+24U)HN#?ZyQ zz41D9V5x_KL6VU74jLyx?lUq-Dd$$gP(1E47b|?-yESS-hHTxEM>@nas?ZVPsZ^ke z8_n1WTN_8qS#QfRri4EZ?--?urvd#p#Bqoa_x6Lbv{x&U_Glc5m)uny`T@V%+AReH z%6WQD{t26HN(H7j)<^{U|HcS)v##{6?0R1IZ^xSuiIMNS+9OOs*@(RQoK4v=VZr8N zKCPNRyGmYrI*5 zj1k+C=DRQKOyAz|U!ARkp0bjHT^}V=^R1j1>b&nVr4gM<*+`0#BS}6_ul9MCmd=z0 zePz+)N6)pMNZX%I-=@H6Ku}w39Upe?3YL05ZLT!bi=wtM)P2Ul9#^)00Ai6;UOIM* z**18-O-laL9Fbfo!dESx1y|RK=dBM+Ub^Z+)K%)ueMBd0;+3N6JfLoaeiZo^ef#i*h z`R&Du#sxMV(<>j9H66muC&FqZ`|A@6J(=NKFHMh32K%1XJX}2TyASQrJY&^-AF(I9 ziJl9#>UF`*ZyX8xFvQ)H>pQcm4qZI4zZ=lRZ?6UMoSU@s-+xI#!4X5odDo)WxEXdc zUhTsy8sbInQVo<2K-gVb1SMJJvV)ppV`g%VX=c3ep{^hAZdo|6r%0pk9;o${V-NqL zy-r0v5?prY7UIR_Y>epblx=8l9@qqS-MyY=;RQY^`evVX4mnS})!O4FiUDW{uu~=g z0EjTinI^NXO%bU{`-(Z2iQU{e28F_?xJ=5IgOVP!!B&Pdb!RNW$u_q@i_2U%B{``OL+Y_xVbBIx!Wwb<{wSi>&`k9_bnu3!tP>g02!7Fp3~-) zhX^@U5%y>o#bU0?_}g$5*)K|Td&NqYi<9Gxt|wpe8BwY$OF%W}pZ;frm47O+f*=wA zL2%|Sml>%H8A>}J&Wb11fAq@FgR%+zr6sF6#c~_>?eumPS(!bfi>&02eMTaN{qy%^ zs5NQ?SH(Q;Ph_XfS&xV>U2Y#!PUI&!!qqsAYCQQ1ee-1SBRLi6ZruRwZ@8D6j@6pm zXjh!)BkQne?2AqRwS}i#y(WM@yGsi!*s{Oafi(tPR(Ps-zu|xpyLUR*!qB9h{MtWG zNDJ+Rlbazpcz%6FL^pj)asqs586m2Qhk0qFi-3 z%5`pa2Ji=>AyJ!ZG#OI_dwzF2B)iMCQa~M%eY$u)M|Ur7k10dTr2$1B;YS(+4XYzZ zsm5(Jz&r|wWI9z9;rj-P4Hfixokb{S2;J4Z)ytk!2Dwzi2=Zj+Jjnq$qz@#0O=i3T z)b2AU{KJhhVCr+J6LHKEjMR49IYdF8L~P2=JDIT6aUgRN@$@8U$0DfzP8@^C4`ecN zUR2t6L7QPX6k3+dfC)Ke!3=4E8x-@(od6w=(aHSWoZhOYYV|#){7Mre*_3EHjc*QF zqT8gtkv54U+Y-^Ig8m901Q~S)6ZWnK59xm2>M*WNCZ(cUc4-_wz$ZOVRUm1+*QTj? zgIhy?w~+VpV8!794*%+W`~3@$-<9~5_EVCG*CVV-<1Awxew0hO$OF<%%7binH^Tv* ziCn7rt5HNK-m4>hs>jDSI%lZ&sd-@S7M%u_ zwf|3ewS!zi=;*-WYgAU#YrUUZRDnRUW}O`8y>WYI$Q}JRu@#qVA^n++&gD8t%nLGi z*5w*0^a~UYN^vSx%8lug*^9oJ?O?BFpaN5!EP#K@!+mtMdFVl0vG8KW4lN7D5;nPo z;4u9Z=Q}5ZD~5Du0k|@DrRMaS;X9fw9GTDY6%Xf&Yx^Mqd}aXwsuCqjhm1p8-}2&* zl!!pvEDh~I5T_lt>}9=Rflu4aq68TFyS4*fNHFP*e{*3XnS;%IG}OFBK4QRNs01Fr zfFs2N_5nv7I<)ZY5OLRGM{U_jw%Lma+FZohwO?ynk$HvY;6XG|k!6{!0I$gX_=@=y z(hMD4?n?*ZThG39%n`m?{BJ$=>)v+P2zQY>t3draSiWNZ?<~?|&gN1keW}T3KHIPq z2t1N$a?M1#NO^*JBB-k+IXt{1tT+(rqj;9GllCBxDSV@)kvWRNcr8Q3sB#y$_H$3k zf#PMtes!BGf!;-TgW4SJ1x-(ps@TV!f>8hYoJ%5HIBdbbBe|tWGWM2!k(fN@2@3WO7qI{MIMPv$L&0bhLh{@vM>!vgt~1{_p^O zU2>Dx#kQE7SjEpi7yyY=HK{LNlfwLl@9HlHf>r&512r$cr%|66dZgBljmdY1T1;F5 zZ~Tn%BbfUK69%TBFk&m8v%OkyV47ieO=I}-Zj-4BjX!`dT z7y%Hsil+m%8mCp}l1KPW*jNJjZ^<#dmSjYp!C;}$kxYc&jIWwYM=_xd(Vptzg%;eS zY^gRrAa0x7MC{f4;a7nMZnmS7q#x#7Df3ZxNIXisW0J`CRu~+~%J}^4 zA=n30UH~Gq+g^$w^e!N*iyij5bt__&(|tK+E%+F-6?w*%Zz0M@^dfiR`^*r5RNl>@ z^#CiQ_=kkaw@?C7G--oh#&WuhTk(kGyZ+jO+8DK8djc-u6_UsmUVLp%9dNWCOg zfqBWM-`htJUKFKEVrKoWj9&%@as%{OAf7qow ztM94?uP54!Ow$51aP-olp=!tocbWWrdE08@O(%YKA3DuaUdd$6kD;oz*97`q-ey*_ zD>%|eU~6mK3PrV9m@0j(L`0{}04)716SgoiO5iKX&o`RrnR~b|uyoVxdwaWjZu0WT z2|>eYnjtA%IPfQcst-a8Ufc%wXr~;A8rLARh>qonAx2M_m$?_+Wp5;rBTnV8tOxBHmm0mwMCYRA=&GyY6=Sp_rSMbhe z?mRQ>Lp@k<#UpuyX-mAzTRZi0b02@n@zA&G3BsN<ev)OUJyre{Cfbw@>;wuc{`uqIMGPIkRNki>3PKUzo@`4C zh4`kKanXSA9mXqQB+7*OZv!=!xkK>vyTWR$u$4YNTVC*YJ?AhqpI^qdXS;mVbnnxA z#8idf%6};(>S(JOpg2D^OTgD&q5j4xlB7zyQ{VhX7)g$g3;Z}xTxC&mlY3Jzn)tD- z;!qb@k?$w)$9HJNtHI?bjF4*c3!i#K{l2Z7VU~iwAZ+P+wfLhmGRuMu7MiAy=uR3= z$Tlx>8Wd+gig>&{x?*0QLzaUyPovSx3TAf>OcY?vc@^979q0Ad(eua{N zCYt)HC!0Xfn<7oYTs&*()6!Mcg!%OX*N;TAP?A?GYYbJZK~ z7@S$&jP$3)ayZ9TNLzY}z`L}#o>EMIxi7X9(kRzuf03d=HJfp@25YqF)cfmvHLd}^1H~GImC4k z`qI}NDF!uC9hpi%D%E2h70xEA5{9CC8`4vM4|F$pk#kS#&+g;^QXImF%gc$GSx*GE zf$}t)ZG;615KM3(G{en8gd`QQTIa8#-tL=Hi~6s+LD*Z)ZqL}vIV~^eS*28dqmA28 zOu`PpW5xVVL5y_@TcZEIz7dung;E7#>ZavHCK2P5pYv7HFs0(Y#u0nHWd7#l4ur|m z=8X18>5H`$LC>Un8e~;d(&*glNuU8gsweD=>K&@4le|*umvwz?^S%&0mR3_fddwpn zDT{ooELtCjKv}sWQyPcMqPhuaT3xxz`cNYMZTgfc9>y_8-JXKUibi{*&z_ipmIQ8q z0PPB8WmY3t_5LDfAj5m%EHaBBMBAL`#EL&Sn4k17h`nHS?2%7c4a- z_3U5D_hTbu;e$*6iGvEtLv(kq(0~?bbtLu=Jh2<(`qi( zcz+qYM$4t?P?=%B?JN84!3oX-pe^8nsa#SrK5PlF1!e%k92_+JP~`-nHgK2J`iNTO z%80jc&cRDK(ADkC@G_8^K0(ARdK#KN6azAIV9@3E>F7ZGsx?9>G?!(wvq#adti6$>!lT4o!cXl>j{zV@`<*b^k1|kZ!YsU;#F75L4zNr$} zm^xt#4)!3=eg#A;eiD~l^^B6Ls`^{5AwTOXuMBo{lKa~80KP({ zO_%MAh?~qmQ}pKW#5BARJw@bt)bml(KfzqLSeFANCtfsEnn9?88Qon^0^dfQtG(Wr zXw#wgs3{OO7H}RPSX(&1VXC9d=4FC&d&x#olaH|2+ch{&P6Gwkbjh{OX@t>O$tIG6 z1^|$vsEAOUVZL=><;9bwfW!NC3>A!>`GL_eQ+0>q!M`Q|hEh)UdCFKLcuDsc-WCpM zw#bk%9|)LTG0DvdUaM%byt#y9xidi*^oD_C1gN;Ewu#hYf9YHAgPtmTOe*|Tzslc} z^Rp-Zq~vUt968EAF|^7F9`ynpG|V4MKJnj}SfW?5FzrAOeUP8MeX}+tkgP{=dkhdw zC$oDengB($+GUhYEl$G)!Od=G9b`hx@}kZBe$R~)?8Y+wqQq`mVZ3XD+dhexUF(N# zTnXt{d!ZY*BMweT&e~Njei{>~#;bEzoOn3jZiv!~jU??NJG3gK0!e}y)qG3Jwg}`iD(nHjJe7xRF*!-}S&q+U!bJ z1>i5psrGYti)tU8h4j=_EF-gPd!EXS_#BiCUj<<7^)Wr9DDzu(*g|NW-*+T9;_sqh zXoTtz&V$S+%a!yKF(9q2Up)WO9cH(@*iPJ{g8EaOdm;5R#0UcA^_R=L zYsH**2xUC2&{#^kO~{IhZPh13VF@KoC)LQ97Q}nrIlS({aC(y-P}3N@Dn9in|4$Tf z^zPc@G+CowXSD3+n}`Ua?O1Znoqo!QN$;NdT>4TAdcK~+eF`$Eg^t*JUa;*4cmWyb z55e~V0Zk7blVejRu^nk2qbr0;3ai9fgqwnbWh#uR(_j9a{$dfTsX~JBaus3pm&t4h zf_$6V?N7|XAPnM;GPgbv&efSZVjghqPsq=N4<0`C`YdN@5Es;%&b$!lW59!xAjLF% zF$VnlsBign)DNI0fr=kJu0>I1@Cy$=QL>;bLP-5^HEdvQA=FO5+qT5-rPA?*VDz5q ztEYor8dsia6YR^os-!tYq;2j#C9po~oCS|vjoYQ5*R1lvsGYhSj)rQ&cfOGA;`A%B zg}K>c-!B^}K0#t0eq~!mExz90_HiBJk)FVh|CWSFJ!puhD^4^IV3;58>ds6lAZ-K z1h?}}4~K?2D05)dLvp~n_~Ze>2ZS)%xH4G0XfNE0<*J=H~GXmo+L zY~~s7`OhVyr*hwn8~Jj+NYy1RvzC-3LjiWUuso~c>il<8ffq8j`Z?b%xp5jj>0@+o z(@P}uoTOk_i5%M3Lq3xkPWa;UDgLGYjIXoe8_=8!demg9vlxQ}ugQ8T zn9@u@>cr(r!P`bLf_hQMUTFfSY=lGfcxyrwssl$5Tg|hgR4^-0R}4Q3`!XjF1l!Lp zL$SQPC1F$AY;#?xiP#3kP}pFtb$3akrZrq7xF!wWg_$zeC_$D?<|W0qyILcm+@xW0I1SB-6Z!2%&G zc&yW4^O~$pVfo0lvpL?AS*3?0cwE=0r4bP8h|=fXJ_=PP!#`n3s=>29NA~+SD{tz_ zk5-LE-hSN2^)9W`BRcyOU1AjBJhO`jC`1rmnVH~(3Sn9r~iYu8Y2z5&8! z8J+}A$#AbSl63tcOZl|`#RLXr;%Id(5(jqtCqCUaeIgK!6^GyJioR}LsMV#{sR;eQ*5uCZ#>@ON@@5dQf5?&wh$})dOPQJ*Qn7Tl7h=v|6x%ajT@!h?E`T<2?P(9z zxh)kVa*Oib$#fO|H36vNCvx*vP?Wc~e`gD`IMYU69lDg6ukbII`Vd2?m4Hj3gtPM> znm!^(BxVxFmA5;csn>dt#!$S-Z3-@_Nj=ZV2%>bkJBkmGn=oGWrb)4F?d(8+1vi&{ zA$$!rJ8ZYcxX3I3@>Y7ohiD-|M}Izs7Q7RbGL2g1Ei>5!=^P?;;NHqjB4|ahlM3C# zGaqq!Gtze$e^Kox`Nw;v{!hY&#+piAPwMA}12w{fH{`KL!=h6QF)vI;{UOy|pO{7x zO`)^;AWTwg_qUD|4w;ScGlIL$u&-TvqbB}z0rU%G9aEdV^5az8mlVFl<~rxj7m3r` zG+=}VDPIkx<|tvuTwhqq8G=%f)L_=lR0pDTAt{{Jomj*wt@_cNvJ^d$!io~sYu1jk z<@F=Il6{;IaAD-|Rv|!Quu+3WwAu$hH47H~;8yH$VuP}lICU+7?6HBs#@M2PA?e9m zM4I=Nf`c-`1&L(um%SxM^MhK*P>Ejd0Cwpea#lA7LuEFP2?pspjnM#(PF=+#sFY(*K_J_OW@TuT+=PsM;S%>y- z6~mgUBzm1AZFE$Q^ZS&%aggh=CD!K=uFVgmL3Em>ixV5r)NKr;01T15h^CON!BXDF z20BXm73OY3H?SPb49ljQ3?M4n4|ismm+@^`qHO-CP44oUb9|@Se z@Oms}`|5ThdVKCp=woZcH%E8!5n&%o8$2BC_bnl18`y3(ETDw3#0k>EAQ8327zm&e zGDQM^P=7|%nz6EhOzK4WQ*-zU$jYbGmi;bEz<3k5x|dY_-j@$YIcT5KThqU38Z?b%;ulyl($m={e9c< z5hHdNN?$!V+)HJL#|HxlWMoxNet<3 z>h4nC$)U34seOtg2*o5K`{k|~`#e$wgOHS=@H~g2UG}dz0n+c#L{OF1%mjnw_)!Ni_xNnp7kgrrg=8&Y zc1lF$oXte)wlky^v$#QzK8yAOwAgg42rdCO*at=0KI-hc!1OZVh!l1aFcj)a@6zDwI9>^v@~b(- zHN!_rY2F|^fc4+|RRwV5{`N@wuC0w#)$jo#Q_uc6&1+b)l|7ku(`#P~K9RV~$f`q;j74cP=|7&sBQ-tV6 zrL6=y?#?Xl$}1=z9d26Zx~SZH)hkuY{u~D__Ob0qP6uOjRHG!-!lpre!D^??%L7&& zba~`W7Py`jR!)@0Js7kaYG0MT>QP97uM?KcrvMWYB)A^bdq!l<45X{0GyZ3R&Ea~I zsb}?{F3pK?mu#*XVSVpNs+=y0jWLp9Yq&a($l70gw6w=)qF|ygu#A&jPr{;OHTk92 z_?co?#ON;#^O9)EL3|}^%z;K9YkYj>aIG?Q9}p4>#uZYvuFjeM*lI`_<$M z#UyQDcoS|9AJ1}^o2CDE{-NRCZ;znC_#R_wg_&o z{u)SYT9JM?XN#y=_ftajsH5}+193LDu*-o>#IU5>71#?2DU3PXfLwu^*9(2fNY*RF zO0*a>S{M!ee3-*RY=o@q!v9uai-c#(WIpW{g6US!;3*)sXU9h~o!`6mf`U^zsBUWJ zGP0%1X_Ug8ZjqZ9k@L8!pL&FOY}nL3*Vif|&Pv6f?-L7P2+x!oDxsK$&yxwcRh>Wt|=e7z^vz@v4!klm%_cA;*!FIHUD>jl`q0 z^X*@;6wvtP%)+Ddo$w#Fs)l4}=79x;O81Xu{mZ3KJ%+~6KQk_101v8szC@j|v5#>a z>?X!|g~3W=BBqGusOS;pX*iS19W_u<1wP=6AX;QeyVE^5CL&OhZhqgtUJ8HyM5xl$D z0g2Zlj^ofS9?TLOsk<@^vRu2G1e;fzPVi8XI*bx8J}xThNK+bMj-88xn@5l{Y19~g z6>4Zg`zZZ_7=CzHuG-6vNqzhL1T~jmot$@N(@Ng@+B&4~$yEBn%O5`Q{pI%(7I0|^ zpee^fZzj*2g|UthDpnL?#X9|ZSloSxm>uXI{(nN0$uxFtEJ)${2hXtkOO+6nj8O`& z=4<^nmr6xglKKhvtZ~vxKwG3P)wGUz(ryUtEa5sNd46?XTg4;Jif3&~nd{F8hg^oe z(^@umWP&Ph4AOHX8N)eUI>R|TC2)6Q0}nkT^N>FjT20$`*0+uj z1UymVI|rH*Sh`0bC0r!aN8kL3>&khhq>pMF!reUj*P3K!Qtw13$zJ92o9kNA}AZ z#hZ6-IzsvpxlTraAG8;x2o9)d?jJcqP%Nr%^^?L`2TIy>&WxBbk+(2j`3wu1Bmwog z@C!`>+t!AHy?)#~LBYC5z)Bf83bey?t~NVdfIO;2ol)cfLCHydXNgON)e5TF-$jS7KI&aEs9sFl}c`ag}ALI)Fw^ry66`E-|BTl%W<6 zy)rHbgmtfhSHG=l&ElaCu_4~z(zp!=o)VZgByCwbqv)Mtzc;K33p+PiW}^0E%!)@) z!IPjRDk&C0uT#%+#7K}liD0g7X1_E!6+%J{K5O0!AztD`F{|e}eet)3l0H-`1!3n~IH`+(4{MwD8zLNLB%o;SnQ^Mo~c$1m5Z;x$Xb?^+E}?WS(f z7m13o=#8yU`H14>XKkIkbyBB!3WDu1(SVSqwoEDC9Y4T!Q$G_rSp-WoUwU+@;fMxy z72R}QSke2YKcw;XxgOw%l^WJrg2HF5kU!E4P&&WMauAhc?Qdr;oKl`^##8kcjZ8F@ z;2%g_-JqCl3*qpXk1$906q5#D2eK;vN?@IL;6Ad1KQ2-VDp~?Fi$eFq28G?$pBZ%_ z_fYc*GaHs-WOdmgy&$xTRcM^3+S8Rk%o#hz|2*Y^AhGBHuu^@{0-|c7QW{2y@fdK+AkSqj>GJmgHnSyj5m%&DQ^0< zvWo1IlJAp7?WlA1W8PDRc%6{Xxg~m7vbaEkEN)Q^{uMDf{P@l<7FcPm15`&uv@L7! zsGh=?HIR7*Q)W9VOU4~k8R`k}ZUDYgXUhkBt2|1^t`O$5R~p*mi8AL?&(c>O|ig)fpo2j6yhwDikZm;2Vb3GSwg~ z+c=R8x%fSKV=mYEs;zRo&_kv~`GTDKp#PrC0F~ zd!cJ$8gU;a1yTB%r@D);RTqBxedcDVz3mpQZK3F&DgM#C#?z$Hm^2YR18KQm$I5G? z(`5KJ1Lfg@R201-Rg)I!dBQx%`9q0qC4EmTV&uO36KFX2kXb(J>5?bj7Y}+T-k?;^ zzJXXY8=|fKa{w?9WyzAh2ZZWY+*H>84#uTR;4Yxo`~8U^FYE4%S5w*9OCp3x3O53u z8w8?jn$TuY%XVI3?w0UDu7ImbMi~pxY+gaG8}wf*WmB!6GeKO{jnq6$J>zlB#^gNm z22GTnf9ix6w$jA7Th>42`(N>Nh2WXYb}tRr)ShDfp(lRR#Tg<0ajocwPvK-6-iD<# z_Mw7s(_2Zh5(ZlEX%Kl2mTP?*g6si+b6tB_f7)&$Oag-u|_?EmgOOwp`RK_rWu(3n}pYtyF1Flb4>F+~Wh@ z70X0JHG$*fLVs6&&&H*7efM^1((IoF1+oq4wi{DLDS0ygy6{Pa+bxIQ&IckXl)bC z;Qj(uDvux+<^ohMyfVy>{Sm}JcAoheWbcJL2?_!WScYVQ+m*nv2GqpG?GujHI6?yY z4DKm78u_@Wo{77i0-xA-M>1kX;LHYAW@$vvJWVp13#j4_$Gln{Xec^4lVB8^7-Umu z$OfJn@vvy!zUY~^HY*~Ntb^@=4G#o>I<)h(+4JQ zg6&h%G$x)?wMeoD4gd3&e&-oNp}2wa4WQ7xk`9nirub;ciIKeBsyLg)ZA2=+O0CgQ*Cc<y;JU7j zY~UKO$w_FmZ$>t8p}5U#5%ph#` zWMC8<73LILPj+F_nq1=t#jD!>y?KCyr5~ysq4=57VFk8eg+c+krB(vy-bf{m`f%l6 zcF@7GYL2`iaczvd3tpwDX7jn=*uyvwCn#%|nqzm4!&IpXa9TQ!sj6Gp1;x0&q>TCw z05;3riZcXcqcgfYd8-~SY?Q;57bg}G8S4a-EwZfItt%AhHx$F-`hh6*Aot1~QqtwA z>b&isw5o^BZ7sqwk@;}0Qw+z`3|LH9GNf?xH__SPB^-7)zFPNbgf#O68KTgwNbPg1 zI-_+F?knhDjft9&fvfF6xJKmg5-shBQbE9fjl4|2vkOmSysw zuwgMI%*As=Rn~ag|hO2lN{bbG5A@V{l;bzw~8TyA?3V zmV@WajGDH3?X@l0XbI#J!urXy2Z)QM;JA1;G58LOI;HmsQx~$?r@s)liC`v!`%mD6 zmD)sQ#+IRr5OK*a3jK?oh@uHop4NA#8uoGCEd3p~hj5{Q=P#qT;B%RI2BCQC>%e^L zd$MTf%8#Qfu2UTzWFSq(R@e|+FXS2c)WVB(Px-}E6oz+VeG)R5&Uew9Q}Vi$ToeiyyxvGCaU6?A;x1r~s0i=r|h zxcP(fMa)9kzSpHo;#Z&5b;|TJRF(Foa$qRy8yxvvfGG?f2Qz&_8Yd|;NkQx>DkTQg zoajwzhyZWwIKNsd3LO^tcUeYp7V7rb&~JdM~>=Q`KDLcZ{!?RReB*zNE%>mNX0B``vZ})rr z?FAY1r(bk&u+G1`YIGBg*l3UNIPBZ4D9ZLj^GS^ zlE39{y(7{WXD)G)xa4=-_(K7z(k^=6rME=VAqNEZw{vHigiBNczO$gYNSRy1VX8tz z-Z=cB5sEg3PH7nJ>c@e7k(DJmpZ@WsfQG*8>SVb%xvdx6i}{t<0;K4eu%&SyL=vUV zWs^*op_P@Os5OZKjA?^mCD%$3%Kh67S*pTWBMGMMo=Ks`z22ihC zvNWQ0`ryKBt%8j6f2S7%57dpukImSoExg=T6VfvVUFdvt72HU`v9JjbX=XU>ZN_la z&@B#C#qn#)!(?pSkq1pND$IM5^w=XXiC@OMyl4)!k0QWhzrWvV_VQ&@8J1L}`|fqY z>m8y9X9F*l!IJO|h`(EXTX)z!ptwV)#U?F#;hqG$gi^)Tr|;uKs=2LM_vAe%85JuM8^$DW7P4ko{GN0P zN$|gaJxHB3&wU@!!!|g4fLz!=!-y-;Y!tl{NKWbaq;r69EJVBD+Y=Axc%S(j8^GGW z`aGIHWn9X$K)8o&gi)SuPK15DTa1>ovznf&r?#QVF$VRwg+S(g^*8y+< zZ%c|T?%CcN;+FShUL4M2Cg$~%g}7o5^GJv>3XV2dgxFS&f9!{Sb!v#kXBTd~$@#Q{ zW|{uEX#vx$>A~eS*a!QdKyK;0tE44<_JVoar&)~OCG9^pYtK|?d8ieWIUM59PE+5u z;^nv}Jukv|w+$uIENp(a!%QSwAF1@8q(}LJ#&n`ElIr<~o9yj2*@PwWpo+Ql>puzU z%NE+K3qeA|z1V7~t>2}3hz_>IJ8ywJxsMt8I=&;_CPf-p?-$iT&*B?VaSmoV{=1e( zERp)%Fy;z-0AazR5<_vF35AWBb>tdVp|x(;54|>2sVR{^&xZZej%o33VE0jXpd-@f z$(JJIyN=Xs{gbF9RqQ=1{nhka;KXT*l$9}Ez6^5sWZ6}866b?aw0t!ud`s7;&v(Ua7zuG)Hh%Ne#49}GD~zLYsK|BFmCma!-ZP5v%({a zjMY!lkA8vN05UdRz7Ap|JOcF=%;_9(7lfu1{-zoh^A+FGjKL(%-R&~*myVl=xEhiY z*{Unk9ZumMkC{kq>?9gEL%M#ENtmJx1tY?gdxf7AW+@rMbXBQ#xo1FX3STgGGy8cR zv70X0J39aL3QemJ$_Z1Mj+mj0HON!MfGNOBf=oKBM^St`RYTYMh{>L)+jcD&&&U|z z#;j9j*upjMV8DUVba^i*Bp9H`)URw+33QxBM?u$Yl3X6hEK`E=;)g1NQKx>ooCQ+` zUl=D!tB>}0nYQ7vjKZ-o#o7y&`6Jz=&nOB`>B#-?;hJc8&{Z+|r1~V(PEFUf`eX)x zOta8UbaLEO50z%GXmXcvt3(J-P<3{@G2<)l?{W3TJ zkcs+pg(Z!`_5}u*CCb5uY|2cN7`X2yhnXZ6CQApq7N&&bKI2->VLK53!n@8-HFwrL z(=7CQb$?GQYB1XGtQE};=UY^}O&D=((djfr;%#-S6KgQK?3xaR|98JO5N#bq4V3kw zKgv-01%$;))jDUN@UdF&h?0<(h+{60B@M z`k~D@#*6QOa%;xk;0yC4zmtERz-V8nb5#u&ZHP_4bcv~%BB;B8bi>mQb{&%%)zi-Y z`h~`jgo?mJ*)eMh{7X-3!Y7DY5>R-in0-D%!`A2iQn<|YWTNpzmY>J%weVYToccLR z{FVAHn%s|SdG}s2y7IGe;k+;k-I*jjjQ%Ef5}`2R6T};^OxpsIrDCgtXkQ32;x-V2 zT3-tkncgTA+Yz(|coj{C4!Ltxh~keDLWlr{@|*rL?pV5Xp_?Ai(%`+a0Y!rwNwKTI zIv!XKjL8_o%m@)E#3@qAjK$gPoG{3Q%}&eJ3D&yJfB`u`YFSJ{xDmK|*OqB`6Fwm` zpTv|+AHA-^H_+4kT2RfbOZh^7P!Jn(SMCrHLy}4F3jb2OEp09b0vy-OPp14UthlJHkUWWP;w1`dTWvbiAHmg@!$5-lX z4-cTfJY@BFohaEr8z013Hum$hPP&`OOFo&Pn-thMWw}cCS z@Y2DmA?vX9%{D|?))C+ki!u(v?~x7!^EJ3N%6a7O*%nS#4qk7I5niN_PU?Y{{8|yTYU^CWU16#L!o11*s0z;c{R#{EKsze41?yPYF2m+^0LV9xVXX5>M-p9*yKj$Oa z+(fW~j=Q(*inbmj^71?$pRz1Ocj~;_5xtX;TW2F*06U!?xVbhOd1F)i367KaF#n*i zIZK8Uc3o9B$IA%?-S(h+M@shvE+u&KYUky=mcD2GPbpDbl=LH9@;GTX+yVHpkwa!Es+-|u7d~6pJCNM8Q(ZNfnO}+HS!M1Xv znnt3l(Ww8qbc7*iPx=hh=oi5EPr^lJN(13z6m*wWPJzLVgQtSEk53vto$tkf?Ffce zb9C2(E?**ZXmcL&at6uY0S}3`B65LAg>FfY>gfC@s_C5n8wHukZ&J=n)UPcp*C`n9 zi1}>)qg;R;jl1Y(al=^UDXNcQo7py?E+9ej+YK@?R0nNXFn_@_?$QV^{x=eBqV33~ zQ6J(zD_w`h|P z07bSV9?5Rz+s6rvS4k7C&Z-25S24Oszg3E$n6#jmNGQ}>GbAO=6yALaZM8bwmw(S1 z-P$K@Ta2Ocy1{Ex;X`ro#Z5N^*M6fPh3amiDT>1JK@ml2h>yx==s`S?cL;)g?}g{M zkmmaH{kcRwQtBJQtpw9mSl6ox3}cV5YlAa!f%GjpArp9@U3Z9uPgV zs39Kl$_koE<0xLjwsTnY9frS)YI`##EtaDnSug#`(A$nokp5*mZERe)R53J7{-y@Y zLXFEx)E4Hit(R#VM#IxP_|QvlA0$||*&Bo45EG_UE$i7`_)g>v=38yU2qS%UXB6^f z9CP@bTB^6$MKR_!kyThM80-x4X6LMM=%3GBU-+u?YMicQHz{2Df^}NnXDvf)bHA9b zJTFVp?ha=Ata`?BD9<%O=yvd1K$n;mgy?it0h((jb-0EJ-s^*e)ouj0)@b;%#0Y@- zwsUQ8c*64Z>O%7(kc{c8ldf$#nd94NF0l6<7Gbq9nB&M%$H10ARM}I8eV*+cwkQHmQXD1pk?-o)#1}<2@uh^gUNJty%W&RdOgbLb; z))d2=4E2SQc5b1g1J^|T8E>2xBRx-m5H3#}-h`~;L*q37Fo_-n-N5%8YgvR(0%Y?1 zITfY4b-H}1VX3=D^^fn4oh+foGOWEI-O^lj-lJS>h>})#r8HWOy@5RTm z1SFAcD5B>$hGm)vO`I)>cOm3Tt+llp+VgB&DQ+&>pb!*qK2bR90I_d))8cbIpxAIu z!uub>WsE37&i?Srj`CyCNlb*(UR#sNO@46-<^*($fLZVdD#Ta*Y(ySsEB2C+FNjhF z0HU&^ijzF02`&+f=qPkRG)*rMk=6$hh5m@_1(~NlJZgG#xGStNyYUN~wyPuZM^@=m z-kA+>Bk}?Lrzue228M!8!jUcy?Mf5WtkoO#ycb~1RnkdSze0ui7T8=!2O(Xp;7 zQ^n0fOqo*OU*bcPX!$xtdg6sBOivC-<_bREUUHYcEFUG&g%D;t`k9>j1MZLi5^8A6 zOaAR0+ND{MBukyBO`Qrn-3&lVNQWAxZ#tNNr-$d2$Jh=n|^!cndO+9r$^W>WkSd1QfTzmY|!*3*vF z0{~x>SJ=9Cc-cLfA`Xydjtvf;=ye*-p?3s%Mv}n5r zfpux1uYO|COqr=|2hZxfJC78L7BO#U@XdzSIkgk2>YpnAon4dT_$Kd;h=HnU;i;*7 z%B%VoA|8s_8mo3)OnNZJTH2v=g?8v)?2RwJ2ql<5rU#s57}3gOC%DUE3g3VcX0zF8 zKkZM~Z(tC+Tru+@RB5jjr^$Nd^F#x7#|0SG>%W;Zs>yR@s|ZT!LluYPR|xpdFnF>M znfT~Prb~XD?bmpf<9-+bNYyTU>XX3K*rqnIW(!AN@*l&2<8NEF9-57A{dbu5{s+10 zPdNhec%G&66jEjGm=NubtLB){HQAui7h+Dle+iB3-D@Iz^J4YtT1KxqktZ0d`hS6{ z1p~7*uh4$}4z|pz>TH54ij$XWZSlBohQz>F)RlqzuADXIh9~^ufDY%kL;WY`ud5vI z_aLsOzAXf;8OE0j|B)@(*U8JhGlDx`F>tqYI(0-08iSLXg0TLmxy`0l739#SIn?0A z3R;2|1Et8=BaHHcn1<~ba**zCBA-fsV_yKq?DiKJrd?w_ZHF2*cEKuld?W!`#bM!B z+a$nFo&_ySD;N5SVS}0F`?ua&x|aFhYP<-iMSc(euf=?+JeLrV@=;G2fd;;V6=n5o zNNFR`el9y)>0%>lG#{ca-_JqqC0nmX?V?|R?bc8#4}l261Rnwm1N75M)_`*(RNiJ+ z38NWERCC~9j|9hHXnZy#==JSVey$ksZp{(A-@_laft+*rEkTXd8I8Nx3glE_|aruD5JO$GOOz4t}k%=$c!Di9*W6L zPa4gVGgwcRWL*=emq(})%r=oU87@f9lfapsFzPFoiqb_?D8}O$W}wSnLCC!!)$<4& z`-nq>6;+u{yS^4X5idmlcOcX*j2b!xdciV*Y zGVWlmlkIJ)u+G^nIG9=sK|NqT+Mfr9tL4Q?FA3#b?$+BG2L?pSeD~IyDzhB~8|?6T z6x+<-=OH`muHTe3bP(C2eTAp7pF$B<)ad*!uZAs&k9D*OvfsWjx6>2lr(+E!VB8ow z%JKJ#S66+tqFEXussbGtx&}##Zmlsakbt8qo@f{K>(AC^dhuwIS=TYwkd8#Rdq{8ibhCvU`l^kgPkwDu9QM_HB>CoF@10~ zt;{K+FoN{0kc0;K3Y{fF4&n5kV|Rokmowj><-s*_wHGKPHnDt&@P3)p@M#cXAzRdq&K&TIBu~`sR{10%UFa9Y>i}Cu{Uz#_ z{#$U>$X{wT*Xb0B4rd`@eU+LoyAd0IgaAfSnvt4GPjk}n$&9wTC1u<}h`=FV)gveW zgu)f^t$;=9A`o`j_smlbf^(!b=X7v(qxY9MnYg`!^+JFo?EstJ&Pqk#9W;UbPkE#v zwD>{e)F)`L@}CpIksAB`Z_;>@w(?_(5|%S<*!;nKb?%F&ke^iH&gQ+AguW&M3ys=A zb(X=Nh}hSZWGE{lWjo7-=#F(>a0>NxW|KKzo#sd5s8W3WDZ;H2ViX?lMT&C(^7N_V_hEAG{Q56N35 z*r(4pUQ`s?a~<=?&Bipg)#+;rg880c~uWl?tcy#hcGBtY$(qxP+XM8i@sPso^P z95}kvCUSM1MDM*k`b(w(EKJw$O<=mBe79jX1_dZxikR#<(r^6>h=;;j;iTXbaB}ZW zmJ??%-9-asKrgn4l#Hd`0%83#FcXfM;_ge|G_xbTvlE{R?FXuIjXTKNdxt4@t5RdH z*%V2d!UKj3H(_b*Mqz|tlJ85sO8^*OtFhpbujNsj7S~YIL9UE;Dd7k`PK4%34e_MI z$x5;=N14`cS0w8=%AJF8yeh9tIQiX$cZ4@FLl4A;Xa^10HUIG zz;6Tij92pd$Fah`8p&T@oTSTaEUXIh{Xzr54of``MhobjAyMCOMqb6bE-z=Qut3dt zX!VQp#jDX`DY3~H5sbB!8B{Y+6vc3j_X4;*uh=|eGW&bHx~LfYii3&MHBeh%&pl}l^M3PeDLO^@kIOd*Sy zd9o{=5`;JYSvHE9&(7Cng)Lzzmx54B9;-ae%xwvFBTL5@xxZ-3;F!X$ksJsyiz1c= zq63a2D%V0|Nrg6V3q`;vt9oUypFmaa7uhueRZxmAwuMMdop$^~Cze(tes2yVda8)( zXmrtckh>?^rY<@NyV&QLucC%FE%VVcbzEnu{o4IW1#08fmGw&B>N1&NDxzmK=UO(M z{9BDzNUdVVK2%&6xsuACFlXEy>Je6#-2$04)Zae7q;C3;i^2b!0$$BhM7Y?6BtmFk zf$uqDX)2W1^du8+j2Wn6YDAcMTfAur1wF-O`81U;R8l#&?aW0$3GDvg6#3l%zrR(W zKLfQ*;f=*ZIGOoVV%&G?i8OijKl*odr{{PA$P&}{L}Igl#n}#v1PK(}SXr-?PShBJ zv07wPnXAIyUax%iT`8$_)p6`lkqDjrP_uX?Gvso8uFtjD+sHMzUF#vKpKbB;Y+vcFY*+*TW| z`-k=bPVFIn!CbPI5`hXJTU=$mnH7M%K5FL#sr#=rp_f57aq z$?ht>o)#RDpqvn%D`J4W)u703*mC|@g8r69hFW+^8^_`$5XM~AjJkXb^E%-j8bmM; zM=7CWRLHrS_1PAE_7o40l%W3LP|OsOH0fIUylaOy+M_w3Q+>uO8Rsr~9y z*boX5{Drs?UeWYoBbkLN((=DjhjNC>pQ)S7F25K{oor%}xft)F1YjpiUAVJFuB+HqUzpLLnDGwxl_l2eRWV&owatZgI zRMY_;cIgUwMx37gF_j~vRsp5%Cii5J%{=ewEWBmIyg~@t3t=C}CBU8FCZJpNDtzoP zmUXm@23kI)vf@Wg_G;7$DPpF6QH?kkS%jtd(FA9PGj6XZ+Q-s*Kw@nujI>{adnyx$ z;8?l!EYm}GUj+QcEaP;EsR<^= zm*vV?x|7nS@@JwE_H(O0u9CeEZq^{j+}rC@or@0-*nFjYkc$`MT8$Vu%@gwuQKS_n z`M3vtpVEnGK9cqbF6PUP@>9!zT2ft(8nuan1Yu{|!8a!4DmM+J2*0eRKAyp;&il!C zdTG-TXD^oc^MABmDH7wtgbRfVh&VWba`8rh`M~M6 z1(O;{xkiny@BauLDMoFe=Wh2!+<7AArQWc^@cROxMPu*Q8r8&zDt29oH&lYVCpQfx_oih~78Srt*AT+I+WN@g{45?R& z?#IS<-{LIuS~QmB{s{G=MeavN#-o|7@Dt~e2+-KJ)z1!LPifGQc`D8P|87hf$MYz+>KL@zv7114n~0`g}N!n#Emed&}&vTHgZ zcw&{^o~&j)4Mo*2aF+do3thKwA)MHJICm334DWhmJDbU5Zo{X zC*6Z5Pe9j^#0IQPGtCPvKhQA%9;<|~Gwwm*TynEJ-Mr(rV5ewOupWTckWqQV)q=ef zy=5R$Vy36w4x*?K#SC^D9Tby(9}>B`xPk1}&`-77I)J$C+J;Wv0YaS@n!+C^vrK=7xZ#n*o;;cb{XRN@$8{%O3TP>RotS zq4<~Ts~5(g)v@Ds@9k~#&p>dKa?~sVzRLG25$*oi1I9_}QPY;)C)gDCK?M|B>BRs9 zW2tq#F08fbxWz2Y;~fY)zDW~Dm@>4D-)7jVahsiwyvsk4(9z6RxeyJO0V027v?ZZL zA3j+2^z`u5LFg3keTn6FLOz=iN+PQQD%`)e%7ti#aumQ3laf`#1q>u?rPwv{=;?RV zOG^6s^tgu&QTb?tEU!d10!7}KxEm~!3qrT_h>Dq==sSf7AnoN10kcl;^2Ns;b8U!W zxE8Y-^EIYslVD#OaRC!R!-a#!0>!`XLRz0xnY-%N9MO<3rALCsH#koxlSOLx}LVU&;7~`#5Dp<5GAeBRLz^yESaP%VGZtTdthf z)iF13Rv;a-Y5S5Tm!F;ae$e_2U=|YJ%h8-~nFFXsd+$I|Kecl4fUZ+{=clbzsIh;2 zl6KlMiQ`2y#pm2%D-%mv`N)fmUbx!nJw9s2ofFU%w2r{;sNAlnq0-j6aXw04wu34G zNNvFV$V4m#8Ih}mHkk3RvzhW92=VyZpr&{mtCc^#ZCoOJHEvIP-W>BAi!FDXq(Io^HA_%b&U%#E_vK@;P z*MTnt-*-#I8Gxs@M*uKiWKN{-v9K{o#=2H9f`ASmv39X|o7p=iUPNOj zISuo(4J3P0Z&7S7#~~~Da9pC+<4ntb@iQW4mID!W0)HZ&%wUed|2*sjRw)|6b-cYf z2{*ErCXAq^CeIiB`WM!(_s4z9<{VSJRy;R6&dk47Q^~tT;YLCZ-Q_Uj4KU>sVJT*# zj=APe9bT#>zt9hVy<$cmK#alNWA1R^MuSHMEe1WUt8yy}q0C(E4h(!&Iy&#=4$xBZ zVvQRNv@cPlSL1VJ8k;y&*pE8ojK26Dt2_C&eAu0;w4Y5~W}onz0Q5It?`0oI$Rvvp z-Cn;{pzKY_A;L;CY;V-Jr?lJJnmAff?0tc-3$x{Q8EiUUo&QXo@)}0{Vo-OqSQpbDR46NOH=)ia{YVf`YGw_>b5kQG#DUpWecUkQ}*oMgi?~H$jf=l zIDu;Fe!mO!%$Rd5I<)o4rxZqJ%TV(x=+?bBV5l%@V8SsCn%H?gCb|B{-lCk`6O+Mu zIO=YIo6YL(x_u!agm*^}$QhN0_+^;u`uY8jE3p@FHu*EnfD z>v0iLG0kGSJIyJx?|e4Iqv zovwZ&?gJU@DcR1j(M;xS^li?)Yk%W9=>UTK$lJt_ynQeuR!Ein8!9CV47#DdNKcUK zum-gPd1I(B%I<2EL*}M^taz*AxqNcF(}kQP5^Z-(WkdYsG!c7;!MjLO7!nAt>3Jq% z7SKh}Dh%dsb;aQmvPZ@L{YpD>+=rgG`*9d}2IFRpmP{2I>>I;jf%KcIT ztNLj=4@XoI^7`cZZ!fQxWgRQj6dNVNe$Ea>dcv_cu@faRfAYk#k=B1(vNp_lYAw

F(`4Fo$xoeen=vr&CsUh<^WF_@`><=k(=YR$Y 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 bggpUaD9eH1eI8K5fs^z9*DW}C9qrPy;{QYN literal 0 HcmV?d00001 diff --git a/MikroMaster/20260612/20260612044002-Config.rsc b/MikroMaster/20260612/20260612044002-Config.rsc new file mode 100644 index 0000000..7b29afa --- /dev/null +++ b/MikroMaster/20260612/20260612044002-Config.rsc @@ -0,0 +1,3596 @@ +# 2026-06-12 04:40:04 by RouterOS 7.23.1 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add dhcpv6-agent-circuit-id="\$(INTERFACE):\$(VID)" dhcpv6-agent-remote-id=\ + "\$(BRIDGEMAC)" name=Bridge-LAN port-cost-mode=short +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" loop-protect=off name=\ + "ether1 - Unet" rx-flow-control=auto tx-flow-control=auto +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface wireless +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=55982 mtu=1420 name=WG +/interface list +add name=LAN +add exclude=LAN name=WAN +add exclude=LAN include=WAN name=Internet +/interface wireless security-profiles +set [ find default=yes ] authentication-types=wpa-psk,wpa2-psk mode=\ + dynamic-keys supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +add dns-servers=10.30.30.81 name=reg.vados.ru verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip 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 smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-client option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=DUID value=0x00030001488f5a8e1abc +add code=61 name=clientid +/ipv6 dhcp-server option +add code=119 name=domain-search-list value="0x03'WORKGROUP'0x00" +add code=12 name=HostName value="\$(HOSTNAME)" +add code=61 name=CLIENT_DUID +add code=61 name=CLIENT_MAC +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \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\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \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\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\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/679/bd93dce4\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 08.06.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 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=\ + "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 \"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 \"facebook.com\"\r\ + \n \"instagram.com\"\r\ + \n \"x.com\"\r\ + \n \"twitter.com\"\r\ + \n \"youtube.com\"\r\ + \n \"googleapis.com\"\r\ + \n \"youtu.be\"\r\ + \n \"googlevideo.com\"\r\ + \n \"gstatic.com\"\r\ + \n \"googleusercontent.com\"\r\ + \n \"nhacmp3youtube.com\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"RKN-dnsLookup\";\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 :retry delay=500ms max=5 on-error={:log error \"dns resolve fail\ + ure [ \$aItem - resolve ip ]\"} command={:resolve \$aItem}\r\ + \n# } on-error={\r\ + \n# :log error \"dns resolve failure [ \$arItem - 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=\$newA\ + ddress comment=\$aItem;\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\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 :local cnameAddress;\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 :set cnameAddress [/ip dns cache all get \$aRecord d\ + ata];\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =\$cnameAddress comment=\$aItem;\r\ + \n :log warning \"Succesfully adding ip to list CNAME r\ + ecord: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \ + \$aItem.\";\r\ + \n# /ip firewall raw add action=add-dst-to-address-list\ + \_address-list=\$ListRKN address-list-timeout=none-dynamic chain=preroutin\ + g comment=\$aItem content=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list CNAME reco\ + rd: \$cname, A record: \$aRecord, address: \$newAddress, from domain: \$aI\ + tem.\";\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:30: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 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name="renameLists " owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + local oldName \"Test\";\ + \n:local newName \"Test-IP\";\ + \n/ip firewall address-list\ + \n:foreach i in=[find list=\$oldName] do={\ + \nset \$i list=\$newName;\ + \n}\ + \n" +add dont-require-permissions=no name=IPv6-Settings owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + #############Script Settings##################\ + \n\ + \n:local \"IF-TUN\" \"6to4-tun\"\ + \n:local \"IF-LOC\" \"Bridge-LAN\"\ + \n:local \"POOL-6TO4\" \"poolV6-local\"\ + \n:local \"force-update\" false\ + \n############ use then static ip #######################\ + \n:local \"lease-address\" [/ip address get [find interface=\$\"IF-LOC\"] \ + address]\ + \n#:local \"interface\" \"ext\"\ + \n:local bound 0\ + \n\ + \n###############################################\ + \n\ + \n:local 6to4prefix do={\ + \n :global dec2hex\ + \n :local ipv4 \$1\ + \n :local ipv6 \"2002:\"\ + \n :for i from=0 to=2 step=1 do={ \ + \n :if ( \$i = 2) do={\ + \n :set ipv6 (\$ipv6.\":\")\ + \n }\ + \n :local fp [:find \$ipv4 \".\"]\ + \n :if ( \$fp > 0 ) do={\ + \n :set ipv6 (\$ipv6.[\$dec2hex [:pick \$ipv4 0 \$fp]])\ + \n :set ipv4 [:pick \$ipv4 (\$fp + 1 ) [:len \$ipv4]]\ + \n }\ + \n }\ + \n :return (\$ipv6.[\$dec2hex \$ipv4])\ + \n}\ + \n:local \"str_replace\" do={\ + \n :local \"str-pos\" [:find \$1 \$2]\ + \n :local \"str-len\" [:len \$2]\ + \n :local str \"\"\ + \n :local rest \$1\ + \n :while (\$\"str-pos\" >= 0) do={\ + \n :local t [:pick \$rest 0 \$\"str-pos\"]\ + \n :if ( \$4 > 0 ) do={\ + \n :for i from=1 to=(\$4 - [:len \$t]) step=1 do={\ + \n :set str (\$str.\$5)\ + \n }\ + \n }\ + \n :set str (\$str.\$t.\$3)\ + \n :set rest [:pick \$rest (\$\"str-pos\"+\$\"str-len\") [:len \$re\ + st]]\ + \n :set \"str-pos\" [:find \$rest \$2]\ + \n }\ + \n :return (\$str.\$rest)\ + \n}\ + \n\ + \n:if (\$bound=1) do={\ + \n :local t [:find \$\"lease-address\" \"/\"]\ + \n\ + \n :if ( \$t >= 0 ) do={\ + \n :set \"lease-address\" [:pick \$\"lease-address\" 0 \$t]\ + \n }\ + \n\ + \n :if ( [/interface 6to4 print count-only where name=\$\"IF-TUN\"] = 0\ + ) do={\ + \n /interface 6to4 add !keepalive local-address=\$\"lease-address\"\ + \_mtu=1280 name=\$\"IF-TUN\" remote-address=10.30.30.0\ + \n :set \"force-update\" true\ + \n }\ + \n\ + \n :local \"IPv4-TUN\" [/interface 6to4 get [find name=\$\"IF-TUN\"] lo\ + cal-address];\ + \n\ + \n :if ( \$\"lease-address\" != \$\"IPv4-TUN\" || \$\"force-update\" = \ + true) do={\ + \n /interface 6to4 set [find name=\$\"IF-TUN\"] local-address=\$\"l\ + ease-address\"\ + \n /ipv6 address remove [find interface=\$\"IF-TUN\"]\ + \n /ipv6 address remove [find interface=\$\"IF-LOC\"]\ + \n /ipv6 route remove [find gateway ~ \$\"IF-TUN\" and dst-address=\ + \"::/0\"]\ + \n :local \"pool-prefix\" [\$6to4prefix \$\"lease-address\"]\ + \n :if ( [/ipv6 pool print count-only where name=\$\"POOL-6TO4\"] =\ + \_0) do={ \ + \n /ipv6 pool add name=\$\"POOL-6TO4\" prefix=(\$\"pool-prefix\ + \".\":1::/64\") prefix-length=64\ + \n } else={\ + \n /ipv6 pool set [/ipv6 pool find where name=\$\"POOL-6TO4\"] \ + prefix=(\$\"pool-prefix\".\":1::/64\")\ + \n }\ + \n /ipv6 address add address=(\$\"pool-prefix\".\"::\".[\$MAC2EUI64\ + \_[/interface get [find name=\$\"interface\"] mac-address]].\"/3\") interf\ + ace=\$\"IF-TUN\" advertise=no\ + \n /ipv6 address add eui-64=yes from-pool=\$\"POOL-6TO4\" interface\ + =\$\"IF-LOC\" advertise=yes\ + \n /ipv6 route add dst-address=::/0 gateway=(\"::10.30.30.81%\".\$\ + \"IF-TUN\")\ + \n :local t [/ipv6 address get [find interface=\$\"IF-LOC\"] addres\ + s]\ + \n :set t [:pick \$t 0 [:find \$t \"/\"]]\ + \n :if ( [/ipv6 dhcp-server option print count-only where name=DNS]\ + \_= 0) do={\ + \n /ipv6 dhcp-server option add code=23 name=DNS value=(\"0x\".\ + [\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n } else={\ + \n /ipv6 dhcp-server option set [/ipv6 dhcp-server option find \ + where name=DNS] value=(\"0x\".[\$\"str_replace\" \$t \":\" \"\" 4 \"0\"])\ + \n }\ + \n :if ( [/ipv6 dhcp-server print count-only where interface=\$\"IF\ + -LOC\"] = 0) do={\ + \n /ipv6 dhcp-server add address-pool=\$\"POOL-6TO4\" dhcp-opti\ + on=DNS interface=\$\"IF-LOC\" lease-time=1d name=\$\"IF-LOC\"\ + \n }\ + \n :if ( [ipv6 nd print count-only where interface=\$\"IF-LOC\"] = \ + 0) do={\ + \n /ipv6 nd add advertise-dns=no interface=\$\"IF-LOC\" other-c\ + onfiguration=yes\ + \n }\ + \n }\ + \n}" +add dont-require-permissions=no name=IPv6-GlobalFunc owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global MAC2EUI64 do={\ + \n :local EUI64 \"\"\ + \n :local MAC \$1\ + \n :local HEX2DEC \"0123456789ABCDEF\"\ + \n :for i from=0 to=5 step=1 do={\ + \n :if ( \$i = 0 ) do={\ + \n :set EUI64 [:pick \$MAC 0]\ + \n :set EUI64 (\$EUI64.[:tostr [:pick \$\"HEX2DEC\" ([:find \$\ + \"HEX2DEC\" [:pick \$MAC 1]] ^ 2)]])\ + \n }\ + \n :if ( \$i = 1 || \$i = 3) do={\ + \n :set EUI64 (\$EUI64.\":\")\ + \n }\ + \n :if ( \$i = 2 ) do={\ + \n :set EUI64 (\$EUI64.\"FF:FE\")\ + \n }\ + \n :if ( [:find \$MAC \":\"] = 2 ) do={\ + \n :set MAC [:pick \$MAC 3 [:len \$MAC]]\ + \n :set EUI64 (\$EUI64.[:pick \$MAC 0 2])\ + \n }\ + \n }\ + \n :return (\$EUI64)\ + \n}\ + \n\ + \n:global dec2hex do={\ + \n :local hex \"\"\ + \n :local dec [:tonum \$1]\ + \n :for i from=0 to=4 step=4 do={\ + \n :set hex ([:pick \"0123456789ABCDEF\" ((\$dec>>\$i)&0xf) (((\$de\ + c>>\$i)&0xf)+1)].\$hex)\ + \n }\ + \n :return ([:tostr \$hex])\ + \n}" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/ip smb +set enabled=no interfaces=lo +/interface bridge port +add bridge=Bridge-LAN interface=ether5 trusted=yes trusted-dhcpv6=yes +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether4 trusted-dhcpv6=yes trusted-ra=yes +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set use-ip-firewall=yes +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN lldp-med=no lldp-poe-power=no protocol="" +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set accept-redirects=yes ipv4-multipath-hash-policy=l4 max-neighbor-entries=\ + 8192 +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + max-neighbor-entries=8192 multipath-hash-policy=l4 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=Internet \ + 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 wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=172.172.87.67 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "HTofQ0KtUsZij7zFn0F72r8oatxGn/el6bzLhM9El1g=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC interfaces=wlan2,wlan1 lock-to-caps-man=yes +/ip address +add address=10.8.0.2 interface=WG network=10.8.0.0 +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +/ip cloud +set update-time=no +/ip dhcp-client +add default-route-tables=main dhcp-options=hostname,clientid,clientid_duid \ + interface="ether1 - Unet" name=client1 use-broadcast=never use-peer-dns=\ + no use-peer-ntp=no +/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.8.8,8.8.4.4 +/ip dns adlist +add disabled=yes url=https://ros.vados.ru/dns/vados.ru.local +add disabled=yes url=https://ros.vados.ru/dns/30.30.10.in-addr.arpa +/ip dns static +add comment="Local DNS server for vados.ru" ns=10.30.30.81 regexp=*.vados.ru \ + type=NS +add comment="*.vados.ru Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.vados\\\\.ru\"" type=FWD +add comment="*.30.30.10.in-addr.arpa Regexp" forward-to=10.30.30.81 regexp=\ + "\".*\\\\.30\\\\.30\\\\.10\\\\.in-addr\\\\.arpa" type=FWD +add address=10.30.30.81 comment=NS.vados.ru.local name=ns.vados.ru.local \ + type=A +add comment="DNS ns.vados.ru.local" match-subdomain=yes name=vados.ru ns=\ + ns.vados.ru.local type=NS +add address=10.30.30.33 comment=reg.vados.ru name=reg.vados.ru type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" match-subdomain=yes name=\ + dns.google type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" 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 match-subdomain=yes name=mikrots.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" disabled=yes 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=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one 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=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.20 name=garage 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=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-IP +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-IP +add address=geoip.co list=NoVdsina +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=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=amster 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=VDSina +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!!!" 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=VDSina +add address=vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns.vados.ru comment=VDSina-vpn list=VDSina +add address=vdsina.com comment=VDSina-vpn list=VDSina +add address=cp.vdsina.ru comment=VDSina-vpn list=VDSina +add address=ns1.vdsina.ru comment=VDSina-vpn list=VDSina +add address=10.30.30.0/24 comment="Local Network" list=Local-Net +add address=10.8.0.0/24 comment="WireGuard Network" list=Local-Net +add address=146.120.64.208/29 comment="External Net" list=Unet +add address=esia.gosuslugi.ru comment=esia.gosuslugi.ru list=NoVdsina +add address=lk.gosuslugi.ru comment=lk.gosuslugi.ru list=NoVdsina +add address=trudvsem.ru comment=trudvsem.ru list=NoVdsina +add address=10.30.30.30 comment=miller disabled=yes list=NoWG +add address=10.30.30.33 comment="Direct connet to DNS servers" list=\ + Direct-DNS +/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="ether1 - Unet" protocol=\ + udp 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="ether1 - Unet" protocol=tcp 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 \ + in-interface="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface="ether1 - Unet" protocol=\ + udp +add action=accept chain=input comment="tcp Accept input DNS queries from LAN" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=tcp \ + src-address=10.30.30.0/24 +add action=accept chain=input comment="udp Accept input DNS queries" \ + disabled=yes dst-port=53 in-interface=Bridge-LAN protocol=udp \ + src-address=10.30.30.0/24 +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=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server out-interface="ether1 - Unet" protocol=udp \ + src-port=13231 +add action=accept chain=output disabled=yes dst-address-list=VPN-Server \ + dst-port=29185 out-interface="ether1 - Unet" protocol=udp +add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + disabled=yes ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + disabled=yes 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 in-interface="ether1 - Unet" src-address=\ + !10.30.30.0/24 +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" src-address-list=\ + !VDSina +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 +add action=accept chain=input protocol=icmp +add action=accept chain=input connection-state=established +add action=accept chain=input connection-state=related +add action=drop chain=input in-interface-list=!LAN +/ip firewall mangle +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-routing-mark=main passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment=\ + "!!!ERROR Mark Routing main for Unet!!!" disabled=yes dst-address-list=\ + Unet new-routing-mark=main passthrough=no +add action=mark-routing chain=prerouting comment="Test-IP sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test-IP new-routing-mark=\ + To-VPN src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=FuckRKN disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=RKN-dnsLookup \ + new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + new-connection-mark=VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" disabled=yes 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" disabled=yes \ + dst-address=10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment="udp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=udp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=redirect chain=dstnat comment="tcp Redirect DNS in NAT" disabled=\ + yes dst-port=53 protocol=tcp src-address=10.30.30.0/24 to-addresses=\ + 10.30.30.81 to-ports=53 +add action=masquerade chain=srcnat comment="Default NAT" out-interface=\ + "ether1 - Unet" src-address=10.30.30.0/24 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp src-address=\ + !10.30.30.0/24 to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" disabled=yes \ + dst-port=2904 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2904 +add action=dst-nat chain=dstnat comment=reg.vados.ru disabled=yes dst-port=\ + 5000 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=5000 +add action=dst-nat chain=dstnat comment="Docker swarm" disabled=yes dst-port=\ + 2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ + to-ports=2377 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=80 +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=SSH dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp src-address-list=TRUSTED to-addresses=\ + 10.30.30.33 to-ports=22 +add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ + !NoVdsina out-interface=WG src-address-list=!NoWG +add action=dst-nat chain=dstnat comment="portainer agent" disabled=yes \ + dst-port=2377 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=2377 +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=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + 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=\ + 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=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com \ + disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com disabled=yes +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com.akadns.net raw" content=smtp.mail.me.com.akadns.net \ + disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + esia.gosuslugi.ru content=esia.gosuslugi.ru disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gosuslugi.ru \ + content=gosuslugi.ru disabled=yes +/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 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 certificate=Root-YE 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 forced-ip=146.120.64.211 interface="ether1 - Unet" type=external +add forced-ip=89.110.101.17 interface=WG type=external +add interface=lo type=internal +/ipv6 dhcp-client +add add-default-route=yes disabled=yes interface=*F rapid-commit=no request=\ + info use-interface-duid=yes validate-server-duid=no +/ipv6 dhcp-server option sets +add name=domain-search-set options=domain-search-list +add name="=\"Client ID\"" options=HostName +/ipv6 nd +set [ find default=yes ] advertise-dns=yes disabled=yes interface=Bridge-LAN \ + managed-address-configuration=yes other-configuration=yes pref64=::/64 +/ipv6 nd prefix +add autonomous=no disabled=yes interface=Bridge-LAN on-link=no prefix=none +/ipv6 nd prefix default +set dhcp6-pd-preferred=yes +/ipv6 nd proxy +add disabled=yes interface=lo +/ipv6 nd settings +set router-advertisement-route-distance=100 +/routing settings +set single-process=no +/system clock +set 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 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 package update +set check-certificate=yes-without-crl +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add certificate=DigiCert-Global-Root-CA check-certificate=no comment="doh, doh\ + -url=https://security.cloudflare-dns.com/dns-query, notify, name=CloudFlar\ + e-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 http-codes="" \ + interval=10s name="CloudFlare-doh IPv4 1" port=443 test-script="" type=\ + https-get 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="" \ + name="CloudFlare-doh IPv4" port=443 test-script="" type=https-get \ + up-script="" +add comment="dns, notify, name=Google-DNS IPv4" disabled=yes dns-server=\ + 8.8.8.8 down-script="" host=dns.google http-codes="" name=\ + "Google-DNS IPv4" test-script="" type=dns up-script="" +add certificate=GTS-Root-R4 check-certificate=yes comment="doh-fallback, doh-u\ + rl=https://dns.google/dns-query, doh-cert=GTS Root R1, notify, name=Google\ + -DOH IPv4" disabled=yes dns-server=8.8.4.4 down-script="" host=dns.google \ + http-codes="" name="Google-DOH IPv4" port=443 record-type=NS src-address=\ + "" test-script="" type=dns up-script="" +add comment="dns-fallback, notify, name=Cuad9-DOH IPv4" disabled=yes \ + dns-server=9.9.9.9 down-script="" host=dns9.quad9.net http-codes="" \ + interval=10s name="Cuad9-DOH IPv4" src-address=146.120.64.211 \ + test-script="" timeout=800ms type=dns up-script="" +add certificate=DigiCert-Assured-ID-Root-CA comment="doh-fallback, doh-url=htt\ + ps://dns.quad9.net/dns-query, name=Cuad9-DOH IPv4" disabled=yes \ + down-script="" host=149.112.112.112 http-codes="" interval=10s name=\ + "Cuad9-DOH IPv4" port=443 test-script="" type=https-get up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" interval=10s name=\ + ns1.unet.ws test-script="" type=simple up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260612/20260612044002-Diff-Config.rsc b/MikroMaster/history/20260612/20260612044002-Diff-Config.rsc new file mode 100644 index 0000000..78c3926 --- /dev/null +++ b/MikroMaster/history/20260612/20260612044002-Diff-Config.rsc @@ -0,0 +1,22 @@ +25c25 +< add listen-port=55982 mtu=1420 name=WG +--- +> add disabled=yes listen-port=55982 mtu=1420 name=WG +2598,2599c2598,2599 +< add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ +< endpoint-address=172.172.87.67 endpoint-port=29185 interface=WG name=\ +--- +> add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 disabled=yes \ +> endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ +2601c2601 +< "HTofQ0KtUsZij7zFn0F72r8oatxGn/el6bzLhM9El1g=" +--- +> "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +2607c2607 +< add address=10.8.0.2 interface=WG network=10.8.0.0 +--- +> add address=10.8.0.2 disabled=yes interface=WG network=10.8.0.0 +3476c3476 +< add check-gateway=ping disabled=no distance=1 dst-address=0.0.0.0/0 gateway=\ +--- +> add check-gateway=ping disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=\ -- 2.52.0