From 6b3b158c151dc7c6f189aad567bfc8973468c1df Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 22 May 2026 06:40:21 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 22 06:40:21. --- .../20260522/20260522064002-Binary.backup | Bin 0 -> 251960 bytes .../20260522/20260522064002-Config.rsc | 3445 +++++++++++++++++ .../20260522/20260522064002-Diff-Config.rsc | 6 + 3 files changed, 3451 insertions(+) create mode 100644 MikroMaster/20260522/20260522064002-Binary.backup create mode 100644 MikroMaster/20260522/20260522064002-Config.rsc create mode 100644 MikroMaster/history/20260522/20260522064002-Diff-Config.rsc diff --git a/MikroMaster/20260522/20260522064002-Binary.backup b/MikroMaster/20260522/20260522064002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ace4fb47a990247d0c3d2ddcd947e270c48d6286 GIT binary patch literal 251960 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

$7{B@-J+SMhUf!JiIv>o_a)8HJy8qmyfmay~%rZ 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 =Da0eG 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

&>TRb&n3tizqD*nt8Wd9K=$m-F^Y@lhw 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

Rvw;^F`>IzF;lZF&@jU!nG`q<>XD zWIWC|iSMa9R~)ZjYY_AQ#N}~tWPP@SO{ALNnt_9dlL|1pTR6lrZRfaE&Ikndsqt=| ziNe&lM*aD$N8vig`-b1&sCGf^kKnz?%$&_poMpqdK9Bq~H$0m4bCZmJA+_N-h0)|Q z9<+FM-|N!O_)Csq7(#QG=C@P8sR23~iiPAEz7Ba+SaH!c4xj-|nWzsvli!hXw@1k3 z84PwW>-4UIrfPBl*f8xWFBe zT5e{x4khgkB=WlAFp?(BWt8y=R9+ipspczE6+nft;5{k+1wBeBQsPsnRsi8X(zf>C z?sKe&5->Bfks4UX+(Doz_^AGB{U1t_Agcv>u$PjiH>lg{EaW0BrM7G}aLfWgWz+NY zxk{KitmSl@$U1Dw`p-guP{*w17&pN(yU`_$0@v2I+&C@M?D-iR$@0WMJW-!?*LsI$E3E; zK-jvDAf}}*76&^<@gnSu9#N{!pVltntNVLB3GUOKXVWX{K7mFLjp zdR6blD2QdkmkXjJfc!Z!-GKL`5p6mFJ1~O^UHax}>a<0aQ6AxnqP(Jv&(aNuETR01RF~Q9Rs`bZRY*KWAun#a}Bza_9QOBFwJrSh7<0`(AW1zeM2n67>|i?_fr9f;PXbR zSZ}Df5Jk&_5Vg2}7T-wI0MMCdl25wsQShT>lg|l(d8tjt>sb)ZWpnJTKB*qQ=AmO3U)>55`-UUc;sE0!F}K-pEQh+3t{eeX;k?=_bE}#&hdp;@63_qPWiZNy1~QUb+*1kzLMYtsf?I!!sI@V8$^V%Qu_8d;ZA3vq znr*aU?F@+S0ss>x=>2zW-1YZzbI%T%kTHT^aEEjuLC?T*Cc4y3$eH081UP-?jT9^l zkwl8+4>Q&pjiNp&5^ymIBw!{#Ai3ytUvsQze+gb@bJH5C4+9G6v;kk9pC2e%iqt;A z{c!ODZ<)~FI_qZ*!+A75Rh|75vf&~`k>kVFP|OwQi#w+q!2h06mv99z%?APmH^U_R z+xzM>eRd(zZrB&ZXdXt(TrMVt(MuqN;K5%t-Qg~2rI!|as9moX#3*)tkWimEsM=&3 z>wTKxz3B!g5@hgcEi-y;#-$QZ1lGNZrJY3Qac{RjUQf~kPFes`eL43qU>0!@@zQmQ zW;lrAlq^C5J+9G-1)BbfAsqzSbeopWLKPq80}Rd0wbv*w?KAZUv(Mt8KGf}$3Sq}t zQIsG+aEhp-w_o!{itfUWbN!{HmN?+P92}x!M}yb+{d#ak)*9rUvs;XHxM(vv&Khcw zQ{Z@VZw@>akHt;Vk0rRE*K+|k%JKI#m>3e|8j!fPz73Fj=L|N*#r=7xR}Gv3rm!om zaj#;>cU)NXMljgIa`#UtpY4b$fT{j6oSbqW@TgcOtXKfX%scg-VIduT3u}J58;F#? zs4HlkJjpf2aPcBi-a@*&8DJt)Sx!#{sCW~FLElz&6W+Z2z^E;{#u=7an>IT-nGgy1-II zo&FAT$dgsWbzSlXpJbi&mdty=3N#dhkDw>GDMHuhvqOtn`&eBNH|LFXB#D|N`9kBr zHpnNfJM&r^Mhfh+BA3M%&Wv;z=$gXw#d|BngRa%WRtB(yPZ$0J{=3{1sL|6BobPAU z;(|TI7%NzXsU?XUNECP*hBmTRP@}ovB;*wt3BNnRe8coOLoovBNx=qE>fKQ%q0CJB zcZyISTLh%e!X;j5hbC)#Ta6%v2woOga}PI6T@VKqT;pz*=%Rd|-WbDBhP@V2r^YPo zt4*aL$ukNXSc4E24kwKe=Bz+}r3ZbDupE;+e{j8;7=e?4sw@M{S>+oqnz{Wq@WD@3 zd+ZW`a$=Y&o}N?|BWLTR#=vpzT0O3U-$sMeJ{k~+Tty>|3Dzx-*o7;QnXwx~P;2$c8`>%pJuEuUOs7Z^NWpfcCV4nm$}}rC zmwal~(mv{LliU&%D~*KUHsEt%c>Q2w_)#-6LTs;-^IU$qQcB(0Gz2|bjf(pzphm@{a2&)WXVME_8Oz} zkUG6d0jZjO=CE+vp0bafzFeDPnZ_n-m_eU$cOQ}v1@Nw&KhUN7P>qbngR^R1NB|U= zg9dv|zi`C{9no^qo1xCR^P^Ly3XcOiy;=I}gfURIWL&`;05a}6rD&G1)I7G_Z_hni zCqxg$tbk0x2EMZ4qyOea0tt!ndDVc|$d>GJM9CI9jTZHHuCWJ`7a91*Bf8LLM6v@9 zuZ7kyA3mJ>W*WjYYT7RD?FlaQzWCkD>-lq=?R<^nznJ_?f87R$k`4lZ!z`8%4RM zVu9$oPpfsH*GmJe>>Q^ZzkKBUqYFypI*>HcgkU@P(hun-(kHaLw#cX3rW^(52<`~9 z`5^JrJZKrs5mw1wkIVH~gUZyzVgR)5NPQnl+|-z{o%N-@kqt`bsvX}HOQ51uMBM5dqOBl_#zL{5!cVU?*D}tElkgh(C$cS4lz9`w} zRG!EgXW}j{8;*3n2uq!4;}qGf+yz6@24BbZ8o9nyVv|jL9QmH#c0SUzyA7aN&fGgy zruqfuh`gW#cBoTgk*Ac$O9KO;L6Mc{!4X*3O;wW0(>Kj>F7qk}O$CwTkNv2a8i{q> z&cKq10#++$cY|Gp27&JE`#(l7;DB$nDv6yLRR^T&UfyYV-3T!l)2M_TY^VNVfCgEy z<`52CE-$wO6RMiW$5~Uw3Jm{{`Ji}9F1eA8XDb{_+tdwvE45M^A5^K*2$7)z1lhVK zG;sz%9_ls+8OmbJ#>3(6dNREo2rA3_9z0h=G4f)*v?nq>QE;}pug2CVkW{=kA^37f zy0r}iLFeNRyU&0CF{Ryjc$#LcCI+0it3F!Vn|W+i6<81rt0nOW)q(S`vKRg-&H1l# z&OtLU4#5t+YTtMJ=oxEqoI`q7gr&V4Y}oB3vhlPR&z?j^TPQ|uIE%m_4sb4At2v>M z;`dlWye$9Cg?7fh-61m%H;i59pzfwmoWK`6)kwkUubER29US_1oaI{Sl^{(F-rcuX zo-qJZTh-2zWxtl^V^aB;ksD85iuy0&9UmHN=+%1zn~#GM?M4?TfNETI)9)gPjfor= z<+{?hh~H5)O~6KO2{`WaKFZPz)Z&%4Z;KWiFE4ehEJ$~=8%ra&s3UvyT^AFS(l=$rc)%-HF; z)hv9~Ay%iltkaV*EpZ_y_^+|aZi!l0M;DBC=p=>h_`mNZEHIj%xekJ-dE<)PF0!*)@7G?w-* z0x>3_9Iox}4$d77jKoWEw^-~sg(Z^HB4j}JMachmhOKP?i67^H<`TyV@Fw9Q;S{|M zu+?a(l)mvrq_^fH=RzvoZ-~JErRtaHMqYV!Dpv<+q&7rJ8$eq6JUG(~B=csJFBDCE zQiI6w*&rsY!x0O!)-W=iOQz+u?EUMv7ojdb;ra(;%f>h>igLQ9biSPl8eRUas;vo@ z7z2fO&4ti?Pi1J~CK@I*be+ zl)mxhR1Mws*w<#4WnA0L23MBhPmIjOnB6SSyo>w5!z5EDThi2xRT|Q3&vXgUB9P1k z!1iwpWr_{D(277p<5%a-3+@10VWFt6Uf`wcNi&1?ae3DvbryEKw z{uz?DI|f-Q)dkfDg@&sAoo#u zR(Omks4=eP?CbsA-K$Z6FOTGPp^ ze7_kENkRBW*!vUhy!Z`~fo8+FQW28xq3AcIwt6Aex-=M0N5_9{1`}SDIAFf@Llb;^ zabP&MZrWccyxGgLZO2kR_yFpDXd3L>9N4T3p^m*DT^jyW+@kb${e0dhob|_Vi$@c2 zm^ilF97Lk+cct=|0J=pr`HlxzADzXA{*qn=K#oliicp;>rM`}P8i+hVHh!J&u)M8=f$4#^y z;LEfFrEhOVNPYNg-X`R?bWY|O3vI=9)rf%mTfo!WFz~_|nFmdoY>sZozt>Z<2}=myIj|}u=AVUEBdJ8tMZmnJ(Upz!kyj;y_7C8=vt9gDubKHYGk7V*8hRo3@ zEg=jBt3cxR*?@$OsWJX``eHX_>66#?-B%Z@W~p00rwZ9K%=C?()kbBmjxvwdzTv=K zI0NWf34=XDQ~l7pX4Kf&zMrGRjpBRn-?B>IJz5`$cy@c@5t!@9*@U&1ynTQZUf-gE zEBeJn*Xn8H>jxT~hE8v=$@C@Zmd6MinD)LM$KQ)C>0tm+Msg{1x-QvGCcByjqA!91 z%uH;gBh1FqG$+}|*E(i6&Yy_k_OL0|ICWWXzkd_3*STaZ?n7X|K0xOYz9E_VTyDa~ zg+^$mwO6|;g>nQ;(0-x?6HVyHn8oq`#EH4Zlxf}6*g0O?y_q`dx>7^`Di}!3(?`ME zLd`KU-~34h#fqEl*H^}ls*vjkBEuL9OqEhL+WdgXA~40z)|y&K1{OzZ_%Fx}&FYQ*{5qdq+$4cO0AHJ)yL9y4Zn6$^#*@s*UHng)ZQ<*mfW2}e1|WD6Qe?Rw@IH((hjPm9BxRa9cTYo@ zH+7!meMLEA<>EBnJ56!&efoFUeA>?&|K;FZKT}v3S^7YGF8DOx02$qFJk?krPM=RO zTsRct5#xj^7H?>ppndy(7bOBvP+b;Wym6t7P#jWYgz!R~?rJW7G`z1SqFXZY#KzK^ z$E5JS84=eET)P>@uMtG;`d{5KY8RCLt$@TmSPl*zhH5PL!YO)fE(k%vz}6Y`c(qrz z;F_zPUX{08H~MGJOHW;xV$L|-QR)sm`KI(z2Wl!c#Gfh=uLBi-LpsBrG7I7?Qt+aD zrPB9-Q75DmsDOsM;&fO?ArlhmXhYXNT$B)*<@Oe7Fn!<%c-0r(2#28P{U8vah~C4{ zBv+O8Y&>ynMB7AbNNyC&n@>X3Nd7Q1_q{xRwgcFOwARk3Q}d6@jooVCKz=zJK{N(lD4=NMpD2^sx(IRzK>_L+mwqt5N|o3Pcs#W zP+QZcPw!O*+EqImuAcJnF6_k>ZO#x$MxXwcN$}BcIV9I3f<-r-p%?>QXR5{2p|Lj8 zeO&|(OjvAScsD4niVSJ%^9p;4wW35gSs>8^X`;!QY(GE8i>-cNiG2YYTch6rGw6il zmb)9qSSlcjQiRf*HZ_h&d9A*JZ&AtH(4qVe*&1yEHDHPEv0L{B#$>Aq4wMZTS-ym? z;9+EWyH}H|@Wl0`cP_9!Beg!=E5iISO7W!s?Ed{@$Lx0`I*G#ngg%?j(T7uOv_sY0 zavnJ3Wdb5Huj(PP|A%M~;{xVBuQjAW1h9CgnD)wkH=dKoch)ftAlpNXRS*B-wmEVL z75-HW`GgGfN7Is}h5rIcC&Dj(&`L%?3Q*R+C{&BUFmp7kmx-e6HIj!SB2RgZX3aEf ztQs1A35if51ld9TV?2$UI>Z&6*smBddD|j=7RET}N9De4)~>%^)!`>dix4C`I$OP;T+s}c#nV&D`&xi&`n@zJ z76C?1bA&fg0`0}cDrNE+?>TySd}-BqNDHmPY0DmdkedIB2g%d)mmPeWM)I+0Q$k1` zT6;m5iLluWF1)ijNUSzuhPkE?FW89jH>Yv(6t~pMmpFtq66{k~bPi!0Kxn4E2jYWL zI>9^9_o(A+#TNh0`k0a+<*tf-J5MNC^9vEf#h-xb(xeZdqBS)1HABVw5GWt{|tt{W9th|I<=#J)3`!EZ<`WTduJP>x_27Ru9$rSZzQx% z1~+AWp?rxMXeh8JA4Nobd}T2ENXC$739aG$ii`4=MC%)#8U+#2oCwdg0s?hSE8YK4?;AIy> z(@}iayb*JOQCX7p`69UEWOX|%{XIDGNE@+hhBI+EzUdV7m*-;;lgG3A*ZU}RU}NJL2H*iSQmyZXH9o5 zH zobh((bT>*48>j}zz79+6>oR6zciBTJ0VFMzQR_#sG}t7c+5ue?qFZ20vtBJWYAp%6 z6)^7PLL@M|&!&n=6SB4f4(E=5Win@s&M-u5F7b@S<4&+^r*>w88qTirBK5186=(a= z##R>I_26{_SsAjdcKG!dv?6D-tgiyUjMnguJHOcPC9KWs#ChIhJO&ITftk@%H)p9R z5ksh{=0Grhy*cK6nA z7(YVNp?!}Xt6d}a6xysGjZKAwn*fKO*I{9-rqB7^Nk<$#+5Yj}YRP~_2kzlQQK+tG zC4BLx4nizaH>96YHYu*yavMQ&-&>HE<0lC3z9d#nKl^$F%nwcfaiIwmP|5|55x*cO z4>OIIJ44mJ_-rGv{K)eChX+SNziw1^C0rnM+i$KwHgLV1?(ZtYv z@Dr47W;C*)sBK0~_Q`T@b9Mun-;8QYNonVeYHsWEtLg`kb1U5#eBNthUX5Kfa8glr zK;WRBlB5cfcG9A3XSk=VZY!a=z9BY#(HGIc0E7(5tvDb{hXBI7(hYgMNAU(K`Hlqd z+%v~qoYF?GxpSM=N7TeQ8>Us)256-ZO()2DyBGws(mvY>acrq({njcR+FX+CFt`5#J!c0VKGEhYK<>wCV8u89Io*!p3IQFD+>VW%X_l zVHw_m{MF8QG#$s8vGf{@aMb&=TMtbfJC!A?4!()M|4ed-3)I+IJ%l{7XZ+JSY(Q6b zfQGNSzkT~cw>qvD#|>W5YXeayH#%KnnBCB2VvUhG%`6&G(m3z8{0p5D-z`C{VsD9H#YX9teyXZ4ihr$Pds6e@1Ledm544rpj3n= zlu|lI-%<}C6^!9Y1_B{zTz3LTJs=h>Ow)%OKG|~H%!zlMuE%CaLZGtHk?i%fMVQum z^s%kS`|XA8nZZVwXJH`t|aO%m#pcCcxJGW_ra2%5}-Rp71 zHACPJ<{B6+W~2iWpYwoe63 zk9rrRi5Wrnf1wQoxDxb6U-2%%Xn;gBP;gUjj4#8!mX$YP6Zj$5I)oVtT$z%H;z=nNy24#^q&XfOm< zq-4#J{$>4-C$(Vpt`!UI^Z|;Dk z$tX0cL~ICt5P#@-ifA2a$=2aJuS#`~gcZEB)upI<&nnoE^`hn)u`feGx9b~*$i-ef zgl^@oA%a`7Q-T7>{;6tU7)?!sL!vLLU*urdcWc9*S7;TC_QM_`4_L@r!;XFw;Uht7 ztgF%*P53Ab3MftY(|?>7grz{NK<-t(!aXaDau!to94)}Mrn58&cF|`K;pdr4f4o#L z+P;FZDZPf3bJFR_D+kh0*38t#RvF!e#0~UD=3T-p{nya#dP%HbM9E53T|i*HITJV< zj+Qi8wQoe@JmK{Xqp)#My1kpM_2E{cO9>qmYX;pQw?$a))i+J{G_)}2Db!Yf+nceY zlfePg@3n5bnE5ry_CwTEGa-!Mru~aYNzQM<@7pEHowzH7&%EnO-6?npa$rwDc_h-Nb_sxDiAZl*~&N_gf|%VJiEV{dj(0; zUEV5f6u?c(zEo3RljC=t%5d&PHT9gXss=a7KP!5t%B)eAP`$=-v;FG%E z!}2<_kf_O8eBPNeHWH>o%gUL5jNKX9h=hT}0aC1CA!P5X@y1_qxSU-MlFNt_O5&1M z?=@A1!z$I=XTL-J_I3L3#4)qf0vwTO%x>}ot3R~`{X7=B497!&M&d6DCaarF;(U(S zk3Ki|3?ejSUz~Kkgi{}Xj+NYy+%&aVwRaFdiyy{@u?3CxX;I2;)10Y_(*!q5V;P`O zH%z2_%zRKb32zV*P8JDctU{;KNP%ZVaz!vbl|HK^Gw*O&8F9;-KBUZrNCCKY#}!OIhOKgMB&C*5a?ul zx&{DOWMrZwwA4iI3UiTVvngAZlbeEESV%oBT0Y0_x=!N1(viZHA~UU!20s-;-W{qy zv7PZ~Jsx;&!rj2?lStmbYK#x%tkg-oIzEI<_*B%L(3Zf$8tf-cGz7EXZ;otDi*G`I zweDe`s*8_H{f+?}y1v+ad5F0FYEhR{6ht0bTFl`(> z0Z0;@EZb-dHRij?!Da^+iW4_F&Fq$1gELkJM2F0G&d1pWhxQRqkcoBPerFuCXKruAY?~KBzye^>gi;7h6Im}mnx=CcT z^t%4IY;#|BhE}eb=5FiKna2Fl?I+E)zPzU^t##EWP6d+T0NtG6(99jWUm#4GWvA)ws^=)^up5=g{M= z$tEGg30#D4JX&f!7IaIF8ZQ{Q5WVys@7V=(leyT-13;?;`5v+*+8nM(qf>5A^cTAw zbC2J7$b#3{PPqbEG!D@`B=MJ!QePar?*bNe`BuC~%UB=E?_$UppRh^Fr+plF4pG5R zAIyGkdgmi>d~?Eh2I0E3d(!O}x{_AJBVU&g)J{jF*qprrprE>n8oI-DsoI6I`we~zEf ziGfA!nF&pJH_Z47LlR?+f&Ny8mqtRVBnzc;0yCJF zk1GX&Fm$7nE>Q4n&PEDyBgOhsHN<+$wy8F#lcv#N^1nqAy@Gdca1B>--wp6lF@CAn zakF=}*p>=BrFyPNNiH<{lSv!KFc?x zkj8wBTS{l^`kWO{2@0Am81Q0HNJO}@C17wx993sB3q5`5X64pM81&$GhJ{b;>W-^V zBf|S^*h|)JOKV~8{RlGAto3SdovlMw(pPdK(L=h&Kl#KTE#CKT$eG_BXUW?gAd{(I zlTP7!)q?|88fQO^RypRZ`2#rzSB|t2Q|OHG{eXd+JWn$ijL3Rim>B#3s5hPvSn@*% zB-1C);F;|2{QQ&BNViGTh0%W9Uky2;9ux^K1zJjh^uS~mUyaw2AZa~kL{dZ-*HJ1T zYW(u~ADG$J*^B~tQf}olWH1>cM|K$7ZR}m#(l$=Y{fU`qRp7!-FVYbMj$BcVwmHG^ zTnIP<-#k1`yP<;o1(+5Ft;1^>6^O?t>W4v=qum~1ftY!SzW+$-NDPp!DYEJZlYGrG z-pmCxgh^oq6>KMvR(0zf=M{*{x&YBF(SmkP%)b*z7|9sl#kqZ`ypnDh7Y0TpJb9nJ z8OCMPJYA>EqEjdwKZ&fDX(gK#H#9>|`fk1~S}v+|bI}b>K#S(saAXC*L+i z-nO1;^1_oQPy-(}VQq&V8XBotrVb!WO82qhvfrr?q!Q2&Oo7sQm{&{e~K> zYlEJLkHP~nH*T5Ycg#cO@t3HEv7)No^eltCIVheS4co=^!RV{eMZM#=m!*{xiNWaa z{k4sfXwLG;k@Lp~00$N-N=DS&5%*}FI{&KwDUs4%pPEp8B$0_FzSvuz+OJ?YA9I*% zHxd1kJ|Q(oDvs^*f4D$5e`j5s197`U4U;D~Ln2?R4u0K*`tg#~V!|CWjWUH=MyESM z%{d4o+_2~4!-OLwGssDhQ}bigb`TGwLObUR2Pv2=eQ!;jy5bO5H{-^bSyl7Y!`npJ zuuRph?*<#%T*TTNmJz#sMv57|4sb`8IQAf63f9NtPsujNXJE_h2nOU>WtlflWq1&xCt3z3P2+%Cl<8K4rVQ7XDq_7-oKG%_duoH{c7`j|m%I=8e*RYu# zJLxWt&4hA1H=lNWIxHbo-`VdWOwR|H;&m$pwu#)(Tx<{7+J&GX4=@2c4lwf`dn*LT zYC0DBvmqBkdiC0@>DMdOv#P7ushIu@e*97vBX(#F${UeYmn90+l&HW5jz%w21+i~G z-4nS9>}&YXVFRflc>@ZyQSbC=;$f8uL2~|Qjr_<&67s`kks?q}wetYcIbxn8WX7^n z&lKrR(-&e6)S$sM!Z8kli^Yz)`@^&QUfO5E-nc_a$Ap~eyD^`12 zf2BE42uI9wl~ro4BX5n!Cp|PI_dM!_Dcias>f6P4T+sRsWZErn19S#fgxUr~BYgq- z3+z$)_fe`w80?$vtpbCvsA)n-{Sg0xJ1*y2=~A(Cuw0xp_I5Ju>7r=Qqz8CHi9(=I z^M1O4#YcjepXQ511$~&vhlor!N_GHfzoQG7L4K-8$)1TRC7H6WOW#r+^e$qU&eTxEJelyTfDzE! z-rNl%9;?g~3eSBrgQwGnhyp+Is;zDMwJ6S zZ*dy#0?@k<+vR5@K8z5!LCsEYzF+y2+k0?$nrUo=Q?NV<{b6W;R+`S`I1{@oKvNJR z2T~mK$9bC(p@w<8Ep|?C23pwp3LTm^;=Vx#K#+I+GpB`~k>iIr5zP17+R>mJblsj* z#QYqG3IYu4yAolLfO&x;p3q`3g#u!)nN4aPMVM4SRMm{R+Iuff`$XO^6#16doXT%3 zF+7EUGlFCZ9XLV`L*elmw)w~)J+{DBX+B1jtS;l4j<<1k3cSb{dd;@urMsRCgXmI% z{ZZ=Oig!8Cqi!^-AAt)L;sNEi^B&T%T1UY+fU2E>@`IF^6HzbUiDjDl3}Lz98mkz= zq56uSKAj@q27$Q^K5wQo@4MN=k60TFI^)cTp()0fWmAm$d1#Yb0f~EZhTSk0oJn25 zo8DP$RrP?`_86B6xcVzGI@ctXl?)q3Oj<=fUZuL$seAWZ@9Wvl*3z3h(u|m9D$~4I zITL`6KK%@oP|w~=KbW6)a943W(iFpqsUH{T<2tR|YF1VG3)0;zV#a_Cyl;m2OUa#q z4D~idS=3uReYKvwxB&k@0Ki!`=ioO3^<|D`y_7@E?y;Re0hf|2U$NQ9u_cFbqixjc zeSVtuFIV$unF@N{l*Zfv&ChEz!3d0SnU??KqC8(BNOFK!n4I>S70x^{V@D4^4Q=iJ zSxSe0^Dq+89u1}S6HU~1?#NX_HLrl<*yk*R+gV68KQSpQ(Gb$=5nIDF?sQJ*YMc5w zeV9}EN?qBn-OR1%i`&+DE{5Q@nsEF=<1W7-XjxNElMGq(6x}25Z;g;?VMGs0OL4xR zp-Z($f3WfV#!u)+{w?`>)dnHDV+uN$HyyT$nOK)x-<}7$n3a<0D z;>6y6WcIg=#xj+=2WOKj-DrbOr)-i=o_h5g@ECOWkR4T|d~$ZZz{GIqw_Nsoga&ik zdVs|NSr;nh17~uYKc*`PjD>_j;QV65#6XHwG=POvk$)lW%rb%F>L6K+N15VSQLN}d z0`IJdX~bzsqoyP>eFaW7p$dxKI6%J6%K2bFf`?YXLC?UBCw@*v9A@p>2^J_ZJqqYV zLzAizJ#}Cd0b3tx{a{(DTR|x|N@`;P!j;zEm_o(fzj}qk(06crVuhgNXO#X;k%m!G9==JkP|`47_qI=8VpLHIOL<8vRS>>(bLk2 zy=S)4JBQ$NfyRouykCKYtG)j=)HaMXpiv$?`N@F+HJ_Ur(Eaym98NuIUVzk5@^qc7 z%MXL%kVm|r|DN9mIl-1)ywv0hz3ee9J?rP7O)Ak98Cb~{lYm@R=kyTH(D+GSi?$U_ z6PQl%!uiSZc|RoV4AqZVSD3NA32F(pCVQd6!CP@+QC`@G{tim={;;L+RN~o_Q2xaU zoVDg`4+%PpV>Selk5fYTOUZ!=a1i1vWE=x_r`f>Q7Nts7XiMsM1rCmX%(G z;4poBSoFf$+Q4iOsrnF~6{iff82Wg*5kVt{jiq|-hN)v8yYkCEN zaCoUgc`|a}!+PUz?dKdP3eZ?y%k+?3a#A1T;MH9X{mb}0M&$*&q5a2{0ERy{s~U$A zt5D81_U`*ztKzq6Lyyi0%`1}nwt?WzC*iT^DPSm-L_F`qJChA@t|!E#Xp0-;E>(;0 zpqM**`IoJu)ux7c-YsB_df_jje$%dOH&K}^8FKrm}K+|*C{?tbPp+Xn3wgSIS7oZ*?q(_Q7`Oxe{>^F$t=IiZDS3}(#b7zFa zI(-K>8V6ibX~_yDoI*U?Ndd*%RT}?jEKhQ0;W3vlilqg&Ry<-{ShEP5kJa}jAR7m6%8H5H5GgO8fp zqPD>*hNs`Z`Ct0kzE?8T5Tp5XxIIkTN?9Rf>e&_GXg1Ntl^ik!@N35NLYH3eMPKF< z?tNNV%tWap1pT@1!R3$VoPEH=yB0HL`42Yi?=%Yw8;V>xR0y7yUnQJTs>8?(ZSof=lmbW9o!Z`=OKB12w|tg zy3f}X+~)GHjl7jkxu5X;M8W?=z$V?-nw|mIbr_YU#(^9^p}NzJ_x@GOQ9ca1%EDbK zl#X$4)s9=;;xlJo6Myd5Fqkm~>v?(^BxQCvVN_^o-*!)(2)UKFf!pBpvr~?V{iIoe z*?i7g$=W*2G?dwmM5w&emc_=uea(sHR=VOd$|p#i(fivkYc0|Cx8a(29BfBk?I1A!wMWn)ZcBunw;3t^g?rWAqyGMZ2eiquw;vi(6pT|8|DTaV z%1H)Xf|2ZMv&xti9pqW>YSPV^*u*n%10?)ycc{(fk74!7B_@R^y2fV_oP87;0rn#M z{11zJRN^C%lVC6R95efZta#>+D|OdI${}|P7>ZPhqpdWUBkAs$3?5cMxJdDS2|ES9 z_kNAlZF3*>t2Kh?G0O=ks2?{{u9bK6%D;A62G;@mz$g0jPSTbG+26F&M!36H*4DLM zyRGhGRik=EdR3ZzHdnrjK`IL4FyttzlJ3G5*6S)VP!j3XdZQ&WE?I0-u)0~#bHml} zgBXhJBrDD&$C+OYx)tmFui|ADz4GvzFfg+Y`rw3?c*wzXh^}4Rv&WKLfErFwmVyz#63X2F~k%^#K&tDXVjUTndz_%H(n0s zb{V#90bgM6x0jqEnKO=IUfgtcX%mL4Pjo)Yu@{RFotlbzE^c^7gn3)+X0j%7#Lebd zCcDJFEKI$TjCm2`2du&MgW zkF3wXM--bfcZ7B;G3eHn2icqGgNimE`5=;q9N^_U9r> zXSlQ0^`2F}P~M6Z^LU`X+l9XjDJDcnJv6$E8Icem2TOPU!ZvF*XG|VFj>F#MeOk~s zLxK|QmNUJ5r99>w&dj>yt}~R0YcvZX&@CCrXP9{G7A4Lt!G&K(S8ICzFaCGYS7zqgF)=Uas zXsGb^StlCWc`6aV0F6wwFYmh;9Mf<*68c)D<$41J%nme97$)3xiA>gLkkghURTlHp zAEZ4xX0gfFGQ|U}9aHkQdhAfwv)S((+Q&xcj|CYmQx)%-?hT=l)nCJ^5c~cO$ z{bO-iijGKQL)j1OU_=T^YMTH%E(+MA#TT#V=XUuo^w4SM(c}hk0E$!+>;OfM=p7mX z;Ih#V2rx^JPq)vj^V7R|#X!#_H2|uy>aduK#3Wz>^6@z)FVP5-LP)B*w>Se;)|ptN zeiX?D-ld-gAJ$Ae675iZygkJhD(Ve82N(s!Xr>60R^p4$q$^ZayjAgb5aPy{UWzpy zz0Sw)3B!Zr`+l|VR511glF;-Z_Y3U9qnTsUC#mxA)~p;o4^7$1lP1V+-Az5~ecFs$@oll~j71Z$g4UQ~ zdOrDMM95lqH%n6DyDYhF`o0+xCoP5rRzkTNyXAjv**!+Om|Vl1f(uMC0g7Wg;-dnc zlRlWg8gfe1BtpEvpu&3GoM6a9$R97=F$IxiDJIDA9dP!)LVZTtjPu8_YVQsa5bR6D z3ROFn+sg1VQ2+2_s&Ch_DDqaM^z8E1n%?8rUl7PDC=GbTgH>- z-YU2EYW)P7isdilQKL!Os<~$sdVc0l8s*z1m%D}*;^iUjPZxZS8&glSaDsd$zSGfik1|?JY%xO0 z5eqaO5rg3BnhH&#V`!=$jDowmO5r^mtj9zf41z>L?a%@GkhCrcY551vme4AE0*i;l z##K;kXR#brgfD^;X#VMebcRz9`X_Totgf^Vy~7fEn=-}2%$3@#mPY~*&wxOyqD|X5 z`#y}m;qzL}4~^+&9Xa=gBtlpVbd`;Ii?@x`Pe)GVlBknPN7O3Ijt^yz8{~cn02duiaiVwC_z7XBTRNI| ztA5!BahMKmzRn`$qRXa$M> z7@san@J~}V0xqZs>HUiAp6v-rxA-&~y-S-8u1vKUwKHwql~AD)DQ{ zvXwz)rZQow)zZ&_>FJ>1QFdws8>*q6kdbAG0R2nj<1l_3PtKfp%lA>XBoCagP%qf( z7UKv|4CmTMsoa$!d={cLTiiHae8wAn^9z^cZ5G=}&w99`IZs+eT6(dEYdFt^d|B?P zMW-EkcH`fa=ZZ(xPB2)jcN1a*y%O=%#tQI!qhJmqo|p{439@P!2FL{Q-X&W<)>I4i z3lFMYFVNi*hcBlDta%FCRXJMKA355b^Q3iF*021^8mM?ieV2;= zPkOhZ>|8kpL_h$ZNYUp9+K#{o3Ar7yg5sH`HggwGGI$727|wl&gQ;gJmeR-&BFG^R zBfgW9iuU$8ng=fOz0m<*i=^0f{afP7tE=&hrDo#h=k8LJWOP zJ1~B!Z_J812aGv!?sVr8+;HrW00{~nzRbN*A{%g;uXmR%wj84!n$of{V_5kmW}Wik zUu!P{9F=r-`ZDg_2X~NuMEea6A8^OZEP22*;&zv8phsmEwDE~_b>NO4;*wmUF4}ABf$sK z1U1p~iuS^BS%e2E7ub@a|5-;fnyhO^_&tCaX8}fGd83#IndA(BoeLC(%e^lZ?5DQe ze$EYM!EP~4T53Sb@OAm)iMDQbclHFB+(yq36EoFm;d{PTM@ zf}bIFmm~Lgzo8Ki*AxL$6Wk?2J6S)(f_jJ(zvj{tNVIefN6=OHg#Lh6feg8*R|6`N zyZfk0Vw2X=L=@e^lzip80;$Jz%wxM52gn?>qAL~`6=<&BzLgtQb9N7MCxrNpQPLxH zmX)-?JGYwlC7|y>__b0a);){hplt*C8`w)eft-CLK|Xrlu`i|nz|Dc&2X}V9v2!2v ztaPPAy4~+ZtFU@jz2sw}K`CqGUQuF;di_(4=FR6@ofRWMWMFw}u7o1hS9^x|jAjL| zQ$ai^Uc8-bafWL+sT@YCUdVw;&-B)J15HX`UtIPWU}i)RixMvH2=H-6tiz z3W?tkr*ou*_%HSDb*rPP9Y{Zk5~9tye%7GgK{|+2vB25l+$@9*;GxZM`TeS~tU4iY zL)^s2jduPqk4CiHuMqNP&aK>+!;+91&L;L^LaV!sOAh?Bjnbd&T|-M2GJD7peTa?N z4_>6sX9crxPyFimu`AQ-i;*+K|GJM~`nI0diXr(@3SDjSS>|Ag;qi^JISFyc+@mfp z1PJG;*I|Yh;D*vBQ>n_k(XN47&B12EVNCJdm_(4OMbz1`^Ggd0r?tRK>7dC?774)r zNXmnQG>CQ8Y!v&w<0eH&k@#47uu})ij>f70H^#*s6vwEU0ATUAca|a|FNUT@BJ3wu zCTDnSl?5jVj>wUNcLP|m!Vrek%b)<*WGa|hd8~t5sNdIyt?cRTvOPz%SWpv(wc~6j zV99Y%`{}{m3Lo>)USvgQk|>Xc2}x3gb}xfWHYBp>L}oB4gp$+ybSAg%nALsNuDr_( zXgoq9DR3BJ{hO)V`M=pm#>JHugq5=o{Rvs&@yCd5f&F5|4)7I0}iVqhs;fZva~JAAnFKfvd{A@ zh~|%q>ZD^uQIRv&O;RH=;SWmW?PLBqvTLs?v6+wg2?f2gMj7qLgYh_w#rF~nWb|xS z#mLBICu6h>BTK2x+z9!BV&?b+z@S$iDV9TOGSO!Zs0-m_|E<+1T3p#3Q`&=4 z>Lxr~gD!SV>W3hzLdRu|LN%tMNwLS@w{Du|T5bA?tKrD4IpweWkr~r+E}nhvjQ6d+ z(2~12fogrsPOsuEc1y6;^-ZV5C`cqyUTTu3Ohtmm)DQ}sBkMojt;<5u&UZ3Vk#?Pr z;hzYK$2~X0y(SoKFsIx@D|B;65k`wDk_iejMzOzEomDxeG#h`b3a_s-fMQ3AyH}!> z>O2-IEw1Jvhwq?60TZ57Y0eC?C(njIiCv$P0=kJgg}H$op;Q#U_n)_PA4NQ0jXnIh zG-^zlI2jQbUvP@(8Bk%Xr8zY4^_8BP>|7l&{~0%XaX4e=uI_TJl0Wsv=YZAT`V?VF z;Y5~nB=HigtlQ)&;bsT@^l#ieR^19pC+ERVJVgr>Y- zU{^?fH_sbbkLMg%0bLIdDiHh{5 z$Ud&y!ejIAsZlRO^0G4L(r0zcmK7Dd`qFI)L8|z4oPZ>T&j zWOxwK&FLeW3oqY*K53g?-Pwx@xne@H?AEElPg+&#S=OE{Pk+)PF-U=Py!o#!(@s+#Nn3+c6x4a3Las@*g_r1y^0YtS zmoHXR95b<+r_$UA5n7hkR=k0w6+FxupK0f}1cQ7Es+a=YcuY|KlQ~x|c%pMy?&)+c ztM#{WF}k6!ZD<}f$c#7dn*_9>>ZBRd6tX~!7&u{YUOl+7B2~r!SY}y{?_*&eOf9nd z4}HCekn9Vi9i3-c@f%z>8bF)HiI?(p?V|3rti$0HL+jXUeKu;KVzAoO(sjs{o&HZN zK5H}lP5N(Z7c3vW)#=xCQ-`@|7psL+7w5e1T3^?&lAMx+rv)w=>g~brt#DG3vX4>| zPVb`(NP97}rpo4+Exj-Ju$SJigSuC=U2M^KBXYyw);*4>DIqbOkklwB#e$iZRny(o zo`p-%D2OkNgWapZ@zhqnVNh_}VSY%&e;MYTB!UlW0#E416ls>6yB*QvPaI>tn%w`7 zG*U1UtSG}_Ti%akm%Dkw%Z)5++!LlJQR_LHJOSP!!Ef--23(TBFX-YUU9Z5-UxE1? zJ-T?djcZl^PC+V%Gb$9Z*Rtgkf7}lqajUrIqTfXPCz&!o_u_NC!k|-n~vcTHj`S+pOGqSazVR@4GT2l?+d-Q^!^+z3KJ&0XErV6jJ%;2s(Ck}H{;`3+VHT7(ZF~Cwau{r%( zxu5TQ@1y&OjgOTI?&jDYqi?*cZYZklUM0PuZ4$c=0jGZnbBdjVj*YWWHQ0|w>y~oz zo+#d;CCwqkIk_BP@+M9Kit>gnI|gbe17tsMsO14&Iv>|A&|n) zr7H;7LuxbJ2PA_L>)D&`qzTX+1asH)Na?lBne~?YQ~LO;n&*Dp@kY8vHU=#T^Frc zpV6Y86bh^qK#N0w1A<&4xTdt&8{?8ZvM9paMGaD2MG{N3w%JSjYfd#QT`|#{iE-Bd zV=|-Tzl;9&NC_-ro`mLQw!wA=mUwk7)hqrs0G+@Vz&Bx3=fA-^wsf;Y?g+z2Dj~gT!?zVscoe3_C_52ti?;_(0vx%r@vX^4^yKN!n zE~lC36V27P)gZ{$G*o1NwEk&jUcFhOT+sV!)yRQYDa!i!j~oCv+AQc8i=|e=5RVKg zBPs3PIJWOz9bMC}q4F?}j`E!Ml{~JnKT6*w_G<%f$oDR3(LJWNBDZBVSJfwWP#0Hd z%3L>6>tE)naq6&^chY_tNfYk?fMwt%70N8o8_S`&Ouv&Pcz|O)#P&pm?89 zAjs(_HZoUc2l6C|F3;T>G;8IS*x*;rK0+g#c8(ys7@6IQZH5DE32`S9N1W;X>;D>1_rBss zFGdfG4=VbNEqJ{#NN4l~Wpw6gh`9%RfUUo2BIZ;oX8@5qNUr30>3$9+rvmgfz-%ENeiyH|H1 zt2OYn<_gD-WcJ6DWI=_K()}=2n=}K)&pYLkkJGsSz-$eYFgbS;Z`HgT8fcgH>+8a3 z!iza)vsBt727(7tU%zr(zPovX!~RF92=zrQHNn`*K{Ho_Sk=0bsB+%Pu_q<<3Vj=d z9Ix1{Qufmv-7{~B4-OKv>iO~$+$TG|9VR0QczhRz2EPAVM#uC?+#w7 z{q9coSVEUZn+&lUZro5(7vm;B#arChZOea#p^Wr=Qy{k2Kjk>^Y2J0wREYCv>jY-* zwCH@J)ln~3tskwOysYRKheaI4^odc);S~DZ8-mdrsbbLPE(3`tNTP+Y6x zq0Lsd^Kdgxs(&80FPK|4a?A}Sq{9cA?#)>V9zb7jAB+M7dywUnA={8sC;XBJ#H`;x zRzOIGm;=cCpR)1qS7xSHGsn;HLY35if6Rk~iI0{1{xuzuf3{Cufo zDbr9HHa3U@$$5W8Y-)UYcRV}2a3=No@;%T1X_KOsV6U4~V919_2Yfa%%aiUzu6bbp zY%Nd?duFGg*11w~cUx-JfbVOumdghzXc?OsR~@?ay#amhsU5Dc9@+9>nr|WyF3*T7 zT0H1*fnd~i6iMRekgv+)8UIyCxO*`BonGp8jHCd(Eb4Ne@*wsA&?}qlA#Ix`SJd_0 zpYk{%PGuTc`Lx}x$_ZBVGz0KCnY0o{V2Pg7ZBOjwRGWJ-*+YUF-aT7eEmR-A{V%4$ zdFwg%|6f}=8T_ZPa?ra5pFBH2WdSmojM*~(aj;fQ6{ySv;nz_p=XrB?B#LipUzn>8 zf<;iK8LCEG@xQ#^^5*Y83pOl$rIBgYL`Ze_}AMboDi5kF8ytSssR;0zq^??7kc$%bDzeGnRr|nAJ*eH6|?q$iifL! zyazu>almLB%oXIWOfp_CnH}4YKj1fz4Hrv<5ZGnW926j1#56n8=9ukbh_(P9IGli= z_PuC&e(MK|pZV%NZO4<6EpFN#$^D?_9;i)H9KeA5H(;Jo@kf|Rp&p|#Rpn*$d!TL^ z=hoLQTq9d7A@Yu51x1LxZa!NI?@sn%D$G!y&g!9}VroZP!|-I%bwY(3d>t0|FOh~_ zB2o|d1Uj=C{mVOC6apB-@VV^lB0KMy4E;XInAUFy4v#69Z1wvSW}1eVo`s#Xe9{c= zkjEyDc|0vX#Q2p=;klXj+M`4ImD5nTtih{7$qK`EcJf$jY^8+{9RMxNBxi&{gdytD z8vm0Yk3{AO{i<|TB6>C+jT?IAN!HSn0Az40tYY;_dkc3Ew|HbW+K0L9-nr2JB+I^mW(bB#{8%i;P^vUb0lDZ2F?2@kqg?E8W>J4sf0_vsZbxQpiF z1$E`;XjX-A2Oi>&_a#Rb{irR+=;VP@u9&#*4WG{3GP0EP!A<7nHVBSBUo&~M25HF0 zm~PVU-2QpQ!YcML3Xdo55I1aZ930Hp6IU8Wo?JA#O~(|Dm!aMuT=T;AumxDbx(z*M zH+|e@VR8^BOuPnU088;SBjgu8q8rq-1+)1g?^@bsbh?`3kKJ^0H(erhjMu1bM*ea8 zA$_vE$!P@1g5*-ci$iBj!u)LtJawfaju3_q=XkXUx~sJMF`FLtu1(f6GI#p-=a>Z% zw%7TFcP+x`Oof@5K}Dl~ozSVVZKk#5ku$Ol1Pg7XLhXv67!%Y(iPmIrVS|f67Dx?= zMF5oJA2~kg2c?$Co;0zP#~6!{fStVw)dPwSB7ykm_OAN>qE%YP*n^P*JEu zF|z#?76pM<>5R&GYWba^#B>~lBaljGwx3!jMIuSmQH5F08XdCCJP%m(o%5nj^*-MKdv-M;?6@T+6=0Sw@c0q&DAE(;Hjyq==A4Sh)CUZqE1?(lVI=5 z74Z~9a-4DTq^!(zC@Lct(nSl1^#f7PPr8q?Z*1*K1t*=jH)2=>o87>rsj>1MtzMlW zRW%)1Ub0qI{bw01pRgXLC|B2ErW5NKt|)8SN1cCCknHD(iz`XIp3u{Xs)lao$16$KXI>BjbHNwHEpMz zRO{(XS9+7)Ksz0Ol#22g5-f#X@vl*`f$hpymi6F&skY20c!~BE*@Ulhg3m~F zx~x@E%1ri*R@*CI^Qh1zrOktlWdiD}pFss`^f474&LgmX zyZnd~MgYK1!HUH9*@DJa_vpj>6}NaU@0*32(Pa>+*tGz>hIQ^(S&TR7MOlyT7`9;!ear|HQf-3eS#J zJENpI?erc>ePHrD+J?M9x@dT=Kh?jl%KwGPLGygOVKsxa*AXQPYa7(i_lkd*b#(w7 z*!E$_{rb4SbflyTDqN1rUam4vCZT**+`npc#^V=OHx_>k@T16iOU;FHM~W#$_gId^ zuI+wH7tWsyNsD*&#jpCQ_E`A1p~hkEdh4XOJXBttFLhT@$_jR2hp9;nn(0X!P|A^> z&ICwbY))v%B2QC~-SMP&BH5~#n1T36ZsLu<)i>fWBvMQSN6jYPTQt=Z1576V4+QCO z(kYAH61*|wN1&}xKR2%o2=$%X3`jeW%DseM{^%A`4jYV`iUGhnc2L{JS10&1#m|&u zq1}O=Q2As}vG<$W&`n^Mc_Pvw>(){4r`S{y-w(lZ@vO83QCv%N=K zw{^nPFzFeEzug$=W_;>ZrA6Q+yv|{R0Tke_Nn`52>dMJq{WvaGIcv|mt;s$5TaHST zC^ZVyOILJs4TwFEQB+e;__pAhxFCp1LoAJ+Ho(egcdF&T6XJxIu|>E>ex-On)r$MG zlXS-cncynCrBwZ_7On}r9GBl3+}xug=6tk>m3ob$`O?erXr{JUDg_FM*(fBc-)5EDP^=JC^2_q-<2f zLy&agt*UL-i!S5ssNs-NN|Oc1uL}FI4(o)`!T6p zK862`8uq@lXE@R33v!k`YLv%&{vT~u|Dk$R@|K9|)fM!o>%V`JRwwKkJtWzI(kH5F z=at^6&=3$xVDERE*cEpW5Xm0}Zeu8bWIWbyHMU^@uA;<@#T(iV)<4a}aS$)a=Us!K z(?^2g_yR{xSv8XC9RwaRII!#0>&69#()Io(;tcf3X0lC@&lj*q*iX5e1uALOv}o`a zFoK0wr%FLfhh8A}F`YanFW^%Un^YK)5i?i_ z?L%-k*GPG?JfZT(ghfF}<^JEWUC5p*F*rDOhi-5n4rlPB^gcy78UzpSFKIi?$30&8 z=9BZ0N=urCGP?aqw3O=h1%7g5Ux96%3ppe;fGbi-T7<`t;Ltk-fO zclevw?zgPo^Ca*9t2XkgF}Xr>QnvXytNM)sow6(`Y8;CNxV*-ohcPA`eTBj!33M$) zLq!;;N!4m+d`RzhhvcPe0i1kV%i8}{2|H3=xkaq1_{(>eMYO|M=h*6We9iwwPk3Wx zc_l~ijKQH4B>Oy|#_?ype@5*Zf|%r3rCKYdFT96lb%>x3&fSToKzhw;BYwu%&Gee^ zc-=kma!JSAYx_jw$*jNLf$-bSl64iAP(|AvIQ8$VR$B>I#3LAKLmZZTH2y3?Nt)MO z)BaW)z2^govkGJzuQ%Dw+AKJYJm5q#@HJAJ--{^MEKLLF(m(kV1tV78(V1pk0V`)5 zX8UY*h-WpZBklPy;AgUZS~af7-W`8NFh_zJIf2tGZXgY3mL3^S)sNDFD=yOOHOf^( z;j_=6prqH<<1}Ik@_bt1v2Jt2H3i?C{}}sTr#QNl_{>tYtCDQ&N+`#R@(2!Q(GJLb zmi*RC7^Q=vW1HWP4mb=QoEY_CI{ty=p|3hBZNWHjm~A`klPS|>#-j0xe;s&UXHaGWSsXvx=F`K`u71}1%az0* zug7N{M-ht4OQz2lfty<1^TEfg4=!qJ2Pmfrj_)Z{`6>V}BG5hFL^6bGDT7*UO?8EC zoP;FlbIq`JdBm6PbLOE1hdm@^D)UHr^3!w`q{0`qrE}mT5M1Id!rlILvF4q29d(`N zVNsi5CeJ-7cNcdHvX-1;@O9X6I0DD{Ou?^qA*Fm~Zj3E(t(VB3o8^l1B;f#BQ+e#m z7^3&(N5?Ed%~WLj(Dvg~?Lm1&%F9uKP5`LEAIg2&U^j57!nTAH+5PHz;K(DZY?TP+}K@hFH;Xk<*5>;t2o=z(y(|f)?*AAyi)=uZO zJX#m+?G=1`7;TIkY^guKF>0CoRs?UwBo;eTB;diukE2wH_U8_K$A+Bz5h*>u$d!?6 z7Gy@tf0rV&S$8Swby^fm?EYe&w$rvFXxOT%!NdH8|Hr3gdge~BQLGKixx^5odmESF zEcR;nyYbo0Htb#Qv;Z<+tt$?3YMX-hK-~KfihZO4brltOniS!Nw#Jqu4-6XPM)$a-(DjIp!}7Om0$o89RZKFmhF!+J$)D~kiI-s z?!-I;I&&fjT)BSmEl*#$H?U2@OmQojU~!a zW8QpqTcIjEvp$c|uxcEjn22;v9`~=&wkQ~yUWiw4wx*708WZgyKuK6-+D_n@_OIIj zxNtpg-6>ez4xK8nFF1n4Mgo6kiIRTd&RewtTR(>CSX#C|mFQvMFa72qrFq3;s=5{A zNNAKpcexWPL|Kd%-r}3nx%c~&CHAlFNIS`%nnuMc2~yI>2bb+*{ORgJ`1Vp(uB+Yi@M?xz znUXBZoLhfhHl)N0)>&i5L9Hw3NrX2b$mp<&lBwx#(rMbYZ}@)2G73=;N5eL*K5os| z@9_ug&0g@^V$N5R0!6M5BTv|Rdc`)VJc7`GeYQFUX?-7`-bRFAM;gaEF)Jd0hUS>h zt~0WkYBJB=MR#VKl8Ik>XmDjlc9oxtcC2_n^^;ODGvpg{mJcaYckwO0AIq3E+1H(Z@O19(z$OH44!O(QrU%X?n;8fp1x?ZdMB^FObdStp{jnwmMupqUh89?)vDoRtFUterz#X?5(+AueXPI=!T z=QTF-$E`rMP#9(XfHhYD|1H%pyKb%i|dy#@3@rM?jo(tfvD4yJO&C1bX7Zww^ijB$h3iWZZje9^IUiHuxVhPV#`d9yLX|{R^pev{x$|$ynGW%U;97<|2WPQ z$WRJ^u6Z#slq-VmJD||#yYzn_Ek&VP3R6S4Fm)^B^@gi;fCmgs=v#KP_dq786iZ@6 zD3Jzz6`}CRfnpzxD*wvZqcNB#}4s7n6Czxh4> z6nat+-Z;`C)aHE zEge=HDqa_j(iuNgzx%n(0fum43s5oj4Nuh9))kLBtzBh^326~)1$-b#LEJOl!~Y<) zlQSqPYiq@aYZ>1i&7}Bvtx~%!>h^Mz?O>vX8V%qXxmoy+z^7a(rIVnI__N|G)QT`` zxE1>uEUT1EGe)=gwH+lN5V^AU__zPBO-`k``;`(YIJSq-{vpKU^cJ}540EO1OQ2UH z{0^FfKhbR*?qU!VjoeoWNiPdo4*a z9^IFH6*+#w1-02}&IvYDLFqruAvG*4=(1H#P6^*;15T(2gTCik<}fW;g5Xjp=<@LE zd?UuP?ME$6@~QM{vNF|L=RgcJ-%`=LJ9LxEBqCZ$CEeE-j!QtF12KU6r730?&VUVC zqlcN|Xp!sPPde}h3QlB8W>MB8fhNS#M(<|}Fq6HnSWwK+@Ej|+m6t!{J^!lDe!t`A zNMaG$qF#IBqOm0VdW^hfa%s`8NDcc^0-P7X*BT`B;x>DFAx~!O;kd-t04(pn-|-`! zde>fq8|O+%_qdQOh5*>LVgLo<_zT@uj}k}T-Wuc%46d3PET)c5T2^-rh%^F5K8=HZ z2Hv_f3xZ0mAQ%(2kDg2NbviS=REN(#Lnvp|Q#9O|E-Ivpo8u{Q>Yg10tuk=9pj9244|y(fD8C6= zDW3`Q(R5Kw4+6s~Q*Zl}WS%tj-KxL=N6_vKQS;^?(7~;VEPoTW?U8 zNCjnf++0U#kMu>l)SWt>^%kX^N1>ruBg#Z4xf#}q_?Ko{`|;*bFO27=8y*8mG0oit zH{a%tIf+P-iO|F^`RLotWlV{K7h29N;D-FNIq0u*DV>w}^S_ZGSKXxW&1o=q)!0V# zMNdw64Eomh5Q;1{4}i&=Wj^mKlg>b^k0{*SA_B4$SIcx?C%O$VZ_iJS7D~o`JrYNr z)19gq?(NA%{NGWw`*prp&7VoR#}}d1S0nSh)KQ2c^q>#@mk0ID)NDMzJ9Qt#U9Soc z4!%$XU@P377E$Fzo0G*R_Ei0T(l5|RK@iyr152d^Vn}g$YAc&al)%kCXdh%`v?IUW|9~5f~)q~xH zh^WmjU-q#P%=o1ZW3vz)lWqipv=aq>u1c<$P{cVNYn85wS(&W43v7bXzU2P2c6n}8hAT9XWx1YjZROBdi_uO|FTf;ep~Do zwOgv9%}yp}7ouC|khX%Y4Xb%Q*`x`!VyQ6wE(i!usoLG(B2s{}dZH-! zU^{kf-#AtbGp5#04()q0m2ws(N;shKBm2DL^}28N(v{YrMBl_Jyo(mH3D4624hQEr z3ZdB8n7F^)rTo+Nd~Rxc2(!Pshxa!2!nq;k>Oy}~C1M>HHK5luug0(ln|Rsd4FNtF zWR)`~VAO_FCt6QFz3;29V2Dv;Vg$HpD2pai9ufT1;L1A?bR5p6p1*E)QxBr=A~Leb74T z0Jgmt{%z)zG3q0s+=ZBBh}m;V9~)Y5KA4IwjDwr3d}YwlOZphS@Wppw1XJdBCvz~a z^lrSyho;o*XH6|&&rX9v>wP<*=>bF-yXV`iLL2A|ufE$%t%?TG_89xHkbQzeKB$eIwcYhv(pTg+4M zk_{Kk0fn@(T>@6`uCX_U@^yVzH5`U~^5;)8a&W`zk+L0`{&zfhjrVvKg?I4EovVham$vJw(INH~(1t z;RG3cQJ-MpYKJxNGg9DV>uhIyrZFQfu=Nh>W+DO29I>>L96c^(r@jL=(XKMr6igi# zQY=gnJ$`Zi6};Diez#`@(NMYv;4m32m7gaJ(?mmg(b+~U>^tz!q9h<1gqlnlalM}| zwe@nrrW`G1R_05kZK;png}mCLEyt1^20%bJOO_YFcq-9ol-^L~(}=6E5(Tfqb7#DJB-_TNPO$Aotl``a}!gQnrXz>MVU0`WSRcVV#;CKgax3r5- z0syN6WX=5_x!mNGMKx~p`a#H%T*)f9W66UE z`i5BquU4+)GvIHFsq$zP3nJMbciUUkh_LIHV6=tAlX0PTH(XvZGLDG+L@;uf*!7b# zkR;L>hWMuVcM|25QwdidB!I57g!vUh#(?6_&Ek{^y>Z@xh~rGf1YM4IeJRjup2&Zw z%KZqGp-zni9Ed!YHkLU)zdh<{YXtclnhptQ3J#O<)Yq^~9h8VWLH8nnz)%v65w=mC z3LiD=+)JYZjjb?`Y(ikd_ER;n(#%*hFt2&ZF~JucZ5L+sIo3%jxRyGZ5!_#HT6zM> z{q3eAXhFqA53)_q;lMR`o)f=!=$DrR(vEhR=%r&rpS=p0!@Z-6z`v_JfAVm)Q0a;Y z4{*Q->AH`A3v9O-KCOSguwprnS~)DFaB!r}n(K(=%ZniiEb;E02`I-Krbm;jIhd=F z+*$E+!+R+(k43Cg2d`jgR?XL9TUL}RZ-soMnifcR-MCPfsmxjb@)n|) zt&6^+9(W!2oe_+c$WsfWBCfj$>+BcPI8RYtK*H%9DMn0q*~H-j92&it^>+J{8;oJ> z`)`7e@hlPRya)%6q5_hzHZCb)z4@I>K|`LL>+`=8!o=4~nOSx3kBF8RRqkfWN9R6qDcw z91u>(p?@>Ped?TVv3TyXJYldrkkGMw7QEV7`F(`fdFM}&6U7(@gD+~y2B!3YU|_1v zJ7_2ld@U107r=*MDX znwr#6KB`$BKzK$< zUV5j;A~Qca>GPUd*xim=F%FlHcNpg#oS3y^dPWbn^M3zFBkE%}M6QA25&1D^5 z3F;`9NP|?_R1Yp>H?eJW5Bkh=H z?o#RAKOn5Qau=TpS-%44q}6r(X9>+7&*7U$)M%U=ZVu3BZ}(j;HhZhk6Oo1{sS#ai zZX2Uh&zzR=AkEC!Hul&<*Oeo&ATw=uE`A%A4cwEKjpZ_RUrJm?KuKn;gG+=y$uo`- zbcC4sfRZpSmeaFYt_JG24k);R3*ZGfw#b@5t(luii41-Xq>~9P51$@I`S>W3HH2=&)ZNva zEYbLmMgw8;in6Bq%d-5S#HzJ;`=TXJPyc&5heMgPq1*Vgi~4^K9vt^9BXM!{tiiAB z?#ybxp+Mz-6mc5YDHLxUO|Vl9+FeS7g$*7ncoh}J`nP;wW>C>sNXkPzNgGcQq?u+g zY6r^mVSt&>K+X(836R{Y5QY`G(oi@5weEHt3nwp?)HX;TAP!?DFb_BT2wCW3^0>)J z$zzl`hTmBdt;_zNZOh>4egSx!Ap%|il-GlnPx$bo)@pKAzuW*ZgtXyHGJCah?FMg` zOfZWCxEQM`!L)N6Uk=F`a~gxIi{!J% z`+{v>w$fF%kzbB^G!Ov|1%!q0Gu%A1wT)>M_?`O5F4w<6bS6cT827qdcL8A^A!wHyl5v-eq0B*ed? z((g2!RcyJ(wh;fN%Fdep^R?7QyoaY#_@RFlMRkpC!OD4nnK3ca2U_%X%}N^)uL1lr zt~zeQj$VMl_2bb(i7Tks-gf{7zWWyk3ybTiAxSHPj6fx*aGrQ;i|Wm>7RE~zW_#y| zBM;XLZzyn>QrKG<~cY zPWuHeyQvHLc4jQqkT)UY zM!KsGgeny0s)V^bO@zsJ#-^F@YR;nppDR|OrCYIhzH!2GfRK9W6gz8Ixy53(kr#iF z9lQ{#nSs)ef9F0 zjgily24)$%?L9PE;@Y^&Y;mX7vH_y20*Ol4;qzH0duQ>NzV)b33j^eRKtvQpieutH z6-7VJoAlBEq<9I`+dKLOoB&vQ5vA9ohc!X;Tp0bZnT~2;kwf4Q1bm4nWRl$q}P7``mskQai2550O@X zNi8X0HV>;fgr%x^AtFAfr08YrjzW}_scY&R*zRD(Je_553z4J*DC2%}~m0=BYYPA)TvmLWR zbe7hlLzG>VK-<9GP`L#&&6G|EZst6f2(vcA)=x!O=AzhpYvunPsdJB`auCY$U_%YT zPD{B1ry?dcOOB?dBrApz4OG2v&pUkOs85;y#L=f0n*@@Pv~w-C3mM zEj*oW*=VQupy=65O|?aA_IVKXmd#8bz>l&%Lr4&^`1S&r?+C2G1|<``MHEU@GQq*E z9n|)k;`%G+B*f*K3vQSwa3XZhXRUOghrI`SFI7pWHR%Tbh^;obM7@r?RO?P)6(&(-%>xbH@uQe>6VS*W@pB0 zvN`ykQl}Vis@-d9r%H7b&vk-$OyhohUgA+9uZZa{;p8KcDxg1y>d!RB|`SL{oIcBdN-mI z?e}BN>RSP9yf6@ljwn1e;3h2v`=4KI?mZpQgH!7OC zfO7H_86CLl(%hIw>hsdJM#S|v*-r3v7+F@%GyB>YreEeejQ{sj z34^xp5@T6qRB$oO4cF$MgZIX{tOAOq48s0QOhRhcuo##YA<@~(0@O#H+&3V|Yi5;_ zecW972?_hNei9Pe1YI6(SZj}y(99}tML?^^B=8O;EURGTT|BFD#8EQ$@|W4| zUuND<&2&98EzIhc*`@QOj#Xzp@*pazgCTSR7+^{i*9gfGkdR!nfO0Sk9IZw^aT^)F z;3`8Ig{ZE&%7FIC(DGIM6TPX+Hv%1OYT(J4KB~cg?EEwzL{Wt-Mfj~ukI*eD=03VmI)r0!G-3RF%7^7n} zBuk}U+ea-^zA@NE@fIpvxsKX$@byR>wd;quY61M(6kPBJlG*18k15h1qbUWA`qz^y zv}2~ALYt)Y=eQP`YOP5f(8rgB~f6p#NTP9?GOb7?HKiY3h!My4bzJUPQ4X3*zb8E0H8(`L;u zN~u4ID$@xhm=3Gr^?7^sNjHTAueg^QuDkl7@2=4+ZRf6b}fHxZL<;#X}Q(5t#i_$fom4LEtM`SiZyGwIfKm}i!H z|Ivvd1Kg+X1!pj4s5mzBZHB`V$gyQX7OY}mVoqKxv5!NF>Z@8ZQZR5fBEi>C{Ufli z402fr)b}Fyw^yw+|ES*cqGn48t(q=qjBrdNOknMwmcAFzIk-?Xay&$ru@AO=Z80&4sSe?}9)TE%QmJ6b1h z8tf|d)m2>Z+DZsV77=no6-IqRFF%Z;p#iufRp!y)Zn2|qI*H6eu~ay(7$lVkbbept zxye*7&Y)cmjgQfVXQ$3x_pC+;s32b6tp5?7z^?Lg?4P$(5kluMXg7o zT7M#|Q2QVrJWnOklqN!MkJIWvXIB5)oWY2uJMV#ps`o(w2DPh&<)$|%<^cu3d4|mi zpz@TBGQsp~fAHuY;%j^9&9|L^`Af{X3h8!s8VfN|qavObZVOtROTMZN&!NDkakdMP z=$PF)OAvg8SU@P1h^d!sGLnA=xS1$J+63K^w$?R8OgjIvY{R%GC7Ofg_R-)Q>q*i< zO`ahG?Y0faGoem-iZ6$|kp!zq!$h=Zr#g>H-8o5bB8w{16KPRID8Z8v7l4L_U|O-0 z0`~~>bkrQ}G=C)B8E7tWI?49$-S%-}`8a%xKE>;!k89aYUTYZ;rxW_G6^_|q@mVBO z<&5cb`fb2gmm6mHPHhc>9z;LbFj}OW%utjkL)3VcjaB|l zZT^}nLIt{GR{vGX`3qTy*akay?2gC}K>hfmtm@6sQ)R&jc_4+SL0dMDx>HYl4N*e*^I4YLIX3o`o2Y#{gUm)=u(TsuXW78Gw&7wg4& z9PSD+53T~4`<9bjptd3$?HnNgJ%(zU6J|A7KzR~u9{P_cs{p${)RSlriPbuSHBaBF z5Ceb1Re8H99M!pR0ju5hJyx1^;)=b^9cJIBV5p_Ne~&uwPe|V;a;|gg$tj|Duu@d} zsT=1Fsai$E1TlJ3Hx=-{r^vxSXrQaly^pab=6Imr~_pKEmHZ}7yNx{>suS}nLtf`Dz9X(|F#sIc~ayu_?Xm@(z zLwmOjsl121Y-)NL=D;;T%R8kC@}RC%izC*_#E)$!p?(3mjOc;|;+ BSJwal literal 0 HcmV?d00001 diff --git a/MikroMaster/20260522/20260522064002-Config.rsc b/MikroMaster/20260522/20260522064002-Config.rsc new file mode 100644 index 0000000..aeb1280 --- /dev/null +++ b/MikroMaster/20260522/20260522064002-Config.rsc @@ -0,0 +1,3445 @@ +# 2026-05-22 06:40:03 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/interface bridge +add mtu=1598 name=Bridge-LAN port-cost-mode=short protocol-mode=stp +/interface ethernet +set [ find default-name=ether1 ] comment="WAN - Unet" name="ether1 - Unet" +set [ find default-name=ether2 ] comment=LAN-2 +set [ find default-name=ether3 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-3 +set [ find default-name=ether4 ] comment=LAN-4 +set [ find default-name=ether5 ] advertise="10M-baseT-half,10M-baseT-full,100M\ + -baseT-half,100M-baseT-full,1G-baseT-full,1G-baseX" comment=LAN-5 \ + loop-protect=on poe-out=off rx-flow-control=auto tx-flow-control=auto +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireless +# managed by CAPsMAN +# channel: 2442/20-Ce/gn(18dBm), SSID: vados, local forwarding +set [ find default-name=wlan1 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados wireless-protocol=802.11 +# managed by CAPsMAN +# channel: 5200/20-eCee/ac/P(21dBm), SSID: vados5g, local forwarding +set [ find default-name=wlan2 ] country=belarus disabled=no mode=ap-bridge \ + ssid=vados5g wireless-protocol=802.11 +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/interface list +add name=WAN +add name=LAN +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ipv6 dhcp-server +add address-pool=vadosV6 disabled=yes interface=Bridge-LAN name=masterIPV6 \ + prefix-pool=vados use-reconfigure=yes +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":\ + global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n\r\ + \n#:local Script AM-setup\ + \n;\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n\r\ + \n#\ + \n\r\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n\r\ + \n#\r\ + \n\ + \n#root.mnuc.backuper\ + \n\ + \n\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@10\ + .30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\r\ + \n\ + \n#:local Script AM-GlobalConfig;\ + \n\r\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\r\ + \n\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n\r\ + \n\r\ + \n#\ + \n:global MkDir;\ + \n\r\ + \n\ + \n#:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n\r\ + \n#\$MkDir \$localDir;\r\ + \n\ + \n#\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/659/af48ca83\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 18.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global 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" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy,logging" crl-store=system +/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 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/interface bridge settings +set use-ip-firewall=yes +/ip firewall connection tracking +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface=Bridge-LAN list=LAN +add comment=Unet interface="ether1 - Unet" list=WAN +add interface=ether2 list=LAN +add interface=ether3 list=LAN +add interface=ether4 list=LAN +add interface=ether5 list=LAN +add interface=wlan1 list=LAN +add interface=wlan2 list=LAN +/interface wireguard peers +add allowed-address=0.0.0.0/0 client-allowed-address=::/0 endpoint-address=\ + 89.110.101.17 endpoint-port=29185 interface=WG name=MikroVados \ + persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=Bridge-LAN enabled=yes interfaces=\ + wlan1,wlan2 lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +/ip dhcp-client +add interface="ether1 - Unet" name=client1 +/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 verify-doh-cert=yes +/ip dns static +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 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" name=\ + security.cloudflare-dns.com type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" name=dns.quad9.net type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" name=dns.quad9.net \ + type=A +add address=195.133.25.16 comment="DNS Comss" name=dns.comss.one type=A +add address=91.192.189.2 comment=Unet-DNS name=ns1.unet.ws type=A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +/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=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=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=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=172.66.164.200 comment=dou.ua list=RKN-dnsLookup +add address=104.20.28.254 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=172.67.172.95 comment=crimerussia.com list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=149.154.167.99 comment=telegram.org list=RKN-dnsLookup +add address=149.154.166.110 comment=api.telegram.org list=RKN-dnsLookup +add address=31.13.70.36 comment=facebook.com list=RKN-dnsLookup +add address=31.13.70.174 comment=instagram.com list=RKN-dnsLookup +add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.105 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.103 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.147 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.163.190 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.91 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.136 comment=youtu.be list=RKN-dnsLookup +add address=64.233.163.93 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.120 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +add address=34.41.139.193 comment=nhacmp3youtube.com list=RKN-dnsLookup +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=output comment="Accept Rule for Trusted-NTP Servers" \ + dst-address-list=Trusted-NTP dst-port=123 out-interface-list=WAN \ + protocol=udp +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 protocol=udp \ + src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=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=input disabled=yes dst-port=443 in-interface=\ + "ether1 - Unet" protocol=tcp +add action=accept chain=output disabled=yes protocol=tcp src-port=443 +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + 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 +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=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for VDSina" dst-address=!10.30.30.0/24 \ + dst-address-list=VDSina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark Routing main for NoVdsina" dst-address=!10.30.30.0/24 \ + dst-address-list=NoVdsina new-connection-mark=no-mark passthrough=no \ + src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Mark Routing main for NoWG" \ + disabled=yes new-routing-mark=main passthrough=no src-address=\ + 10.30.30.0/24 src-address-list=NoWG +add action=mark-routing chain=prerouting comment=\ + "!!!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-list=RKN-dnsLookup new-routing-mark=To-VPN src-address=\ + 10.30.30.0/24 +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" 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=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" \ + in-interface-list=LAN out-interface="ether1 - Unet" +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + fragment=no in-interface="ether1 - Unet" protocol=tcp to-addresses=\ + 10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment="amster.vados.ru 3x-ui" 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="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=reg.vados.ru 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=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=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + out-interface=WG +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +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 +/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 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +add disabled=no distance=2 dst-address=0.0.0.0/0 gateway=146.120.64.209 \ + routing-table=main 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 interface="ether1 - Unet" type=external +add disabled=yes forced-ip=89.110.101.17 interface=WG type=external +/ipv6 dhcp-client +add add-default-route=yes allow-reconfigure=yes custom-duid=\ + 00030001050000000000 custom-iana-id=0 custom-iapd-id=0 \ + default-route-tables=main:1 disabled=yes interface=WG pool-name=vados \ + pool-prefix-length=128 request=address,prefix use-interface-duid=yes \ + use-peer-dns=no +/ipv6 dhcp-server binding +add disabled=yes duid=0x000010001000000000 iaid=1 prefix-pool=vados server=\ + masterIPV6 +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system scheduler +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260522/20260522064002-Diff-Config.rsc b/MikroMaster/history/20260522/20260522064002-Diff-Config.rsc new file mode 100644 index 0000000..315a320 --- /dev/null +++ b/MikroMaster/history/20260522/20260522064002-Diff-Config.rsc @@ -0,0 +1,6 @@ +3225,3226c3225,3226 +< disabled=yes dst-address-list=!Local-Net new-routing-mark=To-VPN \ +< src-address=10.30.30.0/24 +--- +> dst-address-list=!Local-Net new-routing-mark=To-VPN src-address=\ +> 10.30.30.0/24 -- 2.52.0