From 9633358ec2ffe1c8936f99d31c9b799b0edd4a6c Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 12 Jun 2026 09:41:15 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at Jun 12 09:41:15. --- .../20260612/20260612094002-Binary.backup | Bin 0 -> 271415 bytes .../20260612/20260612094002-Config.rsc | 3604 +++++++++++++++++ .../20260612/20260612094002-Diff-Config.rsc | 54 + 3 files changed, 3658 insertions(+) create mode 100644 MikroMaster/20260612/20260612094002-Binary.backup create mode 100644 MikroMaster/20260612/20260612094002-Config.rsc create mode 100644 MikroMaster/history/20260612/20260612094002-Diff-Config.rsc diff --git a/MikroMaster/20260612/20260612094002-Binary.backup b/MikroMaster/20260612/20260612094002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..54ea96c7ccbc687b8834f9721f96edfb07c40c04 GIT binary patch literal 271415 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%0D5tFzW;Kb0GK;nDviisq?6PhEiI~ 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 wK%A*sZ8p~*e+kD+maZ&HkR5^k9PLCcPg{t@w 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

2MzvKPh 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

  • -1O1LRgeEkDROA?MJbIA;)lAvtQbob*a>e%g*FiOFWw%i#{4{_DW4$IDg zb}AmO7=7CqP%csgF&NjPy+5ofMa*J=aH8N_B2qdJrc>UG8)7Z(f}?+ySGTUO{0Mb- z#dmR8vhnY`bU>vg+a-o>k_t%g3m&>)9A=7#!{ed+^U zw(^b%_9};IT*$_`b&2|k0*sbqTKBxtVRf2ATc3<6jJ&QH5Sp2wHa1<#ST$nM6nj7% z_pluv`rqRU%u#y{-~y{5!*IH4F$vi@$my=>CJO?witEDa7vBuUnmD%uK9t?xIjZ^H zGywPcQSi0CxWjMtRM+;w!5j|y&?Wf)n^39^aqLHNV$&+{L7Bh;WIS{^(ZO;&KQnM`(3pro7-j;uP)UtvOo4d=@eP4)bnDM37#Jk|+8Ej_67=a)_b*MP){*Ay&TAkaW6i(WnoVTY9e6 z&Dh?zIe7kX^UQ_dBV3i}j(W#cr^PxV>8u#sFAzEb;j~PD{_D+w-_5X|e7*h^^>o< z&_I;KomyD^KzqYRaP|*zC46{Hc@GB3pOomWtWd2tmkn`USOFQFLypM4f~omq)Y{hV zvJOY>rbAA}Tq+ir6z(<1lv(i<(*PhLHWTp}`u*8u_bwVaB=dx}GR^bn3~R0m?a<5x zvjsnPF5mdDAH%i~Xe^8yzik|=ZZ3Z)er#cpv(z9Y(ZDda=_*9X!%GLy%O~2W2A%lw zN__C+W2iW##xSfzN`Dzvua0Jnt{UTYg|yvH$;X@?;>>ZRS99LxUmZEJ>=Bu&)@2H^ zA8Wp=Y%^m#zikpSZQ==3Ord6cTSf}#YR$D*mIyP z`5$?WOchpKQp{PwI5mV}YX2S+W-~lY)q=3FmzzJt zn`az>>p{v}%9-TZHpSYkbqn{(id@)PItSm z2(j|PLPOOP#mSXCAFHY_uvJ?w{wGNyNOGepM}2`&*`BW*9J?Cp0}yq*x;}Fte@%{y0~_$svKW-nj+@D>`9H3pNK?`a71s zM>E)6n#2Q3}h9LMNRUE~t`XUYK39Sf~&Vg|2-RVUbLP>%`7*Gz~PWKz_))1~LFhrSE#7E!0 zn6XYkr3;&gZP;@fU$x_KUwSUuj{mP>BIPAp(%Ykx>wLpgYHK>thF6C| zD<2xfJ#iHLXOI+u4Pw`Szw@I(K?TDzex>IuUc9iRzb}-89moLu1MiTMExPx`? z@bTc;Q{V!zgFGVRPME~09U9& zH$!VnlNj+kqv|mV6>G_m2-V)Wa#a}M9qrR5JR{UP*y(`~j?EZ6oDMEyuI^RSISPTd6hLP8 zLpXdE)PQH5@VEBpUXuH^0+9I(dJLiyHpz(e#j!th#b4f#H>sQsp7(f%;9_01 z-X5}rIh|H4y&QCso(_tjAw5eZL(!sXXTHVXOh-^c(er+Q%#V@TRNTjkFr*RR4u;13 zNG+`3xA5{u(Wy%xP%g`+2#%t7OJB}s86}dQ>9f2Hh`cEGRoB?HVNKr`_>0xan;gOM zBAy!)=t7v;$fTu8I$x9+d)&p-J()vqvi)YIH zfsNcZ!FkT z1cu}}@YAK;+4i4F4xOr8Uli;Q7Gd=TFQeN19&Cv6L*zPijbpa+z)t_1{~VtxF*SBO zX&gP4$O=53Mb5JhrghKMY4VQEClFez%T(MZg4$Ft2f$JF*8TU*cx5CZ6_iEE>$DFi z2g=_`T@(oBAxE09R#>}HaW4~UKVu!x)Hb_gSj|^$M6=FAZ$1QLH+u0&>sjT-xm}{| zL^vaxlmQVV9+>ck(Y)yWySqLY1i`_eL9ntI@LH?hDrd^o38<=i;+tO1ds`kgi$oE? zkxWt=mpr9h66w(1FWfQuY6hm&PE&MCyFSXF_<7ss5%+I3nm>w8W{d869Ve}V-`8k& zNJ~jo(1^*wAI(62PFe?^K-0ta58DOZ#BE)o~^x)XTxYVawj%lO9gZvY=lbtn1@ArW}uW!{zVTVxULc=Aat>ffdv@7HSiPtECV zVB=TPjvyi1!m=6w-t}56jMkVYA%A^}kmMRj`CQ!P67dZq-krNWdRbOfah)~niJ_|DGV0`)~*bG4sV?a~qw z#}0}yTXQ{Eh(hZ=icBx+sE+j*ByKjN0rrUR2RG6RG6sacWTU?yV=UP8Snm%)XAk4( zPg$$i_(G>8>HuQi;S}7iq!2q?#MzaCP(#nmE#xy*w^e+Nm)HEg9P8ffVU*GD7k@_I z=3liW!Xv`9r=RQl0K_DOB=j~guQ|u^brQO2{B|9cq$6%j`(XZ#=9|_V8e*aHebHoh zE>7(GkN9RxT<@R62a?b;2Y_uJTyXNhmZv>2zU(vnu`1|y{l}V6qbgWI>;>+DK(TiYYB5Ja~%4cr-v&BraFVN0b>TOpj z^EOo(!_?7nBFC*pF&Xu;&an6iU;)rmSRkU^HMDv@!I#IY4jArUM6LP10J}=VM(~zj_zy&u@~rY{cs%P; zyp&+fBUf$r0;u~v<+@>_p`Vc$#3+zt4cj#h(JK*#X+W8 z2-)?Of;dUq@KTgqVe7&6J{Q4=-Ch}7BCAQB&{&HHFXPS#Ec6qI^AXuD`2DiYl2#!# z=j7b|$ao6t9p!yutmOQ--`zxEw0KF-r`+zd{9jFQW=(*V$OYF1qagbqO+{ zXrw^Awy59-iAVw$-|80r}~hkJ|{MuA%+8@R?)<6JpwCs}fRLyClsR z%uJklG*jFQPRu~?+fSlO`Tna%2y_lz40ft_SH8bl;&ff7fLEjmC6i^U+B)V>4m~3U zyxFtDyl@`K$PkyFlD~O+8==8z2XUqXq*Kdc81wutrWKmyx6)V5Djgj=X{b5sckr!Z zGl>j7km)1Y_t?CrRN$RO5mkM#fqyk%Cgk{6@$`GP-;12(vggLUI$W16azQYK_*S4R ztGkZMN|(yvXY7*Vm1Y~DZLy-Dm)sS|4gzaUs= z`vCmObf49|Ykl)!D6!vc4orqEtijHCMZKuX6Gl3k`@jh!ZVj&=PdCX&9)rs?o$Z5U zDmPB+Nr6W7yrG)bq$iRb7_Db?N9Sv<=5xt_#Rs67;q8XM5r=vfgtJY)?mRHI=TXbm zaXGwqs|$lq;90%ini&>6ycc;QO+hC`Wdmra@$mD~)xmRlNGF2@YLy)R+yhdPib~G> ziP);nvL)cD5?D&xppvDEG1(T-ya~q1aH`IC*5zV=Dr9JW9v{jL1dIg z$&#amYF)6q)=I;cwq1iKQWvhbh-PI5GB?sO zE-zSx(zv;d%RrhtvmiIK$M3*BZC#ez_qbQopo$XQgPNuC!H@tACGd(>lP<}_r?GX1 z28QQKKbngJe<%N&DvP1;jL5hA{?3q>Q*`S~+KMb7;gf1a-|Wb2{gX&C$qX+%F$jx- z#YY*&&O2WAK4Bs>%#*MF98EmhLHaM*T`ZpM1s=NxQu!V9X^Y2(K?U+znzDm8k?60x zHs1|HGuOKeI%$oxS(T1e3j`6oA;7!#Y3IgBJaZt%uXP0npz~Jk6~pyqvE5i7XD3Bm z@!&DwsuB2nqI95~Q}-i<(a2@z#@>2$F_w(mQs6v0Afx1E-fCL`a1g=3>L+)K#hd)Uf1Y!hJpG}$F;XZH!r?mTuT+9$ zVC;?S2vr;jFza0+IN7-1H)n-BwtJ3SPVA!1-M!&n+qi(pf5{!59S7?ht>TU-75;)6 zMiGdbI)~DAhGFSVdhT$yaYY_x_#d^5QVGqJCA!TTNM_T5>2W7sSnrzCSf&9l$NoO0 zLDL$@tk{H0u`2F|Ez_EBe81IdWK>mzVPLr8>#Cxs_6{h=_Er2#OJWaF+?r&)rktn* z+{XW|u5646jOR5kcHGpjRTk5bJlivypN1$Bi zCgC5<{E2vf;HbR%>bX;70ZrI|(i1IS>&_0P=qq;<8p-unihLO|3?pRL%Sq99c;PP*>H%B2|lokQQ+b z_~b?oBIuDRelIB@nB9vmY?$?}L$0wWCg|LlWWrZucU{MHnn!QR<#oP;`=AentpTrk zj2;wI%@Kro$F%FS**@-`Q;6R<9#oeAC6GEhpzUE>;wXC(<8!4rb7+>HbkKprmW2uF zF5=big|kneRSjh1Pn-I9$(lCDnuzi`=^4lc71mq$D zyv4(B_wOOOyC!%7$6=bCZj&bUZGY8+ZL1WB zJQ~;E@Y@4}Z5J!B#0=!&sZA2&KfkHUG0lmQwPU3oa08$>c5l_WM;9jzuy@5C)4Y;M zdaHI4f24D0=v`~i{WpYS8h2WEI$fqdnCq}ks=axKFHtnlcY`DXO!V+FmFQDMXuGUbUbK2w?9i!gx6U4HY zPA8FKm}V!rwxD&};G$1$qjD!)Wo^mB3t5h49IG@WdA<-Yp(<5%#eAo}@B5J(nV!i~ z3AOhpCF=7AtJR0}57|p9U73m~osJCZ^HXsoM!cNAQiB?f+F*lLA#n(EMkh|9B$)OHxE8#7h8FY1vY%14b3#P+vqqFc6w+ooq3E5DCLXs-$Qyckc zJPAFHjxp=j=vPbyudyPkPzMC3p6-s;`MUV1ertE<3#h0p)6h zy~3v?3idEZ38OZDHNRbkKdyA#o{WL~@UQRmhUYAQHI3U!+8Hdr74Fr&{DcYEp5yNn z6%f6h5oBmYSqEhTe!dfb(ts>K-{-lae`*$)F6&J4%9sWUr8Y?!{7tv z7osQcJLkDxlQUyH*c@S!_jRTVd`k7b^MWCqS#(i&_lMylgB|aS9UVu{J5Ot|yN(Cs z<(9=1gsrMi2{k)T4_V^j`|RL4cqcH4MWs0~9f#nen`Kh^VJKhK5Y`wz!MDt}msjiP z(FpAoVw)l)CB{%8!^GPE;eNc(K7{5+O6D=D&{mE`rY9Vw!2%ek)il}s`PFqRnKZfV zhEO`~bL>^_xP6Zn9Px)nBXdB=6*rva`m@mqt&?55{7+;PrR)CesSf^!_vrS4z0s(k zEy3BWgodX!feUDW8wxwb4*4Cga4J4CskoPHa{q$Kq%?=Z+CX z&g^}Y2R1@pFBP1zBlD5ppVEX{LPtn`tXRh3lNses-tF*F z-D&ZUO}g8=gL7QNK3Vb|C5r_7o}e`Ro_eZC+09VrhvuIO?}e5S&fEoTi(|HTa2?~6 zOq=w=eWbuE2$ewSbQ?paP^kZEJ$=O)4GKPN?}94icxG?CJJlR`ybDo@iuWiq+Goe_ zESnJo0zCl1Von4UJ>wlR@)0l-R(o}RGHaMpC_B)}t8d0vF{S~Dl&cy9s(VJc)q_OG za%g-@YLq1$mDZ73_^R<7F8tJN;L=ckeF}5t(Eh0J_zci1#bwB{B?!!I95|fE+1cQb zc#`mDfJ9F#4>}%5U#NRp=iUr4(61^w(f=9v{TbR5Abl*N@XmoUxSTGcn&$Rp-mW$c zXZ~pWtiZIK@M)1acKTG`UMM%$aX?=fqF*;)!)!~I=1Cpm4WT~Ggz&j1r%H`-|2#$U z%9wBhe^PeOmEX5>TC_|rJxg;wI{h)l^@+qqYoUWiw=-HjL<}5h?*9{F)!*fYC)-^u zwyq(K-rn(#2ArWGm@}~`Y}ipI8*$y>Q`Z{PcZ-O0cZ3Joc@pZw0#e(qncJE~ZF-mW z(e&Xk8d7|-k!%gdV2hMDe@BVTT}^X@v02v2TS`;MFYI0#OowGLl*rObNG$w2Es^p8 zmS6nJ_saXMTv7k+^k}^8lWf`_+h~{mB7fON6AG zRaZtwzN67@QE(Qw0%_M5Bl=w%OA!w9xnPWammKo_yqDg+;l+qD4A&c?qAoHZa43FB zTdK%iu$>cFpV*VIFvDqa)jsA=6FRZ(^)aBe$weQHI*wdLn1**mPjj&}HU*@DibZHduWh)WEx0`+Lu zym`Vs02ehpm9GwNHx($|en~Oblis(`q^Nj)Y}rrW3o9SXYF>`!OnF9%0xxyvv@_81 zMe@qXgk*VTW3c?d+=a_wA&nP3!4>|e;ZNa>(6c}wSkH9p?4}pOLv>UKDb%0r zb3oOXW>UxJ?xJ7ZNOoqo$`T}e+lSu!82nQpW827p^}+`Z!wtXEhvvDFYeU1oLoBCR zwBkB3>xs>{W~2yP?)=dDrBZxGt6^@ixyXeJ5tls>fYfC_(pn;t=(NM7Q1wBS&(Tt3 z@n^q`+r>#>bEh69BET+j1tf$APH#vRoCMlo4^}}OSw9(lF1jMjLmg@kIcloOF+{vL z#~+-eXQ3WT)|K$pg}ZbUFq@a`iBvgDo3&j|kF*yvoz4OFXO~b%&Ep!Th+`y*6Zrxy zWv~WAO-CMf6m#ThHE*XhQbn%B3>&q{st9A2NE?ENd&m_R1Q&4eN%IO^ms?ve#iz6N zCY^hL+ivRVK#|u>@f~nv1(=~2<5X@SlI$)Jyzc2X29N602rI4m?(}B-$V%?#ARx7| zZnHlowu546Mi{Ric6ED(j3!=JOvH{~WK$UEv^c&8oMorVtpm@P&mkvl;d0HUOs@e4wnQVxeG*$K`u7VL zpIi|cevwS~`%}MqMi2?z{w&Q z_2m8J#<(r|XR4#2tvBZK2Mw(@EE_opas(o5?=sIvu|?eBdx z_%srYC!yr?CR6S_X^>eHOP-Ge!T=VmF&i8Y5Tr_GHO^-5o_`$D+5L?rm_-8lvnKrl z=E8xq{lE%=vN~vTV@{h5f%~ofbKU~xG}VaH6faGQkEKs40~zh6T~2PEaCE_$NJ;*x z4#MWpQ$7~{g-LcZBW8^RV^(Fy1#iR^@U3r0XUwr83QgC@UMQxiqWxaYwgy`V-rlN7 zm_C0ymye* zvQ~xk^fCqfFsr^?j3fzGt=t`O)$6x#7hpTCvGJTMUY0le$c1WC7?Q&B8#3sBwMKyB_d6`7$q9xX zpXsCy1t&YlU^OYhrJ%C16@u>>;l%RkYlR%US_GergCOw^W)kVsk1E=J&@You~DeaRXgnIGQgB+yCq+b2EpFMtdy_vOFe7O}+)j9j^B z^eSVEh~_x`%>Q`rx2ckqifeT)?wwd<_kz%$f^v93)H_(vu5 z@)^F>@!Xc+Tr!6*t1v(;qs!j|4tGn>ljNE|({c$bXBmxfu|X_C=OXzfF;CnjsZyF= zV0~3hd?SgpsJy!O{B`h;^Xe*}7QH_7T}%Y@yIP&7zBQE(;h8rrni4Qg|zw;s5 z(G4kZbmS-5bud)GwRG;WLF|`5f)Dbr)C&`b- z;qF-*RpS*VaxK8ee6>(<0AsfdCZn2SsyRbDP!P(e(4)KP$3S~9)zVH|3%>4rFH-Ig ztOW($IeAo8*2O~}-Fdd^id2t!ZLF(kktuDRZL3lF-qe26lqk|Zv}Nt^nRb$Thf*JV zt5HpKex)+9AyWxj#HK?l!7cy2xYEVja63%gdBeOepU>jjTb|G8e9s=^~K#2(~u&X&m zkZBhyn*Ns_^R8`$flhl=fD~+ePQMt2#vP(Dk(yoo-iyCoTu`mLsoj#ndfAEOuyC&x zOGDYKfI^5L{2Zx3p|4F`I(*|+D;M2LbtRAO3+{@6yu2NrPz%*j`%Xl8udxyvByV{Y zb0}sEfBw)C*8}+$Q7?vAFUS`la!+xYqAe-Sg7do!dXxg&uxd ztumnsp5F`>%f*(@T9BhtfcZ=bFl;Wuc~sbx5)91>sA!zn@8H*}|ALD%koF0-dQb5W zci-Sc)nPOzY@(QNE3Xukng4oRvavpx*i53nZlA%67Qn}d_)AX7>QfP&8@MOb^Rv=(>CjpfHK)n#~%eoJ|`j){N zXCv@_2R4Jd{_ZD4M4Y)pFN>VV|G1++k=+Q~b@ZX__wJi)T|0`Nn-$z=|1?n=CmH)c zHoDpS#iXm+B+XLFRF?dhPDXT>61HE${E3|gA>3Iea<5_6FWLAcD{5;dajT?{1#J!W(n~j6i-p*o22Qq-pX`t{;OqdsRq3cL^cYQw8KOa%ZP+f2dMWN8I9=eLlFe95WTUwC)+9 z>>iz6&i|2ptMOFDdnjz)oQ1tje zVhbbelTN^`a;~U_caS&R1f-gb4~ScK_xz@cvm&^~Ip_GKecnnY;O!Acpg8*Q=J}Ae zhQBw_S+6AMB2ro0<5j5#dHOntw~3E65oM;sOV@pc6^dAQU2CgIUu|NvI)afhmw#iD zs54nLko^C>WAs>TRH%e4-`x+R$@hs?i6)UyV3arOcQY+E$~a!Rxgv}T^y`;X+8F#& zuj!M6eLklULJ!D6%x6=4Kskv;TvsMEJ_yRvGK!H~dXk0nAULg4$|oKH<}%~%>*e1Q zWe2v$!Ab8K{uOT|37|R-)pqm{ovDI$^F@;`+wq2p-v^X9zZD;eW16weT8br=D<->2X}5qq3K4C7sfman0~}v0jnstvlXr0%dTb}m1s-dnAtsNnDbv5C#(5Et!cV;x zNLzG-E8d6`<4d$~zk`;tohgh^ycEhV2( zhQDy#@)8ea78A=976e=JsWgCFwOH(2KCZvsQSZiI zJMrS+F@SN`O9RUaS{S_Ardl35Xd+J0ONhZ0S!#G70g;A_Bj^TJUrS*EWz|vp7L#4a z&r-Eg?Q75C{EoFUXUs2KlePTk=&9#%pPypxRz5zLTm!z7QFNrp&;kf}cyabyYT~#I z^1OcIFHK#yU|xUe{#tX$8Bm)GGLgHr@Yn^EF9fHr^cE5uckmuOL11$s>r!b-7BZsR zmDrhnVNva`!#6RzPSXWGn3yG|fxd5dMcY5Q-(qbZB-0WHNM@9&%#VeRz8i9LZG%Rl zH7GMcq80NUuv&=RCY_AL05*m@&#Kn_$%<6{!8oRnPiNXRo9}{OdqO5|SG3HdBl(`3 zj~C-CfNRh)c-0ryhg8;h;ep4rzJ#EO;Lb?53SD%R`5k7bG7EZ*Ax-N!ikD^G2f(Z~h_5RAswd2B0MWa@{c6PLKBC)t?o4dgl<%+$G=Dln6QiJNG` z70;kvpG?0WHK~>u<|E}n8qL^{#q?JVpRN+rX?>Tcz&5_wrJf?@D5m6-H051w4v~63 zxIF*Di$NEhK(u{`f^HOXFk-G1HODP%eE-2K2 zE556tYsOWi1ntkxmYp*AH|3Otu*o=YDcYQNwF7sk{;IH@>`2SukEkB)tBv8L>fxX8 z;?uU@4=j>_mW%ylGm;`B^R7w9iXZVK#RE98NSI7R#8{9-j;b3ynMK?FbVIE*P#XpA z;rTTSkB-U8%NVqN>!F$GEF*LE(_SML3Nm#@2)6=GLJ=OdlD9f5wYjc^{;Q?E!WEPU z2cAeFaInuO*;+5kVl4v}H1o7#5IWje)Tn|kQNRiFfQ;PB%IYIUy~i9!$mC{-Nb^qq zOocFxJ~a0#=1ub87y1PR7ss~{EqfJ|U%BohvdwxEFFMX^C2L=!DrBCd|F_26t{7QY zh0dDGy#|w=ykDPi4cQpg^oE4Q3!zMODiqwEdyx<906VS(B-e+>W}p-K$T2+HnL4?I zNkQvzCigi{Um&=*!Ak6EjKF9m|2s2!P?~Q8GlE?A@{PDgFbD} zF=TWWU>2(NG6&iHK*6Ic43+JC?89btf_k*F_XcdXjh(%|j+`KXH=k=D3Vy7t+vlme zXL45l?qIl6Ix|VpG^;H(a&{1?7p{SC|N6tKzg0tGv(|k{3OdnWsfU*jPl}vrV1^vUvVP>A z$hrsjZ=A3Fazf(jGt3AlrXx64?C(W*;18#=n|I}t)sXi9~XpN2Atjfc-?Bd>idfw;iD|$$1o`vzEy{;F!++Hge9^xsJapr zC-JF|Lbi${>ql6jUE?2N(#FZHs;8ApE#>-1`F#oeYG53Ir;bRQ(8styHwJQy{F15W zcw)-ST#6AQXO#rWWoH`S>o~x}byDXf@BO%$p@O;Y06Y)InOQn=ECt8=;)eeWRI^qQ zGCUWu=nveoGESAk7Q|@OwF|46|QDfl+E;X0lgJ$V!l9K>+YnL>dZ^l&RK=}oQ=jNGfj8Cutcx0}6 zDw?lXDxro7h^&lI!wR%+d7LuGL5UGb5b-{*&OIXxrwn*}|j zqu?6dO=m&zN()yP9%X6gi?AzO-rd>}EGS|+ke7-%f}gNcPf`R+LjGtd#hY%d9lH{D zb+_0EgF?fEool>Zbth8QHvr0(S>LgHFs;qs?giE9EMi$8Q~uCypQN@GmeFB%;O&~s z&b}0JpV)<%R8T)o9m;XCBG?&jTsb&#;n-#RwjMEa|W zWyzMl3~Xm}6Kyloj~Cq`#*Zj4`U$p5s&Pt;0 zS~c;^y8smmR}26hdF_76eywl$+J0K>GM`ZpAg^KI97$zNXD3GW5j<0V0@xV7Ytr;H znd>gD&!=QGbSq0U1gx>r4OJ)WqMPKXvV?8fZ9%+nsM@t1+=q}TC#0>2L69*>1`%5o zjpWpk&E%?OYiA)qdgwPLbPEcaU+*7bA{5nmAVG^8ra=dt`v@5Ow|@k7Q)B_Ti=aG8 zhd&3A$pw2_%hzMHKCGHSOmIBbnOJkXiJ&&R4WFUzD`_Soy8)kO8jgt5}ahD#sot?rujy3cxg%YERe1uXOFY(mIPn^Ei?~#nN=cVQ0saV&` zAHldv&ZqCBgA5HIxG=|;?#fEQH;3dy4~h;Zx^vjB%kT06nG!;~HSwWS_aO<1toKD> zs-pPnGiBC#MzTe^UEhS-olVv0^)kxdm07auC33 zL3%(%NRqCzMg(&r8}?KP6)=l_VKE{KhjfKPGMN~YdpRfpkT^^d^pFR}SSEmZyFVA; z8)hvIV#l>K!{>whg1+rn8Xwr@@T&#vz`HVqPI_|qFE7bC2J2qJg*lJHX zsI$_7R5NV%SN%pKPwq_$8wFR?qbJ-&)BDNAHHL|bCuz4UvTsEK4O}ue*aj?fJjM8x zYA#KKUa(X0l}R!fiBY->s@1Nmdk?L2-Yf`Zq}sfd*ILkOsf*|V$^j2?2&m3{H0^^o z%@R!M34tsy>Jqf;-yD4$dl_ecv3m-#KWw3}4SC72U#ckJhNpx<~BVZOs{^`1)nEzr$jC!U<+{@pC)IzZ&98CP&W1 zNyGuL%bBG|gx&Ow*^GDmyunB4HV}{vXFiB2mC4{E6zFG6#e0OsuoxfHo828fbnYOA z99yS3Fn65tXofF+^B11B;%Eti`)ZHX-H5>4I83f4s~EJ=EHWS|YklSkJa;1~-;wJ5 zCkDhYf%xJ9?XGS~R(iu_bapJ>TD?#sh}Xp1{k@i)950dE()vX-)6LCD25XCGZfL0_ z!HJ&Eh`A;X)-b6{I)h>dHmlTsMWpuLQF<0Z5`mos=X~@t%r78=_uv!PRd^>5qyPV` z-Yo^7g)S;H8ZrjO;BKm#POaOm0pwT$IfSLNe0>1@y$WW{&y-CMak)st6jR1fl2BBU zOFIQ`uL$hK5x-3-X{k|IbuVLlLpdj`3(I$st=_k0@c; z_)ZNF@6I|QKR~nfD+I8%_|AP77?-akv&2qmy6|&`EMq z0wvwvZNBEZK;cK|A8wS4H(LY{I#Cv*8!APLCpFwP2W4vRl-edGapI2AkbaJ{&e$(Gd6l9mATe6`&r_tpU6)svKkK#RDuZD*t}`ghHaM%KOz>{=j^?+vneEEv$QLmYL6Jk zwqoaab;}SlpwG*<8`;u63Ps~B@$-V$Y`H{T!6`H2f)yai0=LQz-sRCp1J?|(T={Jo z1lgJAw{<^P-*{{*Ll#X4%V?k%^LjOS4!Yn!#WCc~rTZGlt0bdY&n?HP93SRxawZCG z$i&e%r&Q}(jjF<2LNrn%dSejlbmHn+l$!1aj^d>v(*d-Pvi3$Kx9uehS*>3)NhN!! z$%oNR_{B>>sqEMM+rY!Cl4RL5m3)%~j$0$=O-*LN4fq7g3H>r`#lY z(V1RXf$o@*z6OLo@^#&BOsp1{Dhe4XmhiGRTvYP8TDk^A@$7j|8(67cFqb%>_SRUn z1-P_~*GtSZbJU{>Jy~s+o|wDjTAXV$Rju%E4ZKgLM%Fz2-JGTWe~Yu~HZh{t?|0u< z9!+20t;BMwnC*mGSauL|ipAk;Qu3L#gFcbturLujX)1;tGvyxAiuaNcFPV=MELI1%(ObgR!+SFjc9IuzmKg0~2JDYeoWn0lY3dR6nq zlXj4G+$I5x!G5%I44oJ3M#BhftAZ><-;CbY%Xt6Bkr-)lmmO{6i4Ik9=@$KlR;dHm z{(#0_6hE;}HX*SS3i6vSO<-6Pg8_8jy{ZsK!r0KYC}q9aXpPgoMn8`ExS=GdszxXOLXlcV5D&A(6=+1yYk`m3|Ie@rL;HtMRM33hPIciF(F!k za{Gek6^ICCBN}THqzap>EQlj5vNw}Bl#Wka0Io0d3zq#D)n0o5)>?xHnM^t0KxjVF zv)XG1mBEo?*tL^)F!r7=@6OT^iB<9mrfByu*kp0g0G9gb3;9Iu%n%3Jo+0?#=W1qF zP`ql{mW)|zI)`Cx(7bORwFJYkHs?<=rK-Q_!DCa0WZnfbk~GqF{@`^giBw(mzh~I) zN}y$|uSar(-;&Zlmcd@=Ye@@dRHP*ewo zn}PkJxE1Y~s0B?j^q*P(K&1z>4*}OSwnsgTTzQZv)|kp*^lBPm3=vN5QS46IG#DLs z(YdsK>ifnnIC{PXa^bEmb>b+Ipcp}Ns8!^$#M(2LR}$sF4h{}rA}dH$**X6Sk`v$* zL*A9xb=(1pGQ6xr(&p8TPx#&Kzl^g4(78>h(yIKFA3Lw8`k#w)957(_m^;6Z?F|ct zzTA7ht#5O#%BUUXNIUOy{yPz0a?g+!^jsTNk*B9$<-MzK%N@+$e@}^4@lTuqL0iLO zar_DA1PLTiO9RhU=WOU?!EBR!(tj*`*-9chX`gYiOv=Z+w6-_I;KOqqL!uUX11 zd3FviD9i-ag!{;X{9#}bwl+t_H#v|BD{OB?(Py6@0lFSJADr)&s8uo+{oJ30ZmXx< zKC*Ry9J^UYWpD17w5;F)L;_1Is+i?4|5|cT+Q6IMoMJ)pqp=6?`B}UW4>V@jB!2nA~xD%dbOJV`dYh;LW{6PR8J z>irg25>$tHqNwzh!(hqjw)5&lpv{(EbOacBGF!%na`7f4>fW}ifC7n1WHJabR}HPP z6-Y#e+cYI(C=&gP4v^J|gIXjo^6Q{J`fWAQC-BAo{&7N zVd(nDUFA#slcZZ_>YFtVA!&mH_`1o!X-wq)3aw`iw+$>Dd^j&;a$j}5*X{+7;MFJs z#!LopMY1?5&QkT5$Dvmzai$L4;H$d;9IxsE%3ebjP?nGK>8@H>9k$P~F2=kXI4*eV z*sjc6@+u{stBjak!KH#`YyX_%%8H$>G|o9;zM6LxG*H#Sy&a3;IYG8s&F&T0Sdg;daeqrXlf9*Yv$e3r7IsRsZAoyHUWleBKJ$h_mWskGN|O ztz`4OAB@A}lVwR)NI9MG8=Udi=v#y4p}Jj+4Kh1`P1l=GjSqgH7Seq=PQDnqTopye zqb~zr2f-(dB)=aJvqY>Vyn+eV*;aX~r^v10gEj(I<&vWzQ1Gp-zjomx+Vn-HGsWyRqREsv7vW{3%c0_|5K3*kkL8jLQ)ql9=3-*8!xKGA>3c-mo;gJ=guFnzmG++a_9ShX_y7uh4HD1RwW}WsrZatCO7B2 z#gK#+Q~Jpa#(dBz>@@#)PiUeh1%Sl(z}ne25*{)V8Mg`#Cp9D?tFu}PCN!kn_5`yx zwV~=^sqg#8X>U{`a|LV3np4N}dds<2(>PS?wmEt?*G4pqjEepGkxH}-r=5Bu?+WM` zUCKXV4I_DDE&c2>BE=HNlCv>B=w(?ME@fGZBhPbOVWq!!9%b~-a@ktdVk%z~l;7a) zwe@*~q9HqIXR6Q$mkk=M?RMzGfdCq$j#);DV}iDyx+lqu%~`nu%Pkv_D4E47>R(n_ zKMjCQrbx8MAzNT0`;|BvBceoW6zn-ayJ6k@j)TMan^?Tc5vV5SVWyM)UjYI`$(|iy z;g7PVso0Fv$~ayt@Oq+=#q!Pme760Q?N}50I9D* zRUemwF$0)=arGD=o|IdfxoDa5F;0zaZnDu`iR#|_?FDPNbuGv}Iy;hNAmir?MyEh* z$?0nduIiSd0ba3g(dP-L8Zu-wb<^#7dI+O*dY@R$97p@ow;QY%%m&QfYyKs-BHV() z;NMb^LsI>Ncz4FP`4Z{0_UtI|!c`nPx!SN)hxidLlLI5ZmIinuq7H?if+sA8f5lj_ zOS}Wc8p>|_507nWJd=KQcn3Dp>@bnmtE?4{zd&5ox+nCYH_njuNUC+Zut8WZd$6_D zPd&dJ`Wk#@+jwdbO*;y6>D!NZl^-j4vy8&iOqDSW>o5&Fu_iBRIr%K6+%6Yr0^pfr zY4wdh0>{`1-lK1d$G``u$G5%R1kR%sRPqVuBRX!Z9n5Q$Uw;g!^Oq5$em0n&RTGhS zpK{#2JdX6YX>1&hgC3t(bR|a-Rv?xLPmrzYgcDz|x>`^B_f~y{^{H2|!a|q1jaoOu zJ6&F7C&GH?XPT)c;~YCJgZHVN51Dm>d`oTC`B-?EFnhU!Y5v zjXhXl@x$3H#zaa+NWgV5Ss(RMlrS>|IXqeCM*_ZRT9V74#lDK2Jwl$O+;21 zwDF;*B~eMyw<1PhVdnRS|5J%=OOVZ-Q&&a*yN4jrq>H)yi0QoS46n@O;zUWBGlZ!}YSWMY{~lt1mc zUQXQ@kp)!;KfXJ{VyYtuYSC}1KiiG1HA+NQXArq5*NTvN4}qqj4&67&O6=AAnx~W_ z((tgGnF~>5gViB8+ zevtB!2v=D-c%yK*0P8s69p7?9QfjdE{W z!MI$KOPgu8pz|VD;J7W2LdAmYDnm$I%Lg+^v3ZmZaE+K5Y`b6jsg{J3s0mb*VW#e#eFP|===ALUc(T$P}%=6#d3we0#2ZrtG# zo<E+wn}nWMta{0`|HreX#mct{ zxlcyYfyTGj(uhAtnnM*avL-sFw67T4ROJavTqigLX2WR9)Pd)^<9U4dUja>d9J?Xk zUA5pQ+G8)iee$u3lT718j5n}J1TRu}q_yRi`Z4p=cbz&Pm7`pRF}IY`E7dt7@2!wM zm!hsbMdC|_fxfl)bzy(P5;|^NKf6H~B?1xMAEbMBO8@qe9nNIc;>#ssl+cumU0WY^ z1xG=Wwn@o^2F}ATg6yn@0dka^z79UO7Q}MQS~b(4yEZ#rws9P@n_Q z!mbn0n(7Cx7wPQRioD$DLN<(CwzecMMm1ymt>Pue7ajoBK(^78R_QAa*M%x6#DwzW z>CYJ6`b;BIp|_@Yh3R=q>8dXUq(X68-U43XZQYbhRG!pCDanrs4HZOBP)(h|01kdk zyFcnXk1b{**hKmhvHr{hP#iU3LeNP_GUZs;L&!A(j&*jx#Y!quWr# z83Fx(0WZ-<5VLcxGzakeQwTL0SOW0|N=`9Nr{D!?g_y5+*3ds~rn&7^hyxrx;~u6= zI@6voT~FADu4BU0G@Hm`>pDYhqi~W3XRn=K z5rw<)l&)=!r+eGyCO&h`XM|I}kb$##^7abR{Q*QIyW3XG{vlogAGwvlTsd}}DDrHf z@YcowQsVLr8JMGbKMvi?>G_x&2Xe&^1cE$`@tWeo@@J zI4Wto&vIquMwPXG3$X4u1FERxTx;TemmmX7{0sarcT`sNIl{6^Ki%iXkboM|?bJ*9 zOs>C_3YTTBL)!jrmFSDo-dJ|s>yFz;zXsx^m|Ork7Xe`VD#M4+%6)YGX00TVml5R5 z*H$xx{(bjdadid2CGEcGbYtzZ;Yi`c*DSweEqRq2KRq0(%e3 zycJ5%a%`~J^kH0IVk)n4BbCc(-)qpC2Y3&aUAu`72{s-~&cQ-+rX%P4W}Hm+^#&2pUc=l(ZUg&JM-K!|#b{3fLoN7Z^%AP8)We(& z503!cI-r-&u#sX5?d`vem&iXo7xN5EMqK@hb6qalw?N-5M#t;=PeV}`R3S43+ttd1 zJ0Lz*N5=IhgS~q|Xcj@}5-AxZb&hI;<7A`jX+$7PQljUV(iS6xW%C0vrWxgu2l`v4 zluG&j<1JMe6UG;vn}Y2oZYBnct{uS`;L8iQ+;boA!_2RcnN6yqT}TB;jyU^odE&A^ zd0$$PuO|vrxOgJmwK6bJgJ+f117HA2Br3;?hj_x{pyg#Pu=piMg&8c6rD$(KTHgV-))KxInR4 z=lyXf!a|!?7MlE_?)!yD-1oaTT_i1Mv~8<+;0uT#Qtn|8|Fk17!g}z2*^~dE<+P)D z{2T`dR*E(nQ!GQFp0AkNYn*q=j{daL?S-z`go$f_GCCe2*z+-I);Bs-^@(C@s6OOc zWtjhp5pw6^m|{{MruP#o6ghL?T8mf82=Tc8Pjf3YIP3?RRM=Cs)#6DWjMa!8hUEAr z+LxnM}U)f1?5MxA@yNnI5_ZDm#VQ3qD8!df*lBiCf`K z9r9L=e5ys|hH;n+dq&}IWF{tqI6wgul++33$oDIvPeu8iDeO7KtA0&(LmHC}Q)BCX z#WZgKNfXog&=!?<+UnO0ZAUyG9bEgkA<5VtE8GQt?0U-*9lQA{^C`vFTaD#sfEq`2 zHh|udB+{l(wU_XTdzAr=`R{~|8@;z#Qm7EMXR^-5AbEIVV8DOs3;m<;$}83nw@c`t z!7CP*x}@s@wroKQI{486kz7#p<&MIO7+)WR5*c+x)wcWArQ?qnO2aH|!IHttW9 zdr#*>g_4F&{tUWn&VcrB#zkTZwql`x&q%fXdp+jlr*OxjCf_?fyotu^OFmiez)hbL z@*?BQ`6#vUT2&kuV6$8WrdYg^5+-HxL-4s{q^aI(-sK-*1H7^ZUA)LGl1|F)Fsq1j z5(O5tyy;&36D?=IA7d=H5X0zXul|3yg=iqLKIwH8l96qXVFmv;_TKk92EVM)mX`@t z8Y4KOCqXi;X>HLSHG~7nbQH`V{`cQWyu$0JpJBD!^x6RzxRE@-OuZ2%t%o_wd$$lB zaIFdm)+=NgAQ=})Z>2X-Vwh(d+yZbZ6BX*E2ZDBpwk!l8d9}bP3r{kuaMVe!tV|NC zmK>EBW}8)m_zh_Lgv^%{e>1fjzsIfLp`)WLeJg=Vz9{`3&qT{hx=}^g99L5{%;vjA zLjN~ijjCOmwzxuSRMm4jfilsd^d;er*O8~v4MaiY#E;^PQ3~SjhgT9|%X7sAAKHO} z^jIBGIST#mWlQcgwax;Unk{n$Bj)e_l70>{-cY(lutobp>uz4h5>l2jYUEZ6=EVnE~Uf6;O#*ob1`412Pn7rGFr`9mCmKM zuUO*9?8YY$CcEMkVvBo%5$T}O`#!_ITJsVR&4)#27l_3o)mPr0_KsjjNR6b0jwSh6 zBOm)*LHP`w4mL0Iv zyZn-;pjtD02(eIBm3X`#Qt_iApXRu6Dqc7x{mlZ13nq+^Ny?U#{VFZLDUB%>`%x5fN8?Kd;f_x zc>}OVjx?Fhxp4gIa!Ky8Wv7V)nJv@)!_B1ITBdCRl?a{ake`@7XN$o&rlUeJB?cGZ zLoK$1n=h??`!o5Vxt(~#!Hiav8kXwC;d#|4cYZFgd$GR}M0Vnl05O$jk>_k1AEYh^ z_Q#jR@a-64iC}0@0Jc#7kL_@e?kl!y8sl8w6R=x91}$=0ybZy-84g;8IjPu0sWN{0nPIa%n?Vq zxC@X=?D6-B{QtUCRQF;HI)%n-`TIH8RSFK7JrsXaE}?ovz^MxQK!4gmk8Aux+W;e? z{_nKZ@cRB*%wvqeYfj^~$t>MIq|+a|4XWCXR6AQL-pTQMMd?LJZoXPHP{B+JE^$nT zo?jhZmU9H4$eG8m+E8{_&2ZI!7K`(wOkjo>zQn|*XcEm5(0BQFdtP+<0m|uJd`Zcg zRx#sKZN!gyLfqCOd{=&SYT~Zlo!sWCFQNhb{E(7~I0paRbei+7c!9g#>@T~=r(1+x z=j-9V?8!Hnu8F?Ftz@5$7!_Oehk1vSGkYsH`3c4>ck*s3jo@)Sm;ui$`p1G zDF^jZFm6zsV1M?QyR+(&d$la{g|PYb*04g|V-ve)2f3FohJ;_~8pH}&iPf(Ii0i)3 zmiAw*ei@;Kra{>^uqb%c^iPG_XLv8meMvB_$!t^TBy*-b%pYVe=;v#mI?Ww&qBgPv zXbn$I<<*jU82JkuV$_wko^r7R6BQB$pu8STG#`T99jhU6ul~K4%Ga-@BWW+J6CM0A z^X0?9QPf*0koROlf6|@a8L;TirZ(LxszznRwK|-eJ8GmT;PEEK~Gh5u*bJ+>;EZFDABpJ2-alsvW*i0&j^ z_J=^vzii_M?Cl;rIn9ml$e1OAOg@hF{!E$o!Rocw_qo4a$2{Vi8AyT2O~OXDfQ}|@ zR2Bj~=ja$GdZl!i50_VX*t(L)L6l#j1nLbdu8mwr%^7|DUkQRym?bl%LgugOzwHCQ zTN+h7c|m(enaQ%CQ;8utbCbsf*l0#PEDi3k)MeX;l#XEnne<%|=_ z-_!~zDl)(*c}2*SW&6HJ0qPXI6tAOfDkWO2o)Rb2mUZ3X%%`9?bfm;*;!}n?3O&@b zl(Icl9T;=bp;>gFVr@|sIe?=#6|cV|X-PEvE)1p=OwTMsso8Tz+SsOS&}!d+bV0?& zvY8hfg!vN;EwPDp#aQ01um{a>5!_qj43PneX5OQwky@?|;?In{!5QRWOr6O{O{Fk zbFuvRc(|~)k4Zd0G$0ZXO;!e9<_7IG z5`70+_aBf06{+QVDSm|PQ8j)vRH9u48Iov1{-q05=}jqR9PtPFgB`Jh_Y1_e$TYp$ zX^NbJ&r5S-{VerO8XN`++3z77AwztHNqh?N?j+X9317f!Xji8 zYR*?hB9J+7LrQsLZPl|%hgH@nX2--X3h-1B%yGM4ZO&=KQk%!9N3H>OL9g{`;mld>&{;j z`wjkJ4_|wyKZ=@a-j}@^(rkO=`jXS?%$6Iz+F3NF=xl%(IqAgXLri_eazkrGq}o)| zmRROulB)HUefyuEd$Q)qD^|vYHRwaGLO#n{GcQR`^3*UcJ^A-)Y7aAsE2qTxiT+8R z0KLTk>_z#v^8XZRt0~&mzUMKS?_^PS^+BG2r;_&0{J*z@yJP`#Nd(A<1-`76s3Bx= zV(nfKHwyC_XUIE2SOree)jCk%caoW?uQ%@5iOkvv$s>wjL(tY&vD{!Cn(hOsDUAf} zGXKNxGrhVDsPh~mXrXV{O+Zzx^X?tv?@1Re%lkxZp^!BUFc({KN)c{{y_DXpPgHYI zOWQET4Pc=@d;Nyr*-We$7o9A@19-AI?%ZkQu}#sfFL3WqD0myCdko<(KFedKTXNz>j#85tDT))&f0B>!ON)|S?%m*=H6Ppb|I=5HdC6=VWogT*!?o6Vep+803&}eBK0-dqht#t zRbdQ&OVgZkw(qD1Kh^{nT0?wi(rZGJERSiecx};WhVYOEItKwOFk(kcMp#pbY{cm} zElbM=0yN|HdptKlK5}l~N?y?oz=_pwHqo)!n>pB4S}8|s2ij(#%YvC-!M!gB*kbvh zfUq*47`C}2G(>?}Pf@fV)eonn+j9S19%7Eb9qPYdmEA+ter&CzWl=n+FD|^skr}Nz zqW#Anpah}wqkztNCv?6 z9XxG@eRKqbXYksQy%b9n2EN1;&b9Af=0b?U^8$v7Aqtd3qd1ggQ$ggO~a z4MOt+ny~@yjW;iIPt}77W8829!OLAJs&IG{r!{{^_=I3Xr9qca1p+TkC}(TS+f=81 zS}c2OmgG4lTDq7C)MY=L^Cs+oQ%J8#8)`E4DoJ#d!%>vCyvJWoMcPW9^Y+4G(qaEV zL)gQwyw!k5+Dzd`)ziWE*@KN9(n8oP>Q)oSMHB`BdzOOfH(q~Zx2)zKMx!^37M^VM z+w_X(kO#iKs0HUME5iPwWa*OXispG4s`Tu+sOw~Tw-1l7?UpU|p4ipG>NJDoFdj{m zu$fwG`0r}EgBN`SAZd5Iwgp>>VVJeEjPqwP;N8x%6(8ov-L{1Qy3o_PtYH4$74;SD zyic2{M*wxY3MQt5*kNVr_~2D&Np4T}(4F86N;cstcG}|CL_4Zl7u*WnYxa)zpX2fP?&5!SHnB}+cqHh%@xdYd| z9|)sUzpdW$Mn~EB)VXCmRYt`L)FwU7E2z3PsyuCMsZV0gg*cN-7g@>CDjc0l)0?d^ z%JT4lteSdg(3V1=cmVXo;bI^R59TUz6C3{#MWD795KmIBhPuUvtj{bBU0VrV99{S^ zYh*(hl{B@GQgAm{+HFto#itI5P%Fk{6@hUZ=LxbIsn+Gb{J~$ZSNsvVnz#BagJf|qxFivFwl-k@za@O9odM9n5*^b!@cJP?iDyJ6qtTJf zzwbDLYwi+Bt4VYCpO{IoK5R-OHkb%IQ#Hh=HtNy06jwE~b$szB0Z7KsNS}X0k z43LfqN365_f?d~gQHh8sT(sx=c@k+ z7gObK^)PKCF(4FcsHyGq{9)|8ILwt^zFtJa)O!-lc=bkhGF-W=nP#se#9XKxiU5Wx zESyIZX|i0MTs@`lz#UIxvkgC2P53=pOL#9*w>unMaz6j7zi?5c7IZr z-blVghKzXtqc@XGdb1(UdB<7`D+IjtSB!t`hoo)sUJf?9B}KIt!1yh9PT31K;!CNY zI{ju46Q8CF0fZLpO9>$k^zDz1%QBlV{EtiOoC5mv?ZPXDM?P(oW9byX=|SLd4Di(u zkN(X`IRv^5v&twzjID@vo>A>u3B?s2LuB0h1|w0>XHxDKH!+pUi7&Rjv zz*vQ^%5^7$E!VgL-(59AMLV)IQ&>J9-U0tH0GZGJ!CDV#h^vw~$F{1B{vN|g zcjD;oV?|BD7;%7_v-OuJlWzm}2?(4?=<=y6I%Kxg26n5}PgWqA?N{h|V7L{5!xwCI zooP=UzEgzV(yA$VD=RlpV3zDvL6{Doq$?L7Hr>2*IJaEcWg-MnR#h09QbzA6bUe2U zI8A}~-6q$nm{+dKji&8<-!LsIsxr!YCB~A)M;%ja-I69ATT@93(O!5xBddsL*+ zTC8%ss-Wi+p&+#0r6nI-vJ%H1;DGxk10vRrJ%}iKMUPs>^j<4Z2R;UfkbO%sS}bfM z^oCQkIL%@}zReF49L9Fci2G1eN#7)Sh)3Q@63sO*lWj8V^2pyvb>z=!P#XLjEmR06 zj=H?tU%P-MY6PU4o&Z444Y>Ay^|*$~1qC6Dz_y%0Jy3#Sb6~EWLkquk_aTtJQzk}7 z#C1->gfTPbcG1KXQ1l4+%GUU@1pA8Q#Ybh$A?qcUac?pl3gFl+p`Yrsi#r7XhrAS^ zYY4apBFhO3MViB?N=|j+i%9+9I>LT(j$a*1lBR9xk9NC~!tgwr#N~AZGFmIl*z5#dPGC7hslQ_) zl)+8qpT-QrED+%wMi%*7R9v-IF|6o+PAmR_l4j(?8hVbX_9lQDN7+juoC-Di2TZ;0 z&31g{y0+@x1SZ&lWh(B#&ue5SY+PqrlQ)ow!0$}%9`(VskbzawK@Cr^3pr|G1_uEJ zA==6om&@su(HaFByEioLY{#W*AnE&v{CbBFE!yx?(PK<5rN8LIAenri1ZcaYBV znChCO5{dnS2;-n%uhNBFU#7?4>#1x=37dnxE~u09XG{a~8ypcSQ&THI0rT=rY6ffx zRty9tZqS#jGHLSLqe>^rRq%kDsW=DyG4h{GI}x%95i@#58xKyDp6>f*+|fb5;%^jE7cUFj^TZj&b=*4Nq$b3`6gXvn{^tS*d$ei84JIoCVH7WUdP9uT{4!UW(v)9-1s$#mw z>8&B^`0=(%z%wq(3yfE0rNhZQO(#^zKFslMcd|k;`(qrfnjq>xT~gyY=_R+bkMatn zI-@b*0MdTay6Hx#>4^j#Iu4kB4DzKzs)+DuT?yyux(y#L69xALx(McL*m042pDvI zA|;e$$}_N=^rKzLybYNW=(S7I`8DW$xry=VY{W`VaBiTCentY<$7Xdx0&NxT=}k3l z%AK*7M<7O@I4cJmNlcXdqZ|-ZAyGQQh$f0Ts&UovHT7y8Ovk=gXi;^8c}biyifk>X z>8%L2Yg#%i10$fQ3#y4uvR#xjN!t!lv3U>-baTHF%N4xV^J))cH^XaKxdVzf=QXi! z>|>Th{v!J`9R60-*_+?6rzggNkD<22deUyU4rIO3e$icfX@j{Hh zc>lZ+tTcs!N;I6Dd~N9dD1R|PZOz@~$-+Au`k2Pf5SKN5-^IB#>KKtC0~y!S<2GX@ z`~MsU7ZqhG^U zL3*B#sbvkZwb*E86x3qm@Hi3-V6h>e4Oz;Y*VN!E?Ocw# zU8S)-mBtV1`Q%mBZ(78~5rNHEX__!jzBt;kW=}4HI$5e=UDWz6AUdr{v+Y5 zal`;SH2ia&N9n+H{hzdhijKg@GhZyf%AlZI_kHjE8P90a z=MW?ACCFY{d>XPS8Nd-~7A*Hk6XvLd%60hy5UTH$KT5=8MC|5{8xEeTvoUD#U(iPj zwGgb82gkzq6ZXZH2~Kmk?yE%Ceq?bJXn8l;NZiz^nhD$Khy!OLwDce1ou(f}bT=~w zf^9A1uRNtfa9ci^+)wucf{US!DZ zA~`A08)og%fbW;mwhv~M9C=s2oWWYz@Opmt=D)tw*qhjofrw&~io)*ws!tWBijRaK zp_(FaZG{Wis~1QKa1g8~657{$)OsGZ)#X~UWC&laghb$oRN&}s0~8F2IWL>(SH41* zgcGdefo{9T)ca~XqFEoe(;94(-^7+L#z?r!hNi`8b?RT~SlK3_xiFI%I%qF7j8oF( znj*wdB~NN@^hKe5$H5)+VEFTYaTp3oT-?s&QP4Gb9C\"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/680/f2c803f5\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 21:20:03 11.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 client-allowed-address=0.0.0.0/0 disabled=yes \ + interface=WG name=MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +add allowed-address=0.0.0.0/0,::/0 client-address=10.8.0.1/24 \ + client-allowed-address=0.0.0.0/0,::/0 client-dns=8.8.8.8 client-endpoint=\ + 146.120.64.211 client-keepalive=10s interface=WG name=GitHub \ + persistent-keepalive=10s public-key=\ + "HTofQ0KtUsZij7zFn0F72r8oatxGn/el6bzLhM9El1g=" responder=yes +/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 add-default-route=special-classless default-route-distance=2 \ + 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 disabled=yes dst-port=29185 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=input dst-port=29185 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" 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" 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" \ + 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" \ + 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" new-connection-mark=\ + VPN_No_FastTrack +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" 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=WG dst-address-list=!NoVdsina \ + out-interface=WG src-address-list=!NoWG +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=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/20260612094002-Diff-Config.rsc b/MikroMaster/history/20260612/20260612094002-Diff-Config.rsc new file mode 100644 index 0000000..706db9f --- /dev/null +++ b/MikroMaster/history/20260612/20260612094002-Diff-Config.rsc @@ -0,0 +1,54 @@ +2601,2602c2601,2602 +< add allowed-address=0.0.0.0/0,::/0 client-address=10.8.0.1/24 \ +< client-allowed-address=0.0.0.0/0,::/0 client-dns=8.8.8.8 client-endpoint=\ +--- +> add allowed-address=0.0.0.0/0 client-address=10.8.0.1/24 \ +> client-allowed-address=0.0.0.0/0 client-dns=8.8.8.8 client-endpoint=\ +2616,2617c2616 +< add add-default-route=special-classless default-route-distance=2 \ +< default-route-tables=main dhcp-options=hostname,clientid,clientid_duid \ +--- +> add default-route-tables=main dhcp-options=hostname,clientid,clientid_duid \ +3281,3282c3280,3281 +< add action=accept chain=input disabled=yes dst-port=29185 in-interface=\ +< "ether1 - Unet" protocol=tcp +--- +> add action=accept chain=input dst-port=29185 in-interface="ether1 - Unet" \ +> protocol=tcp +3330c3329 +< "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ +--- +> "Mark Routing main for NoVdsina" disabled=yes dst-address=!10.30.30.0/24 \ +3334c3333 +< "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ +--- +> "Mark Routing main for VDSina" disabled=yes dst-address=!10.30.30.0/24 \ +3347,3348c3346,3347 +< new-routing-mark=main passthrough=no src-address=10.30.30.0/24 \ +< src-address-list=NoWG +--- +> disabled=yes new-routing-mark=main passthrough=no src-address=\ +> 10.30.30.0/24 src-address-list=NoWG +3350c3349,3350 +< new-routing-mark=To-VPN src-address=10.30.30.0/24 src-address-list=!NoWG +--- +> disabled=yes new-routing-mark=To-VPN src-address=10.30.30.0/24 \ +> src-address-list=!NoWG +3352,3356c3352,3356 +< "Mark VPN connections to exclude from FastTrack" new-connection-mark=\ +< VPN_No_FastTrack +< add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ +< out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ +< 1381-65535 +--- +> "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 +3367,3368d3366 +< add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ +< out-interface=WG src-address-list=!NoWG +3391a3390,3391 +> add action=masquerade chain=srcnat comment=WG disabled=yes dst-address-list=\ +> !NoVdsina out-interface=WG src-address-list=!NoWG -- 2.52.0