From f0d3066b28b0d43f6e8f80387617c5514527bd87 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Fri, 15 May 2026 14:00:44 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 15 14:00:44. --- .../20260515/20260515140002-Binary.backup | Bin 0 -> 242410 bytes .../20260515/20260515140002-Config.rsc | 3412 +++++++++++++++++ .../20260515/20260515140002-Diff-Config.rsc | 76 + 3 files changed, 3488 insertions(+) create mode 100644 MikroMaster/20260515/20260515140002-Binary.backup create mode 100644 MikroMaster/20260515/20260515140002-Config.rsc create mode 100644 MikroMaster/history/20260515/20260515140002-Diff-Config.rsc diff --git a/MikroMaster/20260515/20260515140002-Binary.backup b/MikroMaster/20260515/20260515140002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..3d9428a7d9647ac14539b6eba36ddec16866d791 GIT binary patch literal 242410 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≷uJ~7 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

#$ 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 UKL)gd;av3>w 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 z z%pZ_MqsB!qzJ0;~32N~9J69@wB=8>P#YZVYzW@BIJ#@T^8HCY^He|uks{(k}dsWao z1Xc0=(nH5w8I~L9OZPnmtx(4@{Oj@Dx8_3HoC^#4NMzUlt3B`&#{9EREBR7 zYV%Bk%b1qGBcco}i;B=x2Csmx(WUALJMo4olXFx=Hg*p)ezaht9EWZ~6ZgGd$})SYU9Y?Hi#v6F74YGMjU2dhRdzLYP}} zV3IR0apcsvxd|MXnq*((KqN^-Bzq!Va$xrubF zUef1zlGIUgEc>l+NZ~=W4>1oJB~&)q35-UdsfGgsB9nO&L)R-T?bb+7=`3NIM=jBi z?`YRB9!Hv-zLebcGaa;|=+sPMrnLm(#IpMR)b}(r=n%;w;2EaIF<@PmrF@tH4bzxj zAFZ!8b${szV3{rE;&RpkdG2BTZ%|vrOMOvOO*!-t*_&Y?$~>q|gbExOsVsU*$RtxM zyy9q8jXszG7N^c8*u=CkY*vIiVPua1qkFE1K}02aV~6byu;Qj-bHhC0(hf3aMuD*U zftSL|VP1+i76e%7EYUVN6U-cUM58k(k;@-&4U-XrdnV~kh74fO#rSC(wHQfDy3-H= zLj~_a3<>txKH(whF&`X-Z_WCW>Wf1IQH1f1msfEK^x~?J6Q_aM~2@E zK9O@n6$@)x=QCHX;NlKc02ghO5~>l|>!>RemVSrd0#>uJbE+&|-gCfQ2u8cDaK4EF zZjC87duwVJoY!!x$3e4TS>YVF*`Su-)gyHcQRJ^9p0~+onS3C@Z?VCNxDk9@=H>d( zUb@4D2s9BI3fyc`4aMbClJ*_wir)uhB1YJo7=_1CN`;wVKN>RSao9AsCq#xT5r;4! zu`_hyxITJ&*Gmy{EJhJ9GTQ*mMz6jE&=q+AB42h|x|9v#2^RMbV<;j(6OMN#6!i{$ zN)HhFddTbwI^&@Z3UdM^hr)6x%rinM8iuLh4#nj@&o9p{10yC&O4`?{%jFS&6CPF| zkUJ(mcD+VDGK(FBB-XH;daZXn>&fWK|KT}E5N)b<0T+w*E>}+PMi1;InpH9$zdJgBhV{k*mN)CD=CmXfdu%> z&#R9SxC2x}PAj!*s|iF-i=eE&XR*ut=nZSmE4e7Bdcll^vo15&*}UCG?Jnu98iOFg?%f#F zWUb?P_BlHUIz;=HScvlivXyK!F+i^zDu=M2un{STkE&!-*Ar`K%DL^Al%{h`LjSf>!Kr1&dX z2oA7Ere-q`mF3vSo<(oKo!1r1;Uds3em4ks@o&!0D75&9yXPFlx@4Rd2EPPYfR8gEHn!cJ`6?mI5b!*V~Pby?5=;KD=afM z#6CvUGv?WxLcYo)x0IGVbm&7da^n5+8{=+@^To_XZ*M9%*Z<&%e16>MkTCMOOvdwJ zLo8s{soq@zu&fvnA0pn6BFfB8kLY-t+(WeGM9NY*WlF{E&AkUl=mQqLV>J{owfmQ85F)&+k_ycS~>c!$14;|5_f77h0q_F28L zyh>Z8Y1ofJ(*{U}>+6`l&T%gX0RvB8ZV~QLA~^hA;UY0vDtQ|8+a@I-T3QLLnt*`3 z)z_h~E+`;Hd^Fyw2eSKK6qvP_`x!BOKv8zxj2+3+Abv#^Ix1?+Gb5LbFAx-%m71zn zMcX<@5MVIAWp#Mhp9*{$=4W8UxT5?8{tpK!;U15?EPGMb#_+RWSn`S(JvlX|crbx6 zqQlNR0#`Q(Pu}MPV~%_dwBU3-O!yJt4%1rVUYa9Lim1YClbPw6Cw?bK%^8Mf11NIK zBdIF$*JG3D4liTr*ildtKhx=L!c=)@Xsqj6*)JKpIvTpTh4J*AR11RPG*r;?4nF5@ z-XJ=O6z4K%p;OeYgd*A##-*TV{!lCKnxN6RCB>o49Qq*2JL7>1pP`|R^jWP`tm0b*r3)X_eo-_ zO&JeU2O$j)8lSG6Ll{q6*Vxc0(16{bWB3y8u!mZR+R+frSfdAf%?&D+;{m!2i5&wv z;KUan$DW&#!8zypsz+#=bvmQp4h&uRv5Zq{#*~st%>!~gkVbsKoAvT1PYexaW2tkd zIaoh>4TVpuif(ONxdR_AB3+I$z@P);&`*cDN(N#0OL*`rcX-)i@gf^gzv_y6+_mLR zb=(yL#8BAM@>T@+o~y)xuY)X^vZ-GK4u(Cs+vQX4BvOB5paMDPyKX}{Vn56giWV%lC2#flDzt(myItdv zIe~VfkA)}?OFm&2mL!2G#_7NPZ9%fdEm@>;$vhbewft_zDZsr-D<<2E6Faa{)8N(} zvdyz{us56z&EHYs64ui%9dgXf@2()$ZK3xq+s7Nkf8PJu3~|%%&99z`q$~f0yFkY)tw~KMCm%WQNz%{r5gBtW$q)MWlf>ft-9K(iUqxRm|w40 zKnDpLG509yLM(5`Ei6jeS}0Y^jesjnVJa5Nx@Fb*Mn~qOBm%S{R}T}`*I{<)iwyyy z0pF8cvbX?B#d>0b%S+&rM9a}&GMu&-5EdCMn+Oj%P^uYt92=?cCzY-az;=NfA4E1g zUy$X>@tEE(HJvVh>JM|%TojLmKn1B8E0drdtFLQ;xEyUx);ijdEa1b@6VaNd9 zu!O1hj-C&%;oaemLri8X{`!@0d_%UYPXEyfQ$b$`bGlg5>tvzK-Gq15m}R+&IcLw7NnFRAqyv4c(eQgTtg{F6dAzy~4;iX}yvN2R zy~AGW#M^C3EgN$(@?4gs$-BY#bVf*2=muQYSaBC09TisKDJOqr2PJfg3 z|M&qB?bAI>k(FFqfg8CEZ>n;6>Xl!zMtf!dgphw8Mif@udVs6Y-L!EFdiezbzSjrl z->7+o5lpxOIbeu>ZhH@|p9orly~^tL<4nq4@(gp0yMqiQYrIDNKh%N0T}OE&FKA6b zt6%``P{fdkQ}={P@^fS04jg|PeZBs9m%&q|md#>J`hFjFo!|P5U6Q${!l(^xBz{gU zFGE%B6YFaMtM@fs7X!;Pd~dm&L@XJWD<^4bDZ&b_7ilISXk5juf(gd9E1D_^H9g08 zlnon3M_&!!0ic!AJ!8_w6Zl5aZ0e^>Yq0Xm#pU#M%|4EB*Y8Da`W;_OgCii$^k?m* zGUB(=Y}x1tA+$mpa<13;z%jAkBtowlcoan!f^bR_o4BKu4Bix6zq<)tW)D4iM{R3C zjq~>(gx}iz#7Jq6nzi{2)IRhW^dxC)u+2UJHeZe-TXY*20)?s{Zv~LsxnG(G<`&SW=*$c zUdYl9Gvy&KZ}VO*smH!scP#(aj9}MU&vw4+uNepq$7XQ69MIf2rHo!kb(JChPcLwp zj8YR5LmjdXkwGHPedIR_xpUhy{mchn#tpxYV+fAeTT+6 z0c~>AluUo8E@-^aQ=`ob#$MT~#D3+UNPQy`abi}Kt3(|j)nm!(f-c>?mINz@B9qhE zoDVu=cADrp9&o=LunR}a6`Rh&NVY3prDiw_pTp~j>tli6hDooQP#RksUg9U8MqbA2 zKo13WnbipWfHs6?*bJ;xzF#uuL-;Xxx6=zt!V;>rZb2wRLOTY^Z?>N9yNAz}e>;~% z_&D*?qQi{q;LG(?JE9IB!sq&NkJ^CO;OE?S;%FEP_O%RpDuG6+ngF^AW7-B+;eY)X zb76p4`~0g`anDkRtf&oUqyS%`ERvJ?gXwk>f*z>(pyeFm)`Ia|{ZPx+f2Lb>PD1OS z7f#D>+Es%oX{nd6=h-7Lk(bQXMhK~q0sTy=bhz)RZFC&vZ=iY7$%e!Vvyb$z8Qdvxo1kwDN8Jwx<-(QLZd zV*)=98^?{Y!hO$k1ajrDR*qF}Q9yN?>GBL05x>j-kfcGL$kf#yM|8M&EP$OQAIYM1 z0QA-a0XL?>5G9>iYw9QQ?XnYBj)_pJwmt3n>vr?M#rwX$i$WW8Jr#&I{C(&@Cdn^s z7)}{47t0yRoTgN-xlkTFGh%NSjB0-*s>zkEfL_^?{v%qyTx6#`4QxPen_!e>sz zm{DI8YQ6V=!LYd4$k=M7q9x1lB(6c;EU`aN%OlAlSb>8f)u z9yJ#{(26u;gX(esxfI>!KFk(}_fhH(F!kvWIEM+nESk%p7fh{3>23-&C?+~;EQh3I zna@qr9wQ-=DiukBK@#eOp}Yq?gcHZ8BsIA$cN1VTw)sx1XiIG5-bU3x3h#q8lXG*c z*eezw+SeW8rzyjRUOc|qWy}VDcphu*;z{L%O3_UyvHVeoS z$Xj{RIcy)^HiM-?zk$4b>TLVbD**!(+wuq=7yl9riNb9z1eEiheO-9{=<)bfYFo^% zMXvC?(oj{zUcEMW6>$tbG+RTa0WF<*a!}GR>eN6k)P+eo)g{Ei%X}wp2l2DU zC{b}YNA-cwA}J=9)wa%cy%>wJA6MO@0 zM?W7gNw+t=uz^g4*W8q+F(dH-ga)Hw6i)AcmRbul5RHz*Bb>8$GKlhf4tBii{IlOD zyZDZif!T9^fv?Bm#VbOo9>jim4s4YonNdxNXaaxjxmu#-Lc~Uj;+J#eJ%2SAY(t(u z^Ux0cs9<#}L5|h#h58tM`UxvS%|@zn;R!TLZ&J1B>V4Js$?o!93B(+xI7EiT%@!0u z&Vtr9Q)rRQE$rQ&7Q|Mbca)JKoR6CUbv@t0p_!v$eZb1XF7W9OFq!?2AM6PwOoPNk zg3)6W7pe}*P_)+=z#K>0c1u-tQWG&smrnwj1?xx9JuxU|o+^QKuQ{{B>;=_i0M)*r z1n5*WeGp>zf^Zt9Wl6$;VQ1tz1T``iT{-n%8daU!w(!acl}^CyspZcZ#LuEc#{^G(8#yN7MsKe!ODbKa6_&WgW7Q);Y*x<=T->I)k57ei6$(B~B?nW{4D zX!UK;lh^2b5?uU`pBhg5;=}R{A0y9UCqPZj72u}Ij#F=2ls3kS0!Wz$QFqxd zgh>ejB*cjh%o!mlOr?aSB3%5&*YO{k%qKOF#} zR@f92Sc5Q3EbnB@!E7|zm zocvng=2}Ji7J%ihdcuA8FN&v_R#wKsE+@*Q^?{xCE+A>qG;G6bWH*i0#9xPUYovv) zeM0||$JiZt%FpvE93hx?8 zoJ`1|(Kk@t2w{C(GGfL9I3j}w_9~l?T~1iLO0wLih6OOmMV{o6=@V+#45MI1pfT3i zp6JU93cP53kr@C7TX;`Lt&Ptv`|gm)&ydkwHvI6r8E| zp0N?n;v*G!Y!XJCQn*CE3qYrnNU5#R%RLZk3m$fH>q`bp{QbsS8>ev~^TK!rL6|^_ zHUz4;JM0zZp07!WIu|c*vAM*RdbpQ7lK|zX?oKA*1GI(7(9%WkgFGMDu)a_Ii~v*A z1J(kXjr??r#+q6*yC;dY+)L8;F7291N;%p(ye?V2!M||+w#?(Jc`!Zfn9PvZGK!<- ztrO=8zj7WrK?ox8w>eKLmxAmwtDCldN_fAY%cy@&%V#JZ$DsO7HFEr+G&8F#L-%?V z&AR=k;IbEPb$u#-PT=!L^fo6HI+#DDb@Ref0ZFO8vLamp`LjNzJ13KLK#+(bhg6Y6 z#s`l*F4r&@Qf4I9Yb~cWz=JfhPE#2Nb}Pa3T%i^cCCLy6Wp){gqDNM0Bv3rC2I(>O zq39*b?V6DEQMmzGI<$QYYb5D2XAVY)izF_e;|_M;JC|)+3zLmj0it?LQ_{|2$jz&;F<^eTpDE{|6?|^ z(PeuuU6ZW){Z%uPXb?0Sm@OBIENc!bzn4V(?22Po581b>Wz0k{=!1>%dE&g};cjh? zW8-VXBVg34`i22fyh#zdq!suh?&i!)KXGP#)0e4Gv)`9#qImTDo{R`mC#A=DX@MPj zi=^>dCw~QRTITqm+ZWDDHu4nkFmJ@bf`|Am%@{VK9mcGhH;&2D?eoB?88Y|zTOkqo z$4+OEJ%9Zh`xkhJb}E3`LA5f8dDQjgb(!b0YnW~UCVFWwh@fA?5Z5bn5eSPaoY6`^ z;QHRJ2O=#Ho3M>z8eIio3p_Bc56r_-Un0o5)A7661;-4GOkEo-sg+U@Bi#h-|1Lp0 z?r9jqZiXV0Bax)y!QdSXEGwKq26eU_#l7JPp5zgz7@-Pidt70|A39@UX$FbIU0OE| zXjI*E+e^DXJ<5z{*fl{~e$tJ8_3YTt8)NO9ZdXN!V=7+WPb#E1T{Q4Y%;MTrY&fY@Dnufo_}Azjnf= zz6z~fs=SaK<*kfdX9WXTfKDhj~%Xi+X`0Df`T33f+Ec z_63vOAeT3i&IU*h1)vjolmW!pf$sY|@=h(M{*+}L2X9^Y84-PrGHA$@)6ZoH+OSND zn__qycfa?UTnFShQ}=@B4z~B$gr-2~v<6$jq+FsGe0Tl1#(V{vM;tKODF>M*AkOtk zq(Kjc9#A`4q1s|2MjKyU&wil5pd*HNISLQ1_f@JQ?QFN$8{=*DYRKf(rU-q8b*PVGgD%p2t(FYd5>n7&clK5OfmBK}W8*;v6on^y5dwWi*7N7wSuEHU zZExCE&r+f02nTUscje*rS&L#B!U#`|F+UtfVM=MoRErI|p?SN|OkrhYPr)ZT(^JNX zm9T8Qc2vr)p+DMcmdIPa9E_+F*#$UQ`$+WCa&TOEYdo<~OJriJ=9(TRzqzIp|cC%xA~I-L8&P!EdI zt%LE@o(;sju_62I8k=gxIvh#hK!50f8d7c1fmEJ4(0aUmK+V(-Gl81MT=}xM1ASBx zQ~)Baw9f>7-EVTl!xjDRsc$R=e3CZ!c8|ZYlyontPZF5+6cO+CT z>St?qLBHn;xorRe8YQxw%bUxW$FENWAyxuU<&)T?hif2sO@t8Cfz-Z5?{Z!r1`C+THf^1{ej=_p3-!v!GHo3uGil4$i9bGe+oNVOwv=o^jL`8 zX%fy(rv~N+F%^)S?4BUkkxTMe)2g>u;<-N7O4(I2cN^Nw7ZbXlH)|KAUr~1ifENc| zB!zwiyFEpouKEfah0FTgK{1(EBftc^kvJjogQ97zP!N0;{3PZn4yJle*TcU`% zfP^yxU@(uc+;zXFa)T+3IRgZWkPlmiAgsAAW?Vg|8DZD}KvQUD=)OY!y=jjgg{EZ1 zH1h&PhUR*PY5^FoWeliuh?J~|j>#z)gM)NmlLcm>1yaK?B@Qz>@E0gUxXyo9i*yk; z)|3Q04?}OZxls`@qY#nqB4r`g8~0R<1;EV^J0!2sk>)9(C>&-Bu?HQ!bR|}%nxg|F zaVq53*h(P!$VsI^)n?iwN}%4(lMauQ$Du0l2&B&aun?pqk4 zDf%BFHdWTk7F+sjsPneOU6hD`ItJ+*V|)WTN44pws2 z1wHf_^AKxEyvdnavD7UVt3WRXG*8CM{k*!bt^sp$6$8tOd51#m5@lFVgF{L-cI zKE}NNTdyLxo=6l+TU`NfKwfshe8*vLydZSVbk*MXsuM&d8HfJwdBdFk3yXm&BhaU4 zy=meMLehW-W)Y*Xv3evRK}%@^8$*;p*8T+W4R_x^jjZY}D8bhAL8%&$Ok7$B>8vv{ zB?B%k<5HX+Zs`vyxCW}Wdf2vq6Ji>$dt_Ft*Zs^;J49ylQ?SKwI_iWR?CB$c2=c`{ zPPB?u*`a<3Jc@+Mi&=uovK#2RVaRqm6WCx5$it`T57#1YKcu3<69Mma`Ai=buUeOA zTD+<c5&WJZ9AI;EsfbP`*Kq?jf3#K5XFZ=sZFr=jMrA&*EC=X`oGAMos zIsWL;nZdZ@>AbvAb0oBuT9aqa)i8YW?San>U!d{@{P)?36lF|VBKA{F6~K(Tx`uZz z{kLvNTDS_miN@80F+?cyLhiH!TfZ=O8XjuPZvoe$v!Ek6v01+jDJ_ZDPA3vK78 zc5J?c2y^*qOnRv9oTZ!;u@XVM*m&pRA@=v}Gt==iJTz+uXoi+-)8fw}b00 zh(AM#EnCVZHRAS5-5mhKJ|PRZsJ2@xTp(+$SRwDLfK%EiZ2Bs#aa5lwu$tZvOYp59 zOP~tYfDg4eXT#K8qRhSb&a9PL!Eu4&Salh@W}P+$p<|#N9ndquHr^r5;#YSw#s*Hi zItb^yd$1z>S@%$@1>@8VToU(Y`fQ7S;>sAQ`xwb&q;x| za9r4(5GA&XyS=U<%3t5tRbsGv^|`!?ow9h7;fi z#Q*6%`JYEL4z-(gr$DX~W$jqRTo3Tz-}cta*3lQ9)B#lVTW$rTo^_JF(zXxZc>ziB zvKE(i9@U#XAV?0kUI_txQ2!G%!PqTl-T1+{ zeGczAU?KLx`zGhE(8JR0XP%w_%7yy@)4yVRde<(icf{et>yH768iw+N$tJ3TfV_UT zU+08tDV7?T3tuT1WeqK%u4H?TG7+Mx7JvjXdd&WLUGb#MIE-`3U`J8qT+Dm`<4JT? zti9e;Yb{#)%aYyXbJ4RjE05@L8E6v#|33i0{{Nbx@a|Hjlla}@`6O?fY7vk%Fam%S zJ>r~c9NS+VR^t(idC(6f|MnM*Uc5o^TFAo>Bohyrm27I2#r|^uTGpvvh!jY8@!>Nr zomJTa{-?_@0l0kXexX`faePI70hLe9*Z zKYkuHv*0TaJ${^&o5#s4Z`eIPudF${R+1G$fntig&G+<$Dm`dr*q;eF$ zw6hMrJ}5o(5q7>Zt{-kr?UtlnoroH|ike!5q5ICgOTVxrt(W=jp;)VW$s5a314l_5 zO>eUxExyRZJtZd{$H&tXBv=}!{l0tniI5)++_RH_4BL=3gdfN?_CKRcQ?}cy?7>GB ze=R+^S`vm$&r^+#0~2fsJ(}TtoQIqj)>V|+^dS$Rur zY{$N{8f=O50nTC|-|-rN)toP@=?s8^jdr0brwAOst}lrva;*Pg+QEbFma!bwMu~>GxQS!T4dgO02y`wMzQTx zAK=u}%x8TcOm@-J(iP9M0Y2@2YYUE9c9N9aQNIfD6Ra^9`gd~gg;nctoT7-wQe1h? zDEamj#$C8aZbPl@q5*9) zR;3)@J~}zdejY0|&D7e+x1T_U^zRh!YfQ9Ty7`GUK8$Ug@}{!W+sW`7y{outI-g*~ zHoGq9DJfIo-J#RFAc5z2n2_Py5p-?~@`GAISL zYJi;6llrcic`*CJN4$Y=Mz&B{N;=k&8>AN#0wpyGT>wCP z^xOKYpB(&t>_fXZT5wzrf!c0XL16OH2yRf!`I_(+2=W=aP*3V1rQI%-;_40-vA}II z<<)&_he2t)VU9a?p??|J@LP?S=2l5beKvozc_5?9Qqyd-^K4;o+K1HWaVfk~i)!zM zyrIF*ijCbsM8)g9(3=`7b;>{7-p~V}uS10Y<`%BWAH^2^p;i3nth09YBKQJ`g=3Od zvu^kcjzg!vfTeBhWGJiDlt+@MJky>iXbH1Du6UxVPg}e*3ALd0K_Ix3!4!BvVs2uu zHMmTb)aItQCLm+(IPNQV6C2&+{{D{&-0YDifyDR4(jO+nIK9s8g^++-VeB3FP^0@kNq$Tla#9gJZO*9j?r_nYFAlESlhg2c?L|4fc5Eb6_R- zlxTiScs0cH9ScZBM4-wSB>^Y`TBy?~)vrrLR68rPA-xf8hE(GK>)W0#hZiG{yCm^c zJ5*U;@b{4$Y&RqcOeiF5Ocgpsg(s_JV#T1C=6?aOzteo{XFb994~Kf2XFNj z;30{g*7!p)v){K`{44)=9VARzOMZZeQl$%t%)OF?>P%viLDs&pXA2MHk7r`?2e})NLpZpWLux>CG zM2`JEQVnph@;Y&}MJmzx;dMryyZYs8_Wk%wkz!$-J2w1`nLX`rm%3Kq#QJHq5qk^g z(u_HzZ!iIXJvnkm77Ryz6nD|qo9zR>&ywRXcb$+Z(1>{_UaEiy040QzK$KY2o~sS67S!VO*9efZnwIIsXyM-;i-m^Z!hsG? z96uN9ZL#34?8aGXwky+ZHOF;xrVpIxpZP(YjGGEQ98=>U%!2){Rm5GUFR3p$-&Kx- zNC)3@lDuK+*iA@c>7St%l0gSZ^@uCR*OenUI(gQLsV&;n-bycoI-a<4asNq3{iYWP6`PXXqTDqBq64*=E?t_n0S<*BvF+9HMCa%jLc`-2O=9MS8@}| z1q}MDt;x?jdl47kazIv1($Huwp{oePT|HkZbhRIq5fu0 z?fE!?_Iim8GcyxFUCgof1J1-s)b+j~w1!VPBwdfRRycWSwK+9!yC`;{ouql@pw+;Ie`WRfb~skfXp&Y-n{&!3<3h{r4094K0OOkSs)C8I_4ClOqMD zFa1x4XVBLyE1)=!d*AM+_{=;U@fmBkx1b*4tvv_l`Cr9D zwgiW-#?cr=s?@%nn7k6zB2{tK9FkiTtbPH}y}6XK@Uz1KplA{wy9ib%t`(aYWt?x< zTVeOTw`Dmsg@c6_(drA6LH#+(u2E~3H|7@|SPCy5+X!rDj4QpqXyGOPD#FYmT4snH zM{-(t*a$$#5$Xs+l6hi$w1bt%*Jsmw1JqM3g@yl@KXj*mK9(ZN;&PqSo?K4al{(kR zUd1^@s8$5cWAi0J>d)!XA)afsE&4HHg~~fwdx2cV9skJSatZ#fYtK5_5)V$vbHmAnqC5-*QkNokeZx&BFOxQz>YRd1QL`E`spP2q1Jn}M8yDRan zhDWFS{qYeDQ1>b!+jf( zG6*?g*SIP1dm+xMBI~%0O*7KhIw+>ojvm(R$?*xKmUnK>)2$3KL~8UlYB!wKBL;WZ zsQ+Epi2>kNqx=E)dCh(jno&(-lwp`#&7xv5KfXOK^5)eAkQQp9+0GLPodi0m>L^N> zEJSWeaUQw>`?yD=ZF{f^XS+H>k zmM1%plP--+A+%XK0}HzO(!yfhG7dzXyN-voM*cpz0*JmvA3X?ys_{tUWgmD4o?!BS&uX-aPj{EEQ2pSSR{8v#TfW7gxAFZIDLD=K5-NpwgBR#~V9tH5N6R&=y01qz)H= z)=Q-9nr}eJamj}mc}I*n;N8Mxr52hnZf1m=oAJvNIk~qcbGh!@XHayMrpDx_H$Jkw zoM%jmE$ty{E3Rw-S>B;T_Q=KW?nUYX06Y+KkurRoOhb%-IionymM$)fdq1 z0+vR>?AgSc2mF+-N|iG?Q6lwqIKJAVY|OX=;}oDG^s#%DyS9xChTGeYCU$H!a~08E zlnm?b|NT!cmP`Xh7{p{+)E+1T2CP^%R@3r);O{hRXX5>1~u5M^n?i+M+#F_l|t+(yj;2S(GXgGW~SqL+9 zIR)UO|HN7^tDhrLKD4zGXWoP&qrlVT1I3jh3)5(l0>WVd88aF72#oMgJvI+5X&V>3 z&)l>uliJONx{LST2ej@Y`CK-7^>^m-^5IZ+1;TL@B7m2jC>Yb{FP;=5=@1nm*Ti}p zmwRvdb3I#^7L(lEsXrk2-?Hmv0it#}&%KmLFNk;mTQkVkQ(5D05DJ1QH?fc@t$6X% z%;B8~f(a2qp?nuyXOV95vRkQ6qCkwXq7jl2p93bc4*qWGvl#a?^UQU)FU%!Ae`_P5(ZbKr?WeMc^#m1PVH%4)Z_-I9TrU}DE}j5TyIrM5q{77oJ?;+O8`tyZ!J;N`X-5QA#bpgZVN9H_`!Z(KkN zje&Km)eDiD0GM%fF27g(SlI{M4PW8cTVsjC3~Ije5lm{V9y5GxzA(%K3eaSEUGZ_BV=Op(tsUO+;J)Fmw}iczZRlcSgUh?l63zhJr(6id9akZ;a z-2xgcam6)&!r-;|#80@b8qW7cfZqgq83lA*6M-OnXz8vvW_*UsWG;7Yy>F5-O+W8JaL4nYHAy*_{1=*FU}x`&*a%GFPtVzW7^CbseZ{N)WO%$uLwWr#HB?^Z&tTz6K$+7z<3 zBu6(&`#AC*yp}%9G_;U}o}|A+yzE{wR>mzYh^Hd5Rx;0^v+mS3-{xwN}XtJeVwp&EnGbnS|)+VAhpF@0J!?T&emz{NS zdW?`MZX#*-B3gv!Bhpr$`wPG_)a2(JQ%duon3W=Sh{C)EN-EY@Gl6TIx#yeQd1RfX zDd+)Tnk4@T0V@8Sz)g`+N4y4;J4MzinMmc^ij5T-uJkB-FW5FjB7h~hjx z_9B)NtLMmpLAn4LK_RYbQPR% zCw`^^V*t1erwjrhscIWs`a1BGXF_~O!mbzW<1#t>1Iq+J>gW7JxJ8wND~gU-+hlu{ z_!#F(Blm3=d~!{TZ+cmpYyy1Q^3mZ!ISL}<%~-}n5!evxRC|2yND|zhA;L_20m+$$ zAT(77YIqb1Qryxp7^lfUMb^?f8(`^E2~92nPHCi37C;5MvA^$N*+{MCYE&V1eLKY1 zOIK|b9~`;<2H~Z`llUu&%(=WpKF|cC2X>6q8^DeI2G$S4|9JcTs3KF*b zqANs#UzF@o3iWY{67&y>nEi?3r{Qv3_Z8S*oay6(8O3|sm0(|2`-Bt<&e&ok;%Y98 z#MRff|0XSFn48&`m*3TnxEY^fhb}z%%N1ZhmW{wi10?_JHq)ntcdY-g-eGBSiyF%t z1XyhaTj>!FHQbAWR`^$#HN^WR{(LUwl4f%W6vBOl$BZ7p>7b+q;e(ar&^l+iJj8m3*;z_?R&qb<5LkuoRn z75_{JzV*JGidZ|o%Y8Y0jqPO?Zj1*haLuX@Vqd7FWOE&y(^6dgcc$krY#67mP#vrp z1~pKj6}rzn%qz?qwm`E?{uI;}g4v%(26ZaEx|xL&$cE=J{yu>RQNwG|P91d^oGY=^ zwu88UZaJWV@l{{o{=g!YD82E0>FK6!HNzByXQ;3x)}+ z8AA>Ho=U6MW=jJ{Z0)lvxXTl_LK%^RXDGAK=#Qy8{pyacUtbwku=q*vZ&J3_D!)Ne zy)r|%?spyz?hbB8%v_V5ecG*-_Zv}It(|HsY8}P%P_$?el7BvWN+w; ziBNxKYEl*2wJAZB48o@1%#gx1pIS%;yV!F`N-y9XI|M}X#eRzKxZEqw=-k-=QPya~ zHP=b2oe%It+gzSy)3o6h14n=#(zpdKo@<~}ZMJ)_i2cmN907EoFGHJ~u+4H`Siy)E z6_=94i8yXs0jY{Cf6eOa+INp}^QgBix?MP_r9V>X)DGwBZ!YtNUx7cNnSI(br)<5U zAEJ0Rs)}h3Rbouy2Ry{z^-gUX$cz*qplP2b!y6kv0G(voFc!baJm}N>w-#p(jk0A(1PMzt;6sWeveN{Pn z^9oO;n=J6~OGcr-bOc~xU`vRKHMIFo$)}Wc9HRtFOuFlH=05$c zcn<}qwz-5~;(|e2%))t9r()d$k$@P94$fFQ^go>x{u>fZ^j(OyFn)VO9&ou@-NBE! zO?flHr&=>bT5Hb`d|8>hWmEz~O>ZO%&+yu1k&WV4Q?#}sE77NJ@=S2*6!oQ|e;HyV zw=3_o;Y(pA$zN0`*>Q1$^lkvjg_ZRQD9Lzn$T5`^5eg^R+*dUep&Nnp3<(EQe@e%p z*7YzOm{8C3tFYIKt9!`8kQp&jR z1_DG^l1#uRBY9r@#pJzGMqe(cFryEFb->N(=m2~MQ@9_k-2vxj(*VI}26$3r4hx`9 z)yRNVonesG^z}61W`WkklTK@Pv1vQ9>}Fq-e~4d$EV8>`OmeQd)gE0Ckg$)WZ;-$w zt7x{lf4y0W`?nW*hLs5LIO`JjhW8*MQZYG&RD!ncBraDKL7h-+L!8ij?Pun{4%6xr zFpG1Z7ZYx&+0^jk#H67J;M+7aE18ztZsbIyXMF#jDhFw;MRDC>t&i;d@n0@+L!1bQ z`z-i$A$&?MJ3UO~eyY((+@%aK1$yYEhUGjbm=)JwdWRmINEeWp@f)nW*uhOh#ID=( zVEm)n&31|sT_Bj7O|Pcr`qdUL zY;C`4E`*OT#%sic3|i*1rneSzl}s!!cS~@CsQuaKDWNK>gqRg{Atct02cPc*^wLX5?;-gY_bmtq z0}=g!mwA?sPUz9(JA3x*(aiM_2BQW@ljoU=LY~BG;s9QImQ_SbIR44I5ePw*@{k^U zn=pyRT=@dh+s)e>%2rPCL(Cm&@|JmD6kE4yG!Q#%)cnCl>N2*mj5Q`2WT+a7y}eXf z|9i#rpa=Ge=c;UT4x*|U9_YR8$SHLCn$ z1hte)cKP_fi@A8kr9SYujJa~MpcT%JYFTVAE<}{Ku8IwD#WDmNHE+3>P3uZ*bbN;5 z5vSo?Vy<+F8eFA8j#R_HFBvI~7U^Z#Ip=f}dVFjt$01`HJjA!H z44qOx8qq&`Rc0cqJK4TzpZkQ(W%`h()&UItermwoo4n>R8D+;T0e%E2%6DKz+_Elz zS^@(bOqOo>O1$wZWhxT{B?e`!rU4$>e{mo4weVB|5*w8yZlnuUr+c1rI=n{0Z7Z2t zsSH%mC(z?!zczw6kxCupcAn@ux*TVV1szG_7Z@*^O)TUC;JnGa?H|KmV7@p3p(#E+ z9r%h!OS-hid>oo~!cCAaLci^~EztjF!Auz$dt9I?LJ!U_*qFWD&pL9u=K;OZNl9j= zXeeVDwCSTT@h0TXI7eDyPLj|~FvDiIHn(N?3l39VKSi`}wcvZ)vH~wize@3Q1x>ZF}YQ zNH{DOY{((txTGLc#F`y*E|_DEW1!UGt*QKOyW5SHbWy0vzXTz=?<6(l1j=dXX{j1& z>P>;cHlDKB;eW~_=joJNoWo^88jfyWTH;bOx#*80ZviScYlp%W1}EoLyZw~}MUEqhuq`lubQvfz-ZK% zD}F*TFZ1>|w}XIE%wx@4=LK$hP0EJVYyG%yZ6?wHT^Coks;f%qKF&a5<1m-Iqwq-a zm4?V|s+YWjky4`At&Y5JMGpNltnh7c;dMLfjH%~*O(gw-d62UtM1kq9V(>3B)I~C^ z^@f=5L#3BpaNVmy8H6H*0xwxylgk)0oKPX1GQCv^zHAeRu*y6Mw+U72LTMzl`d`;t z+Ql7H(XW-fLKoB-)3MDM=i=)d5v9i%G&s%iop%X zFySXy;>ZZ{#CtK1xYX77x*cP%`pp1qyi(yAbUkEF?)QG&-L;>eaPfu<7hVyu#L0c$ zItf!_5|@m9QSh}0G8f1~DO{V$QInA#anwe^yWOE#v#3#vO=<28mun=b8=8k3k4+gW zo!tU@Wy21FHxWLUzfD%dJFhE#kBS_fSfff~-irv2fq{G5mL0v1%Ee)r1&Lp~yKB|? z0$$CC4Nl=C7!eJJ_WdAt>$K?9!e?-BW;TpLdUQIG_IS+qH-@Vq%;Dndm_P8^rFSr& z0x~d4?oEPZD#^q>CN%&TNg)E^236OI332Js9N&fEqJ+j_s+jhpfzTI5_-)k#{?!7( z@K8_JB!Au+VPJ)XpJk`q6^OCR!} z`w@9}Z@Wu;AW8)vQfg}JdEuTDQq+r00e;6t_eEMK*H*;poGfIR&@_z6V+uZ`;~ZwK zdwp~qx_jibMf$$iGa8co!p6rb8YF+hunIMU^GT-JCo;3cs9Ejp;$uTCjwbvFi?IL8 z+665xMlFyM=(B?t&ezNHTqLyLXg^g139EiRj&BjHN$*lJEnS)zS=Bmp-($!IIuw`mAulwZ2ej*MO z8fUfCZwF5Esl|e4QLx!T5sp(ZxxlB{%}JW0@ns%(LJ$4M z+1X~gQ5pXMX(FQ~57r?lEyAI_}H??@y6`&lg3NIY>5k~~K zN!L`rVo(*FrtB;Yt^bV*Os{^1P4XqvO?eY>IyO#=LkWBlCW-a+c$21V zGhV|I_f&G5MJ10+4RfG6*9eChN@H(0G$2Z~JcxvKZQSj+J93kGt@(2m;*llt_d)_wW&LsReB-YW4B;{+#Uvj%gCb6h z2?H|I`UNzA%;MVCBgn@tz}OFdAG8ErnCO{+tqakf;RyOmI9Hs>#eQWPoy&r%n)P%G zHF^~N&)3QXq9e-20Qy*C}GJYa14#ZbmkeX3Jf@Opvg@U{dsZG7`TNLZZtKQe8a_eDZ zL1V`WnVR>=Vb{%|!dP&Mfz~ncwpM0P3*bbf*8+AGR>H?)k{kWxv>Qs9cK*YYJtaEG zLn8ovD?PHg+T1el(w$geI{v6P>#HJ7ALlpom8)h5P3oem!wLNxG{I8!Pa+(;JmQNk zvz|~Z4CX;aDIfN}im$@B%rMfqoyY&gEazD@ExXUp^fE;l&>*zjsl{&K&-{^%pCvmy z9FiA8J0QI#4@+hMi&6jiBUtsL#Lx|@oA;-MisH@=Vup3Ad7r~@Af)N+W1e?%0nwm~ zM;hPi_1W*S_&g0#$HvM)uUZ`rW9gCsU{d%FwoJ$W=e`q^jcmLqJv~XG3($hgkbBo! zNSDx+o3ox;IJGa+NLbI_@N>g&)F9glf8a~W;D-YI_I?InR8qlEmwwTYvrzEXHt$d) z2?=k-JUvfmjELM0LCvh=>HHhyG7BJ=8|NY7Hgf3TP?erl{s$dOA6Ka>pE#CC`VF`& z@Fw=37NEBv4!*xGTFp^pIoO>ooj`oz)vl6?_(2egI?0`PL_6j^7E`4Og*)7fshIG% zOwOVo1mzZ4u?7eGs$!LXtAk2RG!bgTMlguxtPnKw*Aybji1H1NMk5y)EpMAGS5q`0 z<}%;PcUO>UP3=%srD~As1POLM^*l|=O>+NNpvv~`%~p9YLa1k8 z)IMutSEdCWTq2y2)YpRT5)Qu%#A72%n>cG3c+L}+CS?in4}>RLw3>81)eh$}WGIp- z8_VWPpmC|`)KsCVg$ho-Xac|I@DZ)uA{=g90Vm0ozGLd=&g64vDC*Z8 z0SO(h`WmZtQW=)NjgUU!r*Q~aTzw+Mp{jd(t!0y8; zs16y{-k~|;-ZZ)sUO565W7@RAUq%#h-^aSr5)vCo!EGNNPXMR1Y&rz?-BzD6K1%B@KuD%Tqf`HhwFKoD-A!Sr(QV4bSv%2F(w9X=Yx(4# zNd1bsp;Z{LQ|Z0|Yn=Rno1_8|*3wi9dC+Bd^(5I!pvg{9eSjQy{BD?cQa^>R42d8( z%WK2#g?9PluL#H+9PN0~v>H>!{oO6tF5X^X1x|I!*-`>&o9fV#Nk1wBfgnTZ zrj=j5fq={E*Fm!@dPas2$|Ks6A85=C0uxOwwk@`8?ogpI43`eEa3+*7zeCB{NHu901h?j@VX18sbyCDQpwM!fSG zCuM?}Hp$%S6pmvGf)3c`$W(;p6zooc^(9i{tpQ2tzU`8(mZ_8Xn&F6aze&v{g;}DC z$f0!y)B|7{jCZfrCnd#T_%OM5@treDDfHNBE*Ofqgea1t{Y*Nl1SBCy?}*+FZzY`@ zKArtrZua3gJ^nliK6D@2|2Q#B&+J@V2B3+H7vz88#vXK z0esu-9A;#Ygn*xdzR>YMNOUDDd^CDC9qCutmA_?eL&do*@63T&O&%48Ix4K{Zblp# z7QLr}l_oS_Bvx=_9lZ~A_%?lap$am}zOSZZ%Y!{jn;)NV(LoWI=-?FtIY~-P^ZzD_a|c8$<-KkER0@rj8P=6)mpdR|^Xx!)b6! zm{lfnvLUh_c!qw;m9H{+`zA`GxKC~|`xTjpXSmlCa10tdaS0G<4soIV5YTkth+`G0 z02X7+>I+U}M$Xn@Tl*ab>iOkr3@Xl)UsXL4@QQ2eghgG2!OR@zV;Ev9T}(|PoUrXq zX}#h9Z|0ly)UF=>ktpR7ObGdjgb>y64D6~B-4_LQ<_?_W0uEE;ZMKN3?7`w+@X>LPy90o@8?)Q`= zm99XZ2E*%AQ6cE3E@Oas_lv1Eb55n8NX103ukV3O0O3upe<<=cu%qW6_gd$(W9lRH z2Zq~FenSR{<}AMG9V?>xSq94wS9Ez-z?ARW9{ckxN|%&rSBZJQleM*+yb^6<3QGmBk7(eOY2M=B}FIjW6Ko6jIG1opJC8*y-CJKihyb z@^fI>#JL;BGh4v&n8sB!dJ!h>W zu3P%9Yh?jAU{1Y-i9i3P&Yi9$F*Y!eWczXu^&14R?F>!-bc!ZC5MExYWfp@GD8H01 z)`=CIPzLh;v@)d!2|*T4$r1wnFi$<6p1sbuFM@dW)d`a~^-x`VeW0=c6-nazVgV^u(z>BcZWTgPrh*{y_58Q&D; zbIfIx`;aK`)Me=3Si=ckgQfh7u<~VRO~v_fAZSwG1}u)`1l`Z-kZripeBC=Rv9GLXHUMb&c<# zR)I^L{^vIaME8g%wL zVEjrFow|IO4Hh!`^EO*KeW!79?wJtC!})6HlJH>VVlW{j9OJ#(E@h0J9pw|8-Gn8` zh8J`P#}TyNDaV7kd> zPV2LymwhyV1oG6RN?AMixQhxQD*daHC&$ujZ>oa+DYkf=-vJ6 zFqbCXu&zuwqiIJnoah_TlPaDlz|u49rVq`b+zE&$lO&cjlqeTkK-2Kmvdt&^@}ama z2#^M-U~KVt42#lTdZuaCj<|4Y>b&JxC?b!O#|xXnJVEFtqAtz=PE?@PJ4;l*BImxl zG9Vb?PSJZqtwTroO6{)raT1ivSeKQ0I|C>+coG^7cGyAa8&sVysiMHb3q6nj*yD@e zYRy;l6(J^{+^=vb`kq3T!m4uoXkne;VfZDueG?5-0fywsnmn4g>1qm0)AabWI#05N z*3m8yw?wCbxK7Dtb&qJVI}w08ZQ>c&X$qDhweLyKgmX8lHe{HEGQ!(+9=A^-8B*cA zd`>Z0_rToBJo7R*j5g!LqUGPk9FpCaqK}{C7qOhb{lwx|0Vn=HS@X9!*-B`fNsq4rz7dmvzM5i@^(?Aso)=& zYgtat9FxZii5&j&MB(>rb-y`53!v>FNAhl<&y|n+pF*En_P931S7n}O4&4g?P&{&< zD-9Q3TQ3FYVKIj7ccjBqmf~u}<14p2HH|O$+F~M*?bM+SjBeJoDfrJzNF+y{5&?_{TNf6}&VOL!39|Yo1?9SGtFy4j zuutm13A#t*P3YNfv>R8%DC6GlmS{k0+IAEj@Hh+8lNH#Q&=JQSz>~wcvG12^{>E93 ztD}bln$jjl!z&#qc~hQ-VO{t-9nanOTWDI_%bFDeV}`*BzVqH)Ffj; zTI4@cAzxJc$XDaup(?Ey+_Ei5gU*rvtqi!_&*{GQ*ugu#)X#P2dn5a_-`K_OG-vzRsGIq3vSODRxvRlXy=!HS74(Xggw`loYAb0@Y z11S!JuqBo*wPgtK3!?V$4h&=l*5`)&0z1r}LvG^oBld5F7=-y3;Szo$fNf1rf2&S8 zLoWN0*N#_HoR2j5FX9ME+A3cZ^7EOgjEf5e4&)rH$;At`_sDH>9h>N=%K&tM&`#c? zLcXt_QR~b^9qbjR>J*MuuM3SJGOcr&>CWV{dn$;%XHC#8e3`w;4U1HFwIvk5>@DWE z@zcKgzWu7y*6wVf*%(n+wRp3eG04cPStPC%SWTK(+3#DNRL{a&`%G@bvZVWl`$vm{ zW@Q~9zBjo%GDu`tdg81+JVWt<*QuHun6drN^|4G=KzsW08U{xeZ|{K9R7867>dVE; zsUXblVHHgTDef~Yy`!rnc+j{;R{AnGh6r&0El1@2v;?7f^SZ+CYMH=Z#RD`+r@hpk zLv^4#5MSMQVFcW`z6{k_>1f2jTh^ldX?>n_@2ti`goAI}@Bm2o znsMfSA}t;JKxl^t0Xt(7-uuu&WzbVYCc9Vr?udPD1> zsO%W!?xd46AK2HE!jp`y1}zz`S~8qK>DUVUWh+;vmTzB^!kyT@RfVZHBK%GO?tya# z(g4womti1idv>JMNMwsd(8fvB;?L{teTm!{tQMMP*H0nObE!c`?Am~hPK}QqCMbQ78iWc5-eG7@H>t!P zRv=m7;cmmmvk5b1WU1Q0PxIKlv?UqPH=en(-#&xpR3EhN^WDc(t3WPN+Uz<|U@D() zU2&lBVE{=b%Ven_65{2suB?F`PMq7&)npB921B7h=}VOk>Tw9MrEu&+Z#?W9)nlcs zs{!Xj<`!y>^Cv(%)f=AnPEf+XaM@3<-m~z@{u9%Y8TM#!Wc=^L+^CUx{g8^EO&PZP zLuA+C&>$rU&8j#2(=4Ot+)ak`sB5_y#p z3X(&xH)5dI>A)v&bx;lHgc;|Bw{?@*os6E*D#R$L4emX-a@F8#r&ulimc1@U&{jCw z;4qcO^19M(tNsUx>qG;~E-e`5hTvU<&Ga^x6?czYwB$VvAYG%tTcR~(m{8H5UKzVJ ztD3#kS22-Qp;V3hWHza z$IyA05#^WQ8L2WhN4glzBDDqI_Zcw_$}DF`7h+z`J3&`(L1$qPFJ^P?Q3URt|0ftS| z$C=3b0glGET@5w^7lsZ6loa#38~h)iLBaxC6b6N>^~mAYMo9USSTH0T+7+Zp@COKo zLVESbIca`v;#l~V4c#eJPjee&dKGBB6lihx(!6$9SwJ-hVFhY5wJ%gFh_$y+I>}5itr3#pav<24t7g>q`2WwC`W{tR`F=tzMvC0J37T z2QAZi&V&Pf%ExVZ!zk*WE&tL0qbqdN-T<(Ui)&p1G-dPf~H`lG{9a+aC8r=%r zQyo!7$SOX!lFZe=uo6{i8=FZ<{VQ%w2|7@zhl^vNB&q-1+HKhHA0p1%ctcfxw*lo! zxBg=uzO26md%R!-1+_u?Z&eLZblx6k$h&W?Vfgwo=7oRP!VB3kYc7Umnz6jaNGHJG zEguNWd?0G2hL9dtfmpLXKN0*F0GG7$oiVZ@y^QxRtAP|>%xFT`Vx8(E+dd{COT=ur zQ(weEhp3K(7guCv`Z~hrh_j;3k%XW$e5PG5! zGW8uwN~{)a*|RX^fc&x0OC+uFceO71-1Aq1PN9F2?q`a?A-8hIG{I+VK+bkEPXWK= ztsDu029E1$v;wcbC;pPH&JCDJsytO=StE~gI1=S^v=2a2gn^WeZos+k9azFWo%+K) z2>&&5i2bl29Hkmt)TPN3oi86x1ihBMbb`yp3zm1^G@83`yb&6m*_&_w*W=PsEafs} zw2Ld91Cd+f%%*P6Hn?4=nJ)M^Vfl!}#;gF)B05{D6dKrlME|r~`j9c3MB`sMKws7z zuocPVh(q!W3=AHS#kL2kA97gbO=Dv0(a>9p_j_%kBvz-;oa{Q#%;^%4%LDLt58-dq zoOjqIE#Y5SC|McN z$LhZM1?#|UZ84RR&}7GL2G|WB%#ocWEqFgFwG4-VyUjAQXqCJmhE^QpFQ=RA02}OL z{3?UNNL$qwe<|mob=pDXiYfbs-9$Ln`a@ZAM_Yb)1yMfo==?9~)a%h*eNKtni*GM< zR6z`G2{$dacKLdRs=t7lc>wa`cvH1-6Mw#pIYnTVf8;S-)2-#StB7z zt^v!~5gmHnho!*Qr(}TWiFz~WBH?g<4jYjK3>s1;xek6A+ToEinN!GoI&ip;aQ43r zonZfiLDt?!Ry%MhiC^-wb4x41uG)oC<$AdAxqbpOoTlWt%4<0e?i`(kKZ~VZv`!Iq z!`iHG%Px6z@os#SkZ4%q&*k^ZOQ)Idiv`$UtenVb9(0_wN8;kakirg}m&tapU+2nw z=W|S|7nryX%)yoMfsMp;VN)VnzPvRv9u>Y(77(_u9+zb@v`n9+$y6=1Ss149zL_$e z7f*e#C4_IrzL-WAGrnyH4`z4i_`0`-%U$(&Zj!@H8OQ8mKB7%Gd_oExDkr9zmwy7% znbcMFvh zAP2kfPJjKp9cje1sUjjH!f$*dVXeix^|Ww{t&_u#jd|cJ#=4IzRfm30p-k9S*+0&jMVz(ALn&%ikNML-pFuUf zaEtZ7Dje0(q)?Eoj95z9%sN9cJwlOGAh%Y&8>xw?jJd4qnPxgq=$Yl{1?>KPUbFnJeGV*Q^ZJ&&G_RINw4Mjb z-d2F~@^y}gJ)LXAL5+;E^&AEgaMYzcid^Lx+81&Qb6{Mi4xSVQP6(#^lUl-JmD~-D zRoPc&;+;R#I?L?74wpw-Y9}SKu1r*tpT#`_)cGxtzoq;bP@5>cH84#pjc$OcQl$<& zu3`w-FE^odjXj>BKn5M(E18&~AiU$;X$$2PJ{;oO38Y|FEV(x5ILag-_!Y#9B&9EG zo4(buc2+*{JgDKfRvh~loLzd$(SV82$HI-j;cRO5o#8zVZF;N12@k7l#Y;}DR%Y2n zFvAS9{;rn1kO>N|__P1fF*{9R0_Ky}I6rT_>`N9HQ)|-2+7&3J)$l&~0Zw-n^ow4( zsegFqU<3PdwPf30XOgQP zJLr!t=*~Cm6JKT>KFV|{hPdx5#(por0$b85*My#=lri~=RHLx*RhOBC@F0o*x6eod z6ecdAs{}vwJ+&z^)OEepcF1%yO;$Apc8nMwqEs!7P~nDkKtZSmpxa26;YoJYV1jor z(y|6?xeaQOrmFWN*5Dc3x8cy`9dX)#2>iVSHkXS)|HX5Yo-DA%kn zHZLFhmhY1FP0HsanywqZJ$)&BVd*-Uw+c(oMI;?h!%%@z#S0YD*~iV#u?u;2Bd*^e zBReve93c-8iXCY8Y{nKIohxx>oYi`Ali&tp|I3f-cYaWu!xfg#PGYAK21cPCcX@bt zT!XEV62bKS-tD?1U-`rz6JE`bMGw2&3R6~6^m`-1$ym!&ewXQV# zDTcTQB@@03``uyp8xIvW$MuJ>j)4%y3%HeOI_JAz8m!UGBD<%z+sAjIO8L0p9&Cro z@Sb$HRxw_gs^44-oG093iidk1!yi zCk25krYnVv{>O=+B-x{Zh;saQ6$EV--^`m>G`*G^zRXn^y5Nd9xsB#b7vsjl6cR)w z>Fii7GJ&iLA9b~y_XU9|dtQo*Z=;LC+v&m-S$rG(5YG&3haB`Gg-gtP_kmS=-FF|=LIebfd6rwo%T0u5r``s1K!g>R}&h6{Pg+$weD#J;t zmyXj9B-gPBS>Ayc>&meElp!4dAY6io5HGN4-jPbR0!=?IByP-HvqFcr=za?^(es-Q zlS1lWve5qd=-is_t5ZC0E!)W!wWRMr5~JtZ$;zz6$hvffJ}J|Qx1Nr!zNhNP8ko*& z<*x-;oKOfbvBb3Mj{?A3GK_#QIPHGSpi}&Xw8ZmpZ$>&}(rfPlBD^*eWbRefG4dAy)6l`VJY0WXTX z7LLrnvbae9o_Fb!v);91u<4+|!DQJ@Qw95GcaWby*mTYPj&V3fmNmEs(4%2IY%+9S zb%0U0Au?;$Z)V-!95b>p8KnXtb_4!U;Qm`I07^4$u%E1h9r=oiW;Up;*B^jq<43z+ zpOLRkN+HJ;$-DUc$Ofr=UJl`$+jg^62Y2PFF4VcA4TA97RWc} zJ?-#DNr!imr(r)-v@`d4fyfZi zlI8%{wZLNea6r+HE&KM#-11pB+CZLYY;mI0$ETwCd!5Z(hy0uFMdN8uddZGT=_u`8{gcdIY8QtVDlP=`haWt)J#mW`?ECu|(ElNKgQk1pCnCU=+e!K0DMezW` zC?388zje_FG>+~iff1xbuRr4R9%wLOpWK;kxtx)Wk;}eG@#?v&Yfz4Pku?7Gp#;qD z;X7RN92dCxPmvH1E7;Mh_YU6${n(?DN~bZq*$5^}y6IfFz%?sStoCZE!cGpnyhriE zIB!2i;pljw(AIUT-K=ptbIa3f*P|5NrlcczqZm{<4qh4shzzQsatrkL3aH1RoS;8u zQj+px;nkf)m)l~iET5^)De8OZf96kY$wJh`W{uC&Pu;@h`@Xj;(-<(Llh_wJwD09s ze_)UEkENn+UW$4nGlfmZH@U?p20siq)-Us|@nN7f<^yydWL|0AKRJxDWl97w$$0A2)3GHOepILd z)NS?O-Q>?nX^G+ECg+ji1VxO4J53=M^Y;cV9yOm%g&s<4Mso2%&9wD#tR1oKlQV7k z@C?o;jxpvOxX*kqy-~c2nAu9Bz%1mXg_Taefg-iWK*P_mJS&g*8BR-UaYEAPEuM9vj`!G?v8+7|BJM9f zwx(PsHYy!@;t<@PA26%hmm{*Za^kZ9WHH8FF%~Y6A65<+!I(FGK{yII8_Y~ZAwgwX zYjo^~KKecUvnDXW&AJ0W?jpB)fvCF>@ZIGNPonW?f0NLnpW40VMS0+PGRcA@BI=saE%C$9Xm|TupoThH;>?WG*+Qi*+mcEeaZak?L;tl>UHj zIWRuNFwFwh>zzuP23J%R958+Xj~k@b^b$H^z1+Vw8<8lCYbvbN}#jP+a^Be zLF0T})$d&OPS;$Om{8d7uno!7p^`YC%1;9Ks3^7IW3cJ#>zTZBE=Bxa7S$SwM;!$*)Y{uA3NL23}`ADX5-nO+Ks%*>p-y!2gXT9k$u<+Yz4I zHyY^U=)b?&J(m6oN$r>6>PcM=I3=Z}%Om!CwiYkuJt5j+fb32)$!=#KsQ;=j(U@Xd zrU65wwXyBH>TG;CUY~0-0d55+o2CvqVpM}SVdGYbqUkWl0xK;-DrUw?R3ME=bM{=G zQwE?2hxsw2x@}J-+f`B{@Y}hp2rIhH71i6+A3Q#!K$+nqcyu``#uo*#^0;FK2}-xk z1P~N7v-E_Wdn4Ihc4@fIhBu7Bdz3ZcvFQ1wMr4sqvLExXiLMx(G!?vo1^KMrrM`8; z0)Q<@tD}xTdEM^g#g=k)l9Irr7=R3mM4_XJ&Kg{J>2^K0veR_C!$VS$V z%OZa~cbJ@2={Kr;>&-SwF3rE6+zAs-jml5qNOf(%hdCf+ zwxSdM)$ChU=2!?V6~GeuXmrwmm* z(a^J0zV$Bcx344UjuDiZaL+Qe%t=Du`zIjEhDL^*-Gi|54`{hF6Sv5EyA_&-C9=(m z928Ej0K4TV`gn1!k@`8Fd^4t&kL*h8lH^hCzut0&DcS4j-6II@X>!4$Ql>oYU|P0j z(eHucpj|AY0+H_o)`IceiW8^6PKXR!W?WX$Lxl$vGi*^H*^NDOMP6c=F8w$sr%YK6 z(|icl{Da43u>U&$5L-h#RMf_lVt-Z4)65v9(#qo*Oj-krKyA>#TxE753xr$Y0v~DH z6Hnnz$}|igA|2!JI{vI=_O9PVVA7CO$j19AR1J|1cP{D@@g&Hqa*_CGD3t)@mcJc4 zSqOZM$B;NBWI|On6&-4FaSk?uA9aDDj~{dSst8 zuG(yp%z``taWfT3qYF|_E4y-WXo9Rkk3ZrVE7a#v0{M0jBqRj&d z#3V#P4c?3Iz8Rxv+!*%S*J-RR5%yYiNn8;)XTwmv#Jh!jGqR~SA^JM_xf{<-UjD2Z z5X~F6<12wGR{y+|ioA;H*Dq-!4uByL$2AJXcb|GN48VwK)E0pT5iCUufO3|;Pu-#q zop~g#n8d;?=gq&UG#ODwt(#gh`y!ENT;)^BU;am^!}O9#lrRtt(hZ!SOB9b0h{lgw zGy!q7&3@!G@-?*CMRSx#XGa*lKoKnA1IQo)y`WAJ$jQ*1A9gT(x@ z7~p;c)V$-dj4WDQNu`Y$&(9MHw|}TFu6S;-R0et$(X9s>(rr<%tpRPCy=Tl)%*g!h@?dW-n!Fw(Mxh)}ox{4IXKXSh0&8YF zcFMeV4!v|;+WU=$V;J6H-U(x)ndu|tS!$NkZ@iC7Fh!%r1MjTz05`e?%RmsV zZDJH9(_0_&36>7+=4+PwTPmYefPMs{;}7g^9#^KX`|Yfn&6y!+3_!kyuY5V#X>o*bv_gg)myVWo=y2B zl<|LO{UX!VYLwf`TVP9qcTTc-Y=E|h63GxDcd2=0+WC;SA<2JGg$A)fV#WYAGzN>g z)u%!ON&esx(dItAfJWy9U|jKC$si)NdUR&_4{&pe@_1=UnZTw!a;8e5%;+VQFXK9X z{eBlhG)qtQ?<>v2&(N!9g7lIphBDq23=6GWX|x-D?_PI7|KCZBEq5bOo%jk-R?onj z@6-5*=`>a<;t>0Lx;``IZt85-wp7a*#a>Qgy5I#A-jWSt&OjO=mY&DAZ8QkluEUYIHTpeR@t~QC|F1MgF$&ldZP&4`5LGr45y{OrnFdr>9$ohbZYT;|6uBBq6~lkyjsR~LRrt+Yj;@1c zWB;ES1*@}UY)q~AWL6S@c(m%0>IgcMVH<0m5|YXKGI4bVYk$dsUqw$$VLaf_rxf~|H2n_5?CeIB@ta@z}qZwJkN zCj(5bGS}Dnik|rcb68T>k)P)DY_6qkaOUAFVS@&}nWHpZvc(m~g}7Ke`*Z8Xrp4K& z^8a`ZhNowpB;0}W6&HH*y02(&H(Fo6|IwnPQ}E01Z^=^{&dx6UdhF}B1nvSjsmfc<>CzFhvjd8h|xhlc}9_fF}X=Ic}7AG%khyF9{PQWYq5oiSp^^Mbr3 z=b}qdZBdR;IMrVAU=%O0UUsX-F;h$Z|2^7@tb3WSW%su3TkYjS1n$c3mYr$ql8;!5 zl1-gAeum5g+tCagJR?GO%^*h+Kai2^g$?cNs20{-YpKF&bNOQump&%^heBeaWRPNP zfjEYAa{aH9#LQ^_oSB@Zw*V}smXebJa+ex@Y{Dcm3Ep~?MHkhgTxt?*;`Ff8yYhfnBx#!k@av5@0jv!sI zLxg>pk(#B8()kQ0AP`H-5O$DO!uKJpO_1o_pKH!Sr0N5;J=dX)NHC^|*&5AbIGT|W zC%T5Hle?Ja!bRHcQ?V3BQq~BOJdoun+I^fZIoNN{oUIU!TQ zO{%I%LDHQA-9z<92;U3|hdOr7ZbcTU>d+pPKQc1e*7l*I6w zgN9w9Z1aUUkCqGeKWG&(--?qO2vRZGI11+KxL}W*maVQ0I;)vJgtW`F8Z>WwE-kdK zAt>K6+zMrz`?W6>6XZLJOsV@VSS7s1__5XB`B5vE7G@TrU#*-0(H)S5yJd9xiIUv< z+ZX3)?A-^jC!e;*h8Vfy5Ua(i&*_9+gHg)d^(^=+0RLQ8y5PLUqQx1}j43@xLbIvaopk*fg_G+Q-mJL$VX+5ai?M&8 zzfPRQhq%sdvtXYLHQ>^T9z2RT^FHM;de%<^5qgl>8Pz5mk39dY3U;pQU%uXCE^_DV zSP`AJIlBvxuAg58a6y#2OEbUu@)n??pBsQHjRYj=f$BV85>t# zUq_Fo&V5{Y$U|A`+mrHwuJY`&)}d$eJwhncx3WJYiLnKEK@1;D9mF9om;1)!-uljL z5G|))PVbzkRQ}vJwLlB16ZHi#Mc*v$rE+n<5=dZPuwD|XHd9?pd~nS|l!AA11Lc7D zDT$lge}dO@1HNqQ8-LA$J ze4Qt4Eoy3?fGHr&Qd^qwj#8n{FfBA#VtBerpdYmfUU06F20svh42wbbvajx;5cJG9 zdv&vuYUlfl7mMn`R__{H=qCN!X9Gx^s{q?`);Z#A|Y=Fm>lOOn#2<}#(G$@PtZfm}fOJ*~S#x+$7 zY`naF0&nCAe9MUeV;9-K-C!xf&3C)N3hMb*OmHjBXaFJS!K61_8L4DZNZ!(NpOs>J zcKx5n` z4*N#DxGAHx&G0hyc;4}On#IVR0+mrtnaP#BbS-j|w` z0B|0~qhM+}g+`0h%+(rPDa&MG0~TZ%djwXFD`rcV6Ny$k7lDB~$PnMzC@g&}ZGUyN zE14enT3gx#?7E+eYj~6HX40wXcsRle9TqrGALfvkGmRceuHO{iPNF+($H6OGx;8YB z&Up(UYz6%%yV4OzGf{Ny@vBprF>V+z(;;D-LE$Mq^hmYk{7#3N<`ymW5GFRh;o2H4 zT}(zrSomMd=ZH(iSZ}?W6#%O{`}AgT?%L?xlYuZj``F`}W2y6i5c?AXq+HI;Il8G$ znht9Gg8Syn`D0a+IhtW$18g!s4=J8u4nzque>nnH%3wfB|Ix6 zmBfzbSBeyOI!TKN)x|0^mAb5EB$O6j6PcSrsCkJI0T4PYQKPF8lKneKyH(NnM1?f9 z>1{FwlgsIy5A!u5l)7J}&lVljO+s!K(4e}n%W1HPs*X?OCRgO$;f*(0D@|i56aHRh z#KB7jo#_8&h!wk7#_@va4z2rZid2y=6UKTim~w2<_L)L?!x=1ZusW$6#sI}=jL<>c zostG`QjJBE!0#8b?a``nnf?Tpqf$tshgtkAq*v%>^ltYFtR&di+M@$yua|NPe%v%- zXvlP0XG~NaYwTmHi-E_HH$az4*DR4;jpN`+d?Zuu)~^!m6{JYip=MQE5se^0v8|1j zu8rWLAOY8Xf8y2MtiSbvei2`v7(kB5SJ&cb1NFt@0L8uneKTf@a0_Va;Y%j!_3~$` zRY0?hNq0(!nf9!qAZTx%Mss625RcJ`lX(p#Bwhqg>;)5%6D{O&SUp=H=lAxY^ca?< z9E4XJ*mRaM=DJ}7Kc&bVSL!KB(^CUH9td-&OM<~yq>t6A#eoEX)strKGD55D@lruN zycW>84?0ml9Pya!8-?T%Hexc~Y0ZAC=^{cN*uCaekw-;VXBhVNHVc$f5iR(ctY&sl z!dxNUHrKbaI)D0woN0ima@6HMzIAv1&+E6>0lX5eK()-Jeup*3_VMQ_Y#0nTrskP6 z`|7_0Px?>ne2^`vZcDCKpYT9)BQ?#JFPKK1w9D7&z^V78!iooWOojr3vz8tsSWr*c zb;YB&(;Ns&OVmAE{CIJQ$wL4v5D>?vXtc`P;UD`)DRZ)U#gTe=6!vi|Dk<%Ew?IN(ytZ2Ip@mf1nLtD+VA7t zE({;k;Qdw;aN_}+a~CFS;GzrscR)-hYs);#5Df_+GN5mh9A4CDYCRR?n%VhVA-Uvh zQlPfH!X(}|Jv!%wjsu~%E}H?%$Zk##xqU3Uq%w0nF~ol#kL^$F_K_N@?jG0B^t9#}&B7ocskJgh;S%DM`mKRY zvqPMt88?l7+w9{eujTVk;$Q-71aI84kxKQ$DL{hq*D4wCFAh0^w+|TI?9a2U;&vwp zuf+;OJ8nRpQNPC`bpe(*u?S~>iwHco7E7;I#J$~%^pJJ(KQqiOpju>dkhcftS+zRy zr;}q7xg$#0x$9*i2djo|W?WH60}F4~i1t*?FtVAgLQArm`#6y*HC$nT$)4E@?b@V8 z6-NE**TvDzkp!Pxa{Zl;Qg$(-IvWi=LR)Z^{wCMbjg~rY%-{upNalm(Yu6&$;;(Z1 zvLNqG@+kZA?bsqQ6D!%05#ou*=;Do(?!ZR`D$ZEq+BgjjPHo?5XHbzU=#_ba0pSWT$(puEpd!*jheIScbQh(>+sKh4pbCe(?bPHrF6Wp1|g_OkhFs~eH>b#xI6Y+vbE;Q_2*}fL9O)Dylb#I zgF~zhk3>E%(cn7F?EY2qM%Mc_tH{^2f>ZaFN6CtXLt5>QV^4rj_h@tNBdPx03VpM& z)>cS!BvSt5iAA}Ru8T-xu*=6|BbJtT`ltox4Q9+Y|6gYGqpoBeAM1g69%2*EJSJbIZPE+SBxv8cr>sP-#6_Tn);H^$Kv#(S6<+gl)w7GCYW$WCCyT*9Y;b zWW?lLX(?A0z@n$A==xT%3|6B}4D`7(gUJD`pCT?P_sgw{HGB3%CbtW(4bU1}2gZXm z?)r_FOa3jgnpnbCxYq4F)%xYXaqMuPP{|8M)413n(N7@Z7tqClB2}R!OqD(});)II{|+S&czO#ne0{txb|V_5f||*;eZ! zm4}S4Dcmi$i-`+au3t-6Abm#v!MPAy^wFk5WH8Q^U*E0fy5nxkcHz)Q#f1khMitVB ze!}rfqh)&9Lg^=XsOBTA)L>;iDnXLU-E>R2U9pWB%3N!Occ83mVHRMrCQs$ELWZ-7 z2>|iIGzZ93Ps(<#QZAO2m(EU-aLkILtC$Kp!8u?nN2{4wf zl<)pYw1cyeDkTSSH?T{xF=NeZQUY1xIvf4I*=omUiX=j7fy=vXJ)7-9cIxDX&TIiE zVIIlWlk%S^-U_85_1-PKC?04#9rsfeiRf(RM*skt#C6*>iQbhN|W z_Of{*k_+{}8FoY#%U9PDDwE>1st)d}PTEp!dnnP_J}Pcqogz zg}bB>IOsH z!()Ueu0}L>31|O~0qC{j_R^R%2tj^Pv!d`Xr>vnRv6CChzI#CYnl8hT*qYILb%-`B1sTY)!^l;k}K2>-X zk!B?XRxALNjZgz}=)!;F|=gPU0cqtvhLeeVzC(X5(mLPdx)-tt_l z=BKJIQG=wp_-;cleCJe7*48|1t>dT+9=2)@-^NCiaxQ?qqbN-76GFD;n&Cb`;5h3p z3D?FA7Qtead8+MBfeZewm$i28C?Y6*`@RTf3uZ%aJD~+tcA+Vx(eN# zA~qV9Ywt&QXI5eT3;MtlF|UfU6C)oQHIhz|7~NyE&VG2<#j>ls9d1_)x)A-rsT0$YwYMKrw_m*3i1A47G?ULe! zj&D6$A}cniAs~H{T*bLd46m5oY-n~d{Lto$i<^i+fias;c9Ht?YdRi}Z&$2lJLg}B zwjCcLajPu|i~gv>cs|Cxue0&ATn}uu+-1G|qlv>o%@3<<{XwWYQ20MKw2SBGAmTy3 zF@bi?nm3XYfi;7vip=#ogX9(S72RiUqgFji8XIHRWlhvPzhmgu=7~r9?4Q#9a#mfb zKl=P@eI8<4U=#J#dFEnppAEm-L~mhEputhQPioA4e@t|zfEZL=eh;exvZY-(E3D6d zV|7-o8&yK>S*81LH&xJ1R?%y=WKDY)Ksge^-1xmml>zie7{#&Q-N}ZQmN0&&YR9}P z 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äz?Cs0b`51w_swIfGi6$%G8U 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ⅆ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\"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/652/6a20e295\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:05:03 15.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 :if ([/ip firewall address-list add list=\$ListRKN address=\ + \$newAddress comment=\$aItem]) do={\r\ + \n :log warning \"Successfully adding ip to list A record: \ + \$dnsRecord, address: \$newAddress domain: \$aItem\";\r\ + \n } else={\r\ + \n :log error \"error when adding ip to list A record: \$dn\ + sRecord, address: \$newAddress domain: \$aItem\";\r\ + \n }\r\ + \n# } on-error={\r\ + \n# :log error \"error when adding ip to list A record: \$d\ + nsRecord, 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:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 2s; \r\ + \n:global dnsLookupReady (a);\r\ + \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 +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 +/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 interface="ether1 - Unet" list=WAN +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +# +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=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=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=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=iCloud-Mail +add address=smtp.mail.me.com.akadns.net comment=smtp.mail.me.com.akadns.net \ + list=iCloud-Mail +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! disabled=yes list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=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=149.154.164.13 comment=telegra.ph list=RKN-dnsLookup +add address=109.70.26.37 comment=grani.ru list=RKN-dnsLookup +add address=194.85.61.76 comment=grani.ru list=RKN-dnsLookup +add address=104.16.4.81 comment=xhamster.com list=RKN-dnsLookup +add address=104.16.3.81 comment=xhamster.com list=RKN-dnsLookup +add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +add address=104.21.32.39 comment=rutracker.org list=RKN-dnsLookup +add address=104.247.81.99 comment=lurkmore.to list=RKN-dnsLookup +add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +add address=8.47.69.6 comment=dou.ua list=RKN-dnsLookup +add address=66.254.114.79 comment=youporn.com list=RKN-dnsLookup +add address=185.110.92.41 comment=pornolab.net list=RKN-dnsLookup +add address=185.110.92.40 comment=pornolab.net list=RKN-dnsLookup +add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +add address=172.67.172.95 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=157.240.205.35 comment=facebook.com list=RKN-dnsLookup +add address=157.240.205.174 comment=instagram.com list=RKN-dnsLookup +add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +add address=74.125.131.91 comment=youtube.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.162.106 comment=googleapis.com list=RKN-dnsLookup +add address=64.233.162.104 comment=googleapis.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=142.251.1.91 comment=youtu.be list=RKN-dnsLookup +add address=142.251.1.93 comment=youtu.be list=RKN-dnsLookup +add address=142.251.1.190 comment=youtu.be list=RKN-dnsLookup +add address=142.251.1.136 comment=youtu.be list=RKN-dnsLookup +add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.147 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.99 comment=googlevideo.com list=RKN-dnsLookup +add address=173.194.222.106 comment=googlevideo.com list=RKN-dnsLookup +add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +add address=64.233.161.120 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=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new disabled=yes +add action=accept chain=output comment="Accept 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" disabled=yes dst-port=123 \ + in-interface-list=LAN protocol=udp src-address=10.30.30.0/24 +add action=accept chain=output comment="accept WireGuard" disabled=yes \ + dst-address-list=VPN-Server dst-port=13231 out-interface="ether1 - Unet" \ + protocol=udp +add action=accept chain=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" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + new-connection-mark=VPN_No_FastTrack +add action=mark-routing chain=prerouting comment=\ + "Mark Routing main for NoVdsina" disabled=yes dst-address-list=NoVdsina \ + new-routing-mark=main src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment="Test sites" disabled=yes \ + dst-address=!10.30.30.0/24 dst-address-list=Test new-routing-mark=To-VPN \ + src-address=10.30.30.0/24 +add action=mark-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=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG protocol=tcp routing-mark=To-VPN tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN 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" disabled=yes dst-port=53 \ + protocol=tcp src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat disabled=yes dst-port=53 protocol=udp \ + src-address=10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=masquerade chain=srcnat comment=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" log-prefix=2Amster protocol=tcp \ + routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment="amster.vados.ru For Certbot HTTP" \ + dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ + !To-VPN to-addresses=10.30.30.33 to-ports=80 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp routing-mark=!To-VPN to-addresses=\ + 10.30.30.33 to-ports=22 +add action=dst-nat chain=dstnat comment="Yandex.DNS Family" disabled=yes \ + dst-port=53 in-interface=Bridge-LAN protocol=udp src-address-list=KIDS \ + time=6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +add action=dst-nat chain=dstnat disabled=yes dst-port=53 in-interface=\ + Bridge-LAN protocol=tcp src-address-list=KIDS time=\ + 6h-15m,sun,mon,tue,wed,thu,fri,sat to-addresses=77.88.8.3 +/ip firewall raw +add action=drop chain=prerouting comment="Drop Honeypot Hackers" \ + in-interface="ether1 - Unet" src-address-list="Honeypot Hacker" +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + extras.getpagespeed.com content=extras.getpagespeed.com disabled=yes +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=linux.duke.edu \ + content=linux.duke.edu disabled=yes +add action=accept chain=prerouting comment="Trusted DNS" disabled=yes \ + in-interface-list=WAN src-address-list=Trusted-DNS +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="vk.com raw" \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="ok.ru raw" \ + content=ok.ru +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtube.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleapis.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ggpht.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=youtu.be +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=ytimg.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googlevideo.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=gstatic.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + googleusercontent.com +add action=add-dst-to-address-list address-list=FuckRKN address-list-timeout=\ + none-dynamic chain=prerouting comment="YouTube raw" content=\ + nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="me.com raw" \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "icloud.com raw" content=icloud.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "comp-lenta.ru raw" content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "smtp.mail.me.com raw" content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment="gov.ru raw" \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "r78.fssp.gov.ru raw" content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + "api.db-ip.com raw" content=api.db-ip.com +/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=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +add disabled=no distance=3 dst-address=192.168.0.0/24 gateway=l2tp-vpn +add disabled=no distance=4 dst-address=192.168.5.0/24 gateway=l2tp-vpn +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 +set api-ssl address=10.30.30.0/24 +set www-ssl port=18443 +set www address=10.30.30.0/24 port=18880 +/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 +/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" 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/20260515/20260515140002-Diff-Config.rsc b/MikroMaster/history/20260515/20260515140002-Diff-Config.rsc new file mode 100644 index 0000000..4f5328f --- /dev/null +++ b/MikroMaster/history/20260515/20260515140002-Diff-Config.rsc @@ -0,0 +1,76 @@ +3072,3074c3072,3073 +< add address=188.114.96.1 comment=lostfilm.tv list=RKN-dnsLookup +< add address=188.114.97.1 comment=lostfilm.tv list=RKN-dnsLookup +< add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +--- +> add address=172.67.161.94 comment=lostfilm.tv list=RKN-dnsLookup +> add address=104.21.9.225 comment=lostfilm.tv list=RKN-dnsLookup +3075a3075 +> add address=172.67.182.196 comment=rutracker.org list=RKN-dnsLookup +3077d3076 +< add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +3078a3078 +> add address=8.6.112.6 comment=dou.ua list=RKN-dnsLookup +3082d3081 +< add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +3083a3083 +> add address=104.21.71.238 comment=crimerussia.com list=RKN-dnsLookup +3088,3093c3088,3094 +< add address=172.66.0.227 comment=x.com list=RKN-dnsLookup +< add address=162.159.140.229 comment=twitter.com list=RKN-dnsLookup +< add address=74.125.131.136 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.131.190 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.131.93 comment=youtube.com list=RKN-dnsLookup +< add address=74.125.131.91 comment=youtube.com list=RKN-dnsLookup +--- +> add address=162.159.140.229 comment=x.com list=RKN-dnsLookup +> add address=151.101.130.146 comment=twitter.com list=RKN-dnsLookup +> add address=64.233.164.136 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.93 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.190 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.164.91 comment=youtube.com list=RKN-dnsLookup +> add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +3096,3098d3096 +< add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.104 comment=googleapis.com list=RKN-dnsLookup +< add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +3100,3105c3098,3103 +< add address=142.251.1.91 comment=youtu.be list=RKN-dnsLookup +< add address=142.251.1.93 comment=youtu.be list=RKN-dnsLookup +< add address=142.251.1.190 comment=youtu.be list=RKN-dnsLookup +< add address=142.251.1.136 comment=youtu.be list=RKN-dnsLookup +< add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +< add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +--- +> add address=64.233.162.99 comment=googleapis.com list=RKN-dnsLookup +> add address=64.233.162.106 comment=googleapis.com list=RKN-dnsLookup +> add address=108.177.14.93 comment=youtu.be list=RKN-dnsLookup +> add address=108.177.14.190 comment=youtu.be list=RKN-dnsLookup +> add address=108.177.14.91 comment=youtu.be list=RKN-dnsLookup +> add address=108.177.14.136 comment=youtu.be list=RKN-dnsLookup +3107d3104 +< add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +3108a3106,3107 +> add address=173.194.222.104 comment=googlevideo.com list=RKN-dnsLookup +> add address=173.194.222.103 comment=googlevideo.com list=RKN-dnsLookup +3110c3109 +< add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +--- +> add address=173.194.222.105 comment=googlevideo.com list=RKN-dnsLookup +3112c3111,3112 +< add address=142.251.1.132 comment=googleusercontent.com list=RKN-dnsLookup +--- +> add address=64.233.161.94 comment=gstatic.com list=RKN-dnsLookup +> add address=64.233.164.132 comment=googleusercontent.com list=RKN-dnsLookup +3334,3335c3334,3335 +< set api address=10.30.30.0/24 +< set api-ssl 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 +3337c3337,3339 +< set www address=10.30.30.0/24 port=18880 +--- +> set www address=10.30.30.0/24 disabled=yes port=18880 +> /ip service webserver +> set graphs-plain=no rest-plain=no webfig-plain=no -- 2.52.0