From 08a8ddf3f2bdec0eb68b26f467186b5c3017f9c6 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Tue, 12 May 2026 08:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 12 08:40:18. --- .../20260512/20260512084001-Binary.backup | Bin 0 -> 302647 bytes .../20260512/20260512084001-Config.rsc | 4653 +++++++++++++++++ .../20260512/20260512084001-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260512/20260512084001-Binary.backup create mode 100644 MikroMaster/20260512/20260512084001-Config.rsc create mode 100644 MikroMaster/history/20260512/20260512084001-Diff-Config.rsc diff --git a/MikroMaster/20260512/20260512084001-Binary.backup b/MikroMaster/20260512/20260512084001-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..a32b3a4a6532307b1f735a0a5e07e1ea7ec0b3bb GIT binary patch literal 302647 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%0A@vTbf7DmJ}3sqDr2 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�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

@(Eg{ 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 Rp zK?XiKs@G-2gCsmP(tyu|tV$mWn%o(IG#6Q^)ZelO#V@64S%`fz#MbeRM&HV^(^eDl zA*@vdYjEksp)NFfu|icKGt%kpl-|#lb?=3)D*Vgi4(Y4*IJxyu*)!0d4GesU`gIgY z`wzKK19Bq!;})4s=R%U!bb$~Pw-K4C_*U-w^5XTsaFZUw{oAwZ!e<>th=qNDVaWLg zM)Jn+n|0^`#fQE2$jEK}`7;mmQ8mI#-xD}P%_U(C+dnFd?G!a6t}E6`yyFPRJD#8` z%0!e@{M?28kZp7VFEChj$;Ppx*TUe<4`94O$K`og=~xW7q@riiSb&x100rZ@Swx|* zBjI?^@;u38GyP25YNGg^0BX#IdKw@YHj^%!2{PqE^^m~JVB9U)oVj*|A4f2h43U_I z;2m{DpNWgza517w{y;u2;xjxn;6)>$NyWR>9NY&@)cqOIpgPZ&n5>oE>-nJz(S-c# z^1Br7TrHGKizBVeXwZNRzA=tsUP;b0H#k8(=a6pvK`6Y04_D5G)KRQ497Xv`+H?3y za)`9gdPRtlkK$XNJWrj*iWC5jg0Pgfhq^ut4!9k58n8~?rJ%U3;K?I3Y8SEy*)8Vd zht&R(kVkd8ukCFFimaM`B|PhcU?})-1)FGQ;E9aJ^fJZ>976fUM9*@O6&>Ovfc$9S zSUN(h&ton5mh5;vY4ApO48O%%46W)Vw_ywCS4c0;aY=7yj9&vDC=+!8y>vPP` z+RbDrX0_|+&q^K+JjEkPoZQC59}UNBTz6VUgty*Ikfx@B63GQ(C-xJp>L?>~d&r=E z&KnmP6eI%J?ZV=6Pu#$gZjF*LVf-~>(I9_);eNNXrd?{c^);Dr1^C8j5|T}F)7W>~ zY068YURe^iij4UZZ*!`AUva1@5D8~J021Lgi=Wrm>>TTyH&QEIp; z6j7hA3sM>FC0DlX9 zS-#VFPJF$Y;`oV(W6rpn=fY)?gxak?MLdet5o=W__OQ&7Xbb%O(t3Z2Xdb_9)XiXW zMgenReGQq5=*_we+&99P!zsticux9jxEdSm)7oc{%4ZAOF}b4RV^LeM5Gng=YU<(+v8XC#IvRE+~979h;xBChs zAAYq8yeZT%nLWzeXhv2Q^~Unt1kf1}ztbRp%bA;oij1Mx$2kT}a0Hz3%goR}4zHXuD#RMb_5l&t!GEc}ldXhOW?bTUu zY`{OJ*=-DHY2ROc`At?rooEN)2O8%aY^_Gz}*5YnRU+qxqmRT z?2b|f$aM++___p{blyb{mXXkgT4(60U6k#S+WQDN8!cv<(c*USXC@cSg>nGc= zr7n~YAL4B#80`@(O6kw`4z~H!BE@$=_lYtsMQ8N*7UO!c7|hVzY1kktI)bPm&6>JZhW_<&=$E3FXiYc2VmdIptUP(G@#Y^#N3JJQdqq4wYk_trB)zAjijJ_=i?63F0xR} z8&O=qMgvB9mmUd|mAu>XHdyP%ExuT_>CAmS zpbw5xWoJsDJt}^vWyWms_Xy;|Fq&p;7q9I@w<~M@Xrq9&8v+V?b>x270uO|VRMgyT zhG*eee+)nM8(SpRqXra4oxv9``#dJ|br-NsrdNgmtZF57Aq4T>^UuQIo8F>Az@=DD zNOuwXseU6QW?wOhTRcthC^~gK54rJXbAw6z{m!V+&%~Ehn@ooVz*@Z31O7Cf0HZwiHzj9giW=uof)7 z*Jnd@fj2mhvG!DR%@KazA1oW8}=px-Rmm1Nur|eEi zo}uyhsg$=E^qICF8m5`lg6aMaZiM4c*lq#PsDO!`6d{KP7mXO}Y9ayR z^U%R>Y~bw`^x)>_^zW<<8&CE~=9thqGlKU3x%P!~XmPAp*d?nQ<(2jCpd1gk-~o}m z@xfUW9X8bjF>x`Zp6fMRK7;VF*rM5y%J|95!Jp2Kuc#xIO{^VSD?w>_{3?-a+H9R2 z8~kW)nvUj?j9Vj&>td`Pv}6%^hVj_w@%C1Lnk6bGU7S=YW>gRG!g83bFV;!QHz0U_ zM~nOIA0FDw6aAk#^OvBRzv>g^ZCC(oxN^=AuyMG_@`DV)T2V*M|IL#3;Q7jnbgpeG zS1js3f$c2m5#_+A&n%!ySva{g#3BUxsix22qnQVav46P_mM4v95dPUC^7CKW;juj2 z_ey>2QUblG^CSzre^jnoETmS!S>aU~`5;{aoM^JpF^e2%px-!HwvM%Rf>MeO&3t|) z0Tzr7OWc>Lr5>(=xTxDrTN+Nqe=f(J?d-JC5mwkB8*TlN zL1jnD*i=!09L?h;u=-sneWm|ZbxTbN(@3gd;5s@ja^KO$dI&BzPt6nzNF^hQDUL zR`XvyP8T3{j%5@d+!a8~Oqx)Q+=*H8tnO@__tv|5QrE7LvBk&?bj56Y)E~4nmf$G> zVC=i1CVBUk4V~YuTQWEGew>7LIv7mm3{1SK1wW&Lw*CJmBga}8Ua5v3*;}T+!N3bk zxqSr1o9RohZ`G`>*T|x8_#8H~zbv6<2ze%iGGI#0Jh7`rxxl6KZ1K?05~egz(NA1R z;}}tepz`6Mht84(u?E?EkkVN?cuqYXIRs6A(k|4^*lovKQ|ePZ+-oklYV_^D8M)if zM$w!o(V{zi<+#7#pYD}~v+*`biL_;i#{_(jmPh(mb~hv`qOlihLWCyGJmIs+l1LoA zxtGS+bPa#~JFcR?tG<7*^CKYQQfvf@<1hH+zjxgNpjxF*_n z0|>NU4@MyJC>^bwL%+-!2hi>z2!4dJ>pT7XK0(SRQnQz70b2Y#o#vG)t_#Z3%fz}O z8K${qc;k^RVvCzqF2|AP= zgWwNUSO8AM2!u*9v6{PF0I4xI=5~|gT2p-q7^JFzLY*zOC^t+V-7eE`l>?8F0*PxK z`vzxZd+&uwco!Sh@klZ?hfbXjKe}WXNhoXHGMXg9&vwq`kD!yr6~;w-Q_8<~SEC19H?q8F|#Tg*V+juJ4NBJg~@5$ zm3ctTHEX&5Y+?4Ahs+VG`0lz_LT#f+Z!9_!W}~KY9`p$*Zdx-WfzhGCjrs35>`Z)fJZ&VO}1q0i5pnrf?{agnAGO0B-Ca=A58N%5HeKR$`Bd;FMj9bAF606#;n#mklr#!c^^XwL% z;_?wTiDoK>O$fk={I1|!=+M9J?zYNU%s+7fw!d|xiSo|L+AR;E7SfI}EuwpnkXQLX z9ZsG!u?Ppi$*XjG8ojrGJ)?*KO|;?G%oV};6hNcUb@av4>7ZDtjW7t+y-)*} zR*p%P5#i5FD|k#lUv?BuA}36%T12W&J_6ox8V9I(-9UcgzeSjEnEY;z%FFFK@PFXLjN_(ZY_c^2wH@c&N!jJoU<5Lw5e1jN&29{jvI zHK*{exmpW{I2u=DU+kbvhEv;~JAfuTm_KLCuXclR$wdF;_~i$1d2*39G?|N~0rP;t zo5#_a`fd);T)!odkeCt-iU+(7moy2 z+ykH#NRJMq33Omk3c62imh;TG+l8J|mGsg8reZaN;cS~DMU7NgfY3!zflz%K)e0uU z)JB{lbU|iq9T5#A@+oDgXsR4>O!VWZLCz%97~>ej!S zw-eD_ZKH&(+y{*T+Tw$e6I>kL0eSTwKH=dcbGg7gMk&SdYQ_Ry8+IrHGE>E!rn<_| zd?wTCQuD(59z__(Q5)FmSSNGtLQ!hH2xLvbK4;w2+VV)A9M}sypA!~Ffv@P0%cN{D zY?IzjUQ*{v#iXRvo$B0~5~8?$~68yauVzfk%L7wp)aLoP$K_u@3(!q%6a^Mg>=TXc@63IAm$+M zik=2ky_^&oI-lEVNeC(CHp{DTq}YgS<-!+=Ioga`G9`gqLFiMS2>$A6Vu5y2aHUU3 z%lh@WTYzY~Nl7y1J^Yb{y_%GLSc5`LmX@5_4R`j=CW+bwa%C43l8RL#`bxCAPmVF<|iVd*H!Su{?ft%XOzQC&7r3zC}pg z6pRqB0bx+2GL~OY^!_%Gqz+>aMv;;D=SPFuFCo@<{6|>vo+;dYoNBR&6~2^jAuia24mZl zu5~nTMQCe-|JZc8+S52W`;GFf#yEy)@2!EWv)WLL)0Yr0lfln%hKG)H-*=?@RT;EioQ|su67vmYJkLuDQQWY}}<%OybA#ySXB85$l50gjs5k7T@T@ z16B%hXb3SOAou(Uwu*6q(vMGx8YMApg@|T@rC(_UzwJ?2+P1Z;HEQ9Crc-Lu zN`ts-4<@0nyp{uh|RnFC{Cq7-mO; zK<3ZLEks`CHBSyR$T;J}M9_-PYAL(a$f>&b;Ii<#@V@!nlb zM+81oE6H5)Sm^=hWQrS<_}(jjQjby9*4`nZq&AJf=*;0$Ht`UB+>&Z|ct0 zb_Zke@jwEtf*q+-bK4s&Fz}XAE+Xs(=GSCwm~kM&}cE zTEftXMCKYEvgVAK9yPz0oT>X43HG2?VM|Az*{|$2&^TuVfT8C2aNz^tseW6Ylt}~=6ao9Dh z>Ea&ri4Yp6QBi~XfE?~)S7L`ZGhM$2ll#&2RTi`!8_|V2vaSDTH1mGG9owYPba6}$ z^Y}$Qsd*rymlC=}RVr@0mXN2+#_TZnW8^-k-AMIf%W?3Lm5%I|Li|8}C~#$s&8p#L zG;YMPQmT(VvP&{hufXV{Rf-_+(;hCYx$E%;#OC;D1c`kkML8wfF!ThNMM`|$ehe!d zfB&OOL!rfpLr;}BC9mc!3GDzn_ed%z0`cleDKoECUa|Wf`KqD}-qH*>y+xvS^bA9E zj#UWubUfmC_Ze`azy5YL;fvERfH{#NfW;yw3ez0581@@MmUNQ`XP;nbII|&Q{W!P* zK&~4Jg%|CHAICknD39Xywm2qbTo2%9t5^sJGKI>12{FZhw#|wqYA(@l`2!tv1MsSU zo)WhFEy0*EQ(L5|3MJHrYWp;p4zI53R+`lxeq=Ys40-mg7q&2(x00;&7wWbW3_5WM z{epmCtBEG>8tKYYkw@{Q5qEnX;qZUQ?&Q94!bBzwSf*KUZ|xUri!H-RF94svXDu96 zRSLiAuYN6+C084yRZ8V3`ZBx58Gt(u56rdqA3gM@ca7~ulqucIb$LWtBMV(5QfkRO zIVW#l%E-KD%XgR|(FJT6t01zt6We_kN@_x&@x!}u!PvWnfg1KY=3BX`D5>!s$%t(O z5q`{&MO#UIB-*z3FTf`IH%jB=q52I09L< zCx|rc2`0o~k`~SzjfoM!fr_D%Bw~i~mdb|L2dKlUf^un?Df!eIMz|v>?|Vb@$)~=G zZqX%bLg)a1c~=vLSB$j169MBibm9w4L0F;THF!-IO-y8xT075t>Kq|6UJK&>wvliN zuT^PXA%Z~VeQ8yX6|Witm3`8L@lO7xMcu6mmra@6T~d&RJs!8eW>-R~!j*z$OM|FT zc(`1Rdny^5T9IwcZ^yh+TG;5+~-1q%>HLeNPJ zzE99JmFA!9MzQP@jz~Ob3*S(sEP+_H8>=397R~+4D@EOMHLwnHU@|m!@Q@jY@dO~& zCTdRrg4n-f8&#H0gX!mF9q)&+C2|SmgX?u+UPq2d`oGy*T?|0;GxW(&jrC<{HK_*L zWK@Yti*QkQ_#pwSoy63VW}R_~$ZbXUc)S)qKR~??GB{hSuadknjVpH_Jz$W|zbz>b z$7WwZJ!|-8YaF&nmc$*sKhK7m^r!U2{Z+?v~)> z^*0vfu30HXKeF|xHyV;t7XjqRv8@@+KkOBbyC5nvxf%)%&+~@Wm7WaiG90<99L`Fy z)rtpf-5}piqwOGynl`~JcY7azE3S>lktP8xI^?}8OW`^AcEVxH+eU4Qgu@jK*Hg>y z@yv{bf04_>ubf(nA=PdBE5cg5BqS$$wDd~w(?#wQBGKGJxUr7hBQ^dhK^MyA6S0u6E`cd;yP3`?s93 z#e|J~e4ftev;!VAXv|X+g3Z9fg>n2=kUw2dm~p8ZHQ&H9KbT72MT^Ch3%{Ml!sd?;nG8E54d)e6RJU9w)=w>~^ud=!`RemmVK{iZfBE z@_jPZkf_7(aVTK{fc&m=BL$zE*QxpE8CIQ8g-mnVLN-NhDfSE0dFdESnW%vV0L+2r zxa)##A7!n|si%IjQ&g#)fsceO?zI_v$C)#?Xag2V}htBziBhDNStfm4}T_LTW2m$X#C*GGy%&YT0T0eF$vk{j;E;$ z&bgclKgu^q(HD^3#z(h1*km{%G1MO?*3N30@vQ6H0u z=xD;yygwaixvshtBA^0`KE;}@farEZ3Em(+xSq;{%m}zQ!&^aIWyXppln!@SB=(S? zH|S8VK+C2~%_3NhHgzP3CGr%Pn;fJy8>-UC)_%QA>AjnF9DKh?=#zQVrF z4BM!SyfCq`mEVooXr9Gx^d5m*NY5=!ZlWMhtSlpk1x1^F?_B!6GP{boa@aIbHpFwd zcMj;Yk01V~8dv&<^pyfjiUBjJ3=D~oe(Vm}NlAtphrCS+62zIF*#H>B)xM1x;va0%fjkqsz(r`O!lH z;|J!2voa3bsBm6p*}S2K1!(}j6UK-4dM3ZM|kolA%M>v1^6cG|38aM$#X z(|}{U+lZ1}Nrk)Z?0l6be`hZihSVfr2V@W zj;59j8ox;N&w8UHC=??akzzaMJ~?4QOmy3KFL{8C@`wd%p%h)jNdeQ$F_URFdnk>rx1?-l>a1AVB8#q%mcEC*@C-*uvPf##Y-s(@+VSWll91w;}?p$CiX! zoWd+sA7wf@H)X?Hen)BNzH_vF|Ju5uvCrou>DBss5L~G{bvS?Qd98}&%i!gAa(Q*r zmy0wn5G(~sW%DG8eE`kl*Pe2%Hn=g26vA za}uSk9hU4AN>@|*j5@j{yZUQs2(x+U0C11iIPWlX-dOpFD_uj1gnMRzH8sFFO?#h8 zo08ilAHTgIc=~+-L(GeK$Nmq{Oyikh3Nx?Fl>vU)pq90Cx3!mwKCh~nv2qN`L_Sjd z^aSy4Jd==1WGm!DeRqPS@YSVNQ_PBA*DPh(v*#PNPL25bRv=>#ET^S7d=+XY^} z1UFnt{F7}a?f=TV6c?osGl@W?5ybuXhyQey$$TxiciOR4fKaA3Wx20lTS1+KV7__j zAy^qKA|WQ@duo6A6vst9KmGJhjqJJaB{BC>))M0-)`kW?qb*;m+UxYtH97f4ICMx)-}eKk^a9;yi_ zl3=|m9iPH(WZ;4mW{DH#Hw?+dfD(~TKllm?E?qxzs~8I-x*|-~J2IPf{X)ZZNkPzh z*clW+0$ZT(iF<0LXr-sN^1g z(1*s!DLsACaS zMa)#aS3G0g0!8mBl|?}k|gNLu^OQo?-F$J(MBw)p@D$hvyCvM^Q>;CQ2U z_D8qH%7uUFoZAYIWulH58IHcue3FW@$`?t-$O!D2&v1T{>sr9r_t}}%LM-EM3x2|M z1j8lT)I9SbbTlXlnal`(;MH2+Cx#Pe4R6+J*_f{!-%^k=dj!y0gb4)26*)?lle96h zV0xw$!8LpMhb`9bh{y^`2}d;pd&C^F zgc*OdX=`X6G7xN11tex(D$>O+qpD_o$ZR{UUH&;LV;{alY&kB@>O!mHuDu#jwn6X_ ziob%?vj`M_&C*6Yk_iHuoMm@mRF@Y+#iy@QtmKXW<)b3bq_1?`Hgx4YcB~@>lRE{{ zB>W$?SR9p{sS250(9S`mnN++*s`L5LPqZIE_DjbR9F^%+it6d3&P=%Psaw~(=|!+* z3Gjkb?s;sTuTKCANc$X%se?W5x<&AEO*F(O5gE+4*yG~_&>BXST?}(qGcyJC5s}LT zYLIZ;_<_mM(9rM@Ay*1u;Zw^%Xiym7k#|msws3=SvnvM*DNkPAT-8~lMVdYvA+{=r zd8isTw5+tGCOBHKn#}|yKm0%U4nFfJRvz0dk=4;AV$aMN+#Q~N^e7u(rc_Cv2wf^( zoxTr%4-QfWl+Xubiu6#ayG>l?JI^#z|>PND|&S{UC*T)zWmRP9C&=Gapq~ljH7?4gkc0j~RYL;+uj?cY$j( zAcWo)9l$12L?+890Gu}3R{cqs&`txol9q=P#v_~bW?w+wciP406W_qVqawD zm=q=^ZJVTfoARo}<@zm9_Srr@dXb2>7qXkd9sy!P@gQ6F92Otm1M~dV)k(`&i}OG$ z_6)=8VlLxd_O`;Cq$grsA}cUm>Rh`)sZ9BcaR?8w=Xv7Sckbw+1N-Fm0n&m|o&#&c zhCb30e(8eN(J)!P4)6Z>DeKi3O0HuJ+eBMF*4*SL%ZU_GN}zA~Ee`Xh^5j>oDHq}F z4uf}0+400J(~i;EB`QZ7&wYmp?FA!evxK#^vyZUYz-=BLkv{SWYHH!LL*n1^&@pmo zeALl^bF!ks8V=m*e)REkr(_}qYO%Cpy7mk+=U3Gli>>PP>z$-v1O5-)-%{am(B zNYZ0cL?jR!g=ku_6kU%@NhLR)hk)QC=9mrC!dkhf#5>RwVqc4uy9fw$5yF2<$>f6S zaBAN$<&Bh2avnI;8_vKZ);B5Nm|%|^P*u#&9984saC-AVL&+uHQWh78 zW~YC>d`o*11Ssz{Pw_=8e;L+oIDk(6ezWYsALu_PiBZR$qtmRF=s6dS=8B}Hc_UC~J@x>Vz zsc~I|iu+N_7EnYtBac<&55Oaui>AwzNIC2Q7&b;7LFTCM`V4j{^$eAS09{|3x9oqE z6?XuG25j6m(2W3DO$n@mEgIvHe6SUGO`XAqsE|yk^<2Vd7|QszUtjY4g5_P*8?D6Z{{pi-T8EH7XJ>gd4l z<+POVG@~R&%0Twl@t4D;wJt=e5~A%B;_})jqm7RBJ!4kJBjXZY1?sp+&m{Mi> zbG2~7kEw6zp3#V>=ZX7?eoza!e?I?CgC0riGOZGp97`Wrra*zS+J_~|{Ji1yy|TgK z6uvBoM^sXxp|{7U{Nm?k#PU_Pn9f z@~?q5UU8#@=pv`aE(u>Qlqvh|>iG}^F5LDnxK)leQatu%VTMoR_8$QpfL87X z&^Z6@Y>BL4kkP$byszp7G+Q==h8{xO0~@CapQms4*(P!ds=edvQa!yCcjT@>1a~Fp zJQiqA?52;~FFhcbX4+ZTrWx&=FIIx8K0?B#p7oQDFDKb9eRZmen~LsAUg5IVjt>hkEDH@T8O`Eq<8PQ*T zwIWJ$69Sw0si&!2-f!I>U4}0!6bvRIYep~KCl3pOE)se^x9a|^e zdbGB16o+>V<|wzFz}9nO1%9PBc8S5IL@56HRe&W4`sVD%MYJWB}|+L!>FhpIwPmYbQZa$a=7ttArP~rkbPKa03paRod$Q=@U8tK11Qb8ByWmBCyrcEk~){FT%#Qz(AsxdkS3RM|mL)*9-2 z94X75idfTk9Gjc#UkpoZ%o#9U#J`h%oDpY}JU*8Zn0){BX8}WFZ09`MId*Q-3Gi_a zRiE$wJdsv95Wy{JMG*-(2l6-EDZ&G4j6+0S~z;I*J zacC4IyzXq9)f;*+ks;rq z5hi?vbMM)q?tqjWmRZ|r9qwHPyUa@mpm9Wu<(Zx!ry|1)$ZhRtU#8FsvXb)oP{A3cH(cB zL|OTRa8EM9r@35FU*p2?-%jDVouhm{!4E*>ZUY*%dQ(!?n5H?Zps~CFa zk7s>Rkf1TQZ$apzauHfxXSvs$tG3^mU23`KYyN+UC3vb%CmnjUKE_$~mOTKK$c(7= zIWn2%pg%2XG>m?~b%&zQWbG|zQ05uMmvmuLN_EWc3+?&qCVywCeBRbx>%H&nlt#iB zwf*tVY1|f}>ZMBA{Sj}g#N40JPPIYM52_wF-EIeLcq$If+O8M)y01N&esj^U(x2+_8|BMwzF4`VBufNZRN9CHi;cc z4GV}{q#X2@;4tZ6jQs|(E1WmijUGx<36URYX6?#iBjAKcX}MI#AhMn^K%|4ai)5`m zs8j^6y1MTy4Ul$>CP*Y)5T&L0mhP=$C5q;@(KSBtKVQb&0b67_M(UiA3a1f(C`l9y zN*zG0N<#Lxzv3OT>l%`ezWXQ2YU}}<%wCL%=}6zr+n}RMfwA`^V?_Sq&2v0OX@beQCC)&rx^x}E*4nDT&%gM~DTa~y}xYGK;tgf&5FFM;0+1v5V)EJa`)dAAa!dRbAPuCv(X~z9AA+Lh0ebKl&lViHE*pW- z=~Kn~LgJ_p{ic?Z#FAEW&k<-f33~%yAykr5XE@dj?W3cjlZ!9&e@dcJg*K$g$-s{u zZF%sez;Zf(=Cdgf)Ekedb2v{aYbgK_bRF>koQx1jQ!AOm5+|sLHD2k2svIz>sMRyj zrxFA>IX->|gcfk^7bB`Lc|4kN%9yL_E(Ok^HzfEh!A|t1ZQvQXIRJ}HvP?phu+e9k zS4@2U#^R$6KtOtx*GxC+Emo1U|Vw0r~dy2EaA|{|1i|wCq2l z=_+stcY;ix9@?S|FYsvl9%Z0)+jOH@Qruyr-2_L`0)z=Wn(6RcPSs#>lwtO%z-~*! z+Y+OHb(Dt~RGb~Y%>njs+GB-xVJ5BYAJBH#c$uTE>Gs=qF5c$FNY=)Av}?EcM+GMJ zau0rhtMmov^KD5^ZUV{OzJYW4t9M{A8*BaDMrXjt+cfgl`AOBJv2BhI;FZU1;rY#| ztwh~trtl}@oF%=-EFt*}y_O^Rd~QXcoXEY#^thhD83-!xN3)CLDS^3b0yld6*K>vG z!#ev!rhjP>X2r3-SJtNJ6dlzvbV)0z5~bD(R9iy1VOfVyNQkPO9^*+h6S_eJVBW8| z$l|_aoju8n=AAj`UR5iNF1m|}`P&ql4c(MyC5juZ6knm4h-76{p-PBCrp()LN9(RQ zOEOmYB=&3I@yY~fn|bna&moGPsGxCZRvVAL(4X>s^V#03v1ZHMmQ_Ega9hf7@>073 zYad4kw`m1M;f<&K71^I(^#0Aou?tR(?fFw&VjUTvFQ=?{%&E+^RX*nj#gN^>>rN7G z!A@T>W0Vjm=m^>+)RAwR=@PjkZYm-BhEcO__5J9*Eiww)>M!}Y`P*J}%a<@g{i}**HEAk`0O>zz@cmsoN`Aa zD5s7sq$B&DQYL;JB70#w_)KNHo36Mbx5~@{u=Xu7-L&|l&ThQ87joV$>w&Jdvc^TN zz{kIEw07B{8GV{DsruWS`9*BIg~Ubk&<`3vkJy=mJi-q@-N@oAhrGe;(qRF~dWMU! zfr|nhrG(L>5V|$;$}o{3-qR^Z$7(I5t(TJ}0X1pQdMbxSNzn1cVS7Oh4rz|5{Ws{t zvJ5B|rHz_pm)fRoR-IQQkpn)DOJP?Fpu9|TC6N1lz$ml0lodMwG`a4jF_VBAg0kMl zdWbeTH!LSA?(#S%o+ZLY2uA}O*;7gz-;$CDh}$}fFb}LLIGc?Emf?k0e zAc)Vq|HOfW*v1`c^iJhbI>4W6aTPn^z>)E#P$eLs7T+UR%fg*0+{Tj7m>$8a1@3TR!DDm`NUNaKr=o67RRxe4f0eQJ#^>s z+vC(L&5^72(zVAx9K-fLCk`EwHH&WysJp^!I+q0;xwsPvALTx73OGj2a(KJWBBzPa zw8t<2UJ?}l&6H-#4~(Eusn(BbLDf!6=N_uoDbXRh7+PXX5wL;0t@kovkN1TqnG_x( zgUxYJ$PL$VI{^@{E*4fle%;0d^P<&DpO2_bW}&A1(mZ@@mzR1Ae+d)M0dx87!jrmQ z6bMr?0985;&@9KYz={HQ`hb}TZI@)Q4_a<$?6bQ)!MVlR)6?KMZzV|kUv()e+h+m?85oZq&sO!a+oW4kEm7Nf zuU1rFvVmY^EcW4^qWMoa;e3=Mv$%X7R_o#r9A?7#2{k3_CJ@{Pky`wu3uK@ZS?chv z;7#|f^f}j!86gv*ueiw)a59@%Zre7Ch>P(bBuT=~fO!sWC&7Xe-M5&-$ z9f|`GiLzh~iDOlaFo%L+*D?Wx;k4B27t6T=% zl|OrpR70!N$1od;dWcH^GV?@}FnoMvZW~6oe`{-$P1RJ}kGx`$G-7MDWJim1)~Xqd zn+;nN_4kw4Q=AyOYhCeX+$UvD&Dp8!6g|>+A1JHkawMVw#d2!X+8M#PWO>4O{K^bG7GyOMbZ7ca?$l?%dPFW|%6x#dQ@Gsl#S!^9Ah;)?=}4A#~OwXk$g%1g1qXOypke zQ{J$Wbg8LpXE7(^6-sWV=4C2pcNggKX_EzfQ!ZVhd%PX1Pqgir0+LH6T|4+E- zW#@9!(Zw4@8uRoId_2C{%X|fL<5X}|walqy`9-G2cQGRmO`=zDFK2p@&*%S&e}`mg zNsbqsF|W6l*z^d-E#z!9i}onSytM$&?m-g(l_rc7LiU(*^-p|C`>D$2P%jx<__hRP zfJX*@>7mZZ@py>sb*x=vvGgWP@}qnt2_t3BqByOa;F2?zFsC+M3IR>QrT>m)pB>1M z1O+4n`Jafglkf|T;5&y#^{_%4)kM}y0`7tk}5w9 zd9+W2p8^l{N)07vkb2l=%U>clXKe29`E^%u6 z$@l`}e4QmBrO%ysE#I{?r}`SJ^#Q`9rMO_U2x?k5@%wY}LOVfjBayF1+!;6vbUOpA z(`onwSF%XG;i33|GyH%fw16@FgUyocB)`})&|vRCc8XHfiYdaFom2c6TWOvZqPy{9 zqrPg6e2shuU$K1gocuohF4+lcbI^*o?`PMw=kT_y(@>f|tQWax6&aLkT^&iO9bfP@ zoYuG`o_?TD=KIeuhWqqWWyTe*$Z#NsdKhI{p6JP@ux`fJw1O@+=pI;;8E6W&PJXvhgn|!Gh{NC zfC<2Aiwn5q!(R1cr+E5-mH9H&c~Mk=5BK(KpRS-L+v1OH*R}qOc>N&HQl#q~46_A& z44uz#lY|l<_9$!3r7d=1zakXl688r8l6_rAFN^z-Y+92&h^+8iQiot9^mE3EDdqv{ zW4Od7)X(m3|EIm^d2s%-V(Lmd7qGBNO#Ey}o~Mb@p7{y0?D*mOpx*-y6bh*HQz_nE zFYL@T&H*|e#o<7udzf}?k1s)4yYVl9IGll~UfXg;NuktHTcR!%fKI7U|CYO$z=U+h z3J!!fkpsOvsC@61-$M|@t$@fBYOsjLvufoqPik1c=*%>SAO8j;$%UDgfD*^;d*dq6zCsVdrGTlryz1dWzb(y zww9Q*R5?LRdn#|)k?p)r62Mc(j^vF)Un`s=YbW0lG*Sjj?8psM;#w}Nsi^+k^?1FD zPS8OB`?D_d_+szxkJ?9XPNGO1-`0tFhv-Qdli2CtZ~_cdfdtV34SxLU8`E%mFo`9ZmJ(7LR|>p9f9{d3jH68I@{%XUptl z)4I<_uw0SAlKYRt@2+JYvf4S)w=;|7F|z>90qNrDXd|z8bo2*N3KkAk_)UF96f-GR z_E_dzQNsljX`Nlkk^o!ig&0ty^p`NF0TIbAt}*8gbRwZg3dw+b|LB9hLC2L%E8u>a z({LlWp6e{Wpfx-@H33*GuT1rAe;m*WE*8Ylt9O)o4~h*P#{UhhLFrO0 zy3ekpzj;M4CA}(hbR^2n=0?uH#`30R7}qRr(^-7c@@wItLw>El(`3z>r5qc0E$`dR$AFYNf!aog^gFgkh5V~J5TeuUUo2yUY*pSo?NE~9SW+e{gfEaYEmwDpXXhv zUO|Kn`akPAM@9N`CU5nRum@};fe73d(B^_ zmh&~*AGgUl2rOLiSy$~$Oey6VO2l9s%5r2o!G~Op4k(7~H~<&xeUqjOb8(97l^oE#%90e4j}(HCww zr(J?6p+Ml5#12Z5`yJVKBpQr>ftYaD2Ln(g$N5VuCqyWJ%eb*`0DD*8vcIFEG%KaW zbH!gGtJWpLt@&mea(}3YG!fDxMSfqu2_5v>A>)VzvK|nh1h==lyWvE$UA4f~Z)q=f zO}d<_{p?yFjIRRTn)h1ex7u*M!O?LQy2AX-f`n6kWC83nV}AXZ_)&s4GxT~9gXvqs zY}Ld((XEI;qwFaq6X}M&9&b+hEVIj95kFDkPDfPRKsb`WxAPgMdo2+OMpgn((f2-G z!^qT>7J}DrWoE@_o+3f?amIOu;ychaw(q)>!9Za4L`(A&f=T7u&2m;TS32$xCXoRG z)i}(Ti{HCXLO5n2IuR8`_Xv&P_0I#j8uM7ndGa*31_^TjDWCqVcD0*^sb*jmb0f@l z5Qqy-@Q=pa$CWJAUhlw`1YWM6`Xtu5YyY;t@!tlSyN?O2@@<+lz>UA>XG?$*{jr2v z@!*)ofLG*s@7GLkb{thMT(B5raj@*FEuQh|G+aKq7^d)}j(FkX^N6uNP`HER_zQL< zF|i|iazRVr#jS4W&kf6+FI+Sdr&Zwr>^=n_G3H(kEj2U7ZJ9%Lz!!&I0T zay@0oE0gW16CfHir$i-dus1@M+_5m6&e~x$}xLatyoUU34WOU4|43&VajDQrfzK#C{th34NG zr7qY}0=yV=Mc!N?iqnHR8Uf-6|C_BI{7)-`pB3!K(RNpE0Ozn1AE%NpNb%^h+iDX5 z5{d*VPwIz1Bhpyn_&SqK3LV7Qy|NK!*UgjgA{}Bk9p4`g;K26z(~4!B0qvlZ*}`uE zgs1on?DW5kd<7jFrOcEb3kHrbXU-H>6h}`mYae#fHG1q3hes?Bn*klH`UT|YX7PqO z&QE*|hiOjfH=d(%4bm58y(F?@?w`7>2`1?T;}nF+;C&z{*JS^8k|U0 zaP`JnlY~$0zoVT|iw+;MAj>yFo7ebm$QU4xAa8BNhZgrDY+4xD=2j_wLj#lBgkOPu z+_A|eJV}pmx7rPPQ$N=--FMSz7-ETgZAGD2&spHc{fmVDdOKbcn2NZ9pW)-BVAgicY!k@Dr2}qiBy3{nnnCLgeAKk^B^bG1o-tM75ym(}c zSZ9_#FH-8Ny48lBHJAbP#KXFHL~n8J@JlGktPdDjA6ozq{wxZeUg^4TT# z>amT?r(gL9b_2(iFW~3yl(LJ$-1$O{_^rcg=ol#_&&!_m3nxlhr`f%mz-;vMulnDI z6Q|rhBm7_6CLTd39!r!YY8lFjM^>IuCAh||Xe>CVm40ZzdfH1vZro3;S5UibxYC<| zt&&CoBmn#`eA5yXS|MjDsy_HUK}Yu!=d2KKIyL*PQg&-j@zB_&v6HuhJ}L=DWK}0F zcGzdhC6#v6t%etw!{jvMOi`c;u={q0_g1D;Qfa-3h=>3)rOgyBc92%91Am@@Q19-T zXhF%Q_RdQTq5?#Q7%Mdsl4*D2Py=;+)}P(Y=S5IjOoXU7z0+}v<9oSJ>cG2mdOkEx z7Oq_8VuJwpT@OF)%7jb7Ko4=YW$SY1ViV$Y3vIlL^B{$d6*-FL8lxeMTozDbkK5(e zP34IG>`|UJjHaA`?_Um}y(4KhxeCcx4{S$-HP?%xq?EtaCJ&<>rj|Dn^K5kI`j851 zT}2OKe>6Wo#A#4f!U(B0SiGZF1qOiueb96#KU)WbX=5Oa_+C(R_$fIb&uHDL0b4=i z+Hx9j*;@!64f_&rHM9pXAAyAFS`PI8er9Ho9;AhoQP6;X^%!Y8mE?Y^CWt~-KZFWU zOV3frOmzVXTi5_>O?jN-54L`Ic?9>lAAxvJEh-_Rm?b|1d{NN1Ts@RnHIWAX_BYG+ z8R?`yz*2o{?^->wFh5AMg6C3>t-Z(enIc*U|!u&cuLLO2G=<`0tgb)ZK0tS6;Lhhen^#RqeZf8Q;}Zx`g+B zq#wlv=u zA)4?G_3G(NpWou#YXqTWrad-EYW7#w7hfm%2Sir2C3tLch}QHM`Q^Sn#ogHJB9E4- zqEuGGTQC@sw&%(jH=-^gKS8@rT$CqlOrYUtNl8b9;l|8JpPOdu`={H#v4GQq(=eZo zRS$Nd6UwQ!xM3mOyjnOsZZNnkOa6>>HdCPUW)Mpu(~BFvsk zYw<~ST@UR0@O8@bMQWA5wKTORKDoV7tC@L!1{Iv>8hwdsGPmE7du(ZisD}pAA{^7z z&L`Ox&&&!d=u%(@i`n>R(MsT?VkRv4RYmy#!Xs!|+m7UF&ro*buhu4SW?{%)S=g>d z^xQVnG;~t!xM1Q+_cw%L?0MpCzfXdsU9bzqw2!%X+$reez4VeW}3bbk}ed#2srAT7=B}!n2l;gxjLZVxg`T5MH82{d}=b~Mdsg`U8>8t=PY}A zu!NCeWO|Pk94Cu}vxPdgvj==F#yIyjokQcNPQVLFLUhG)a^SQ`eG5JDV*J9Bv!ptH z%~m82H6=4>EDn2HWDb_s<@v-!a6(dp$j=qoo-A3j=t78`7#S+KyeD)AZ_KFBkJ^Z~ zsGcrFlDa~)Ar2LRR`ZKVW2{CFQTWg{3MbgEb#l20A8YL-Fb4J;SWU-d>j}L? z_k5a(DJbA!nMzh`L6ap8$HqCW3v@3pf@)WPo(sPIO8jpbm9g@0dt$(IaEGEu5hGGt z{2Is7eq9`JrPY{qnq`EyOCB!gzwpu8xLbBaeUj(J-7H6`nm;llCJ)SqnjGl) zOA97hmZ+O4!8CnIFUPT8sO>jhu^$KzY+>L@_Te}8Fpj2yE4x<|l-e&jW2=!70+Y() zXOqHbJXUV-q+8?IwD^CJbn-wNmaLZIxtTL2CiKv{8ZDt-b~XQ7H}aqTM#aJS)HB5iK~iSEvr#+uxP^ladVH+~{?a_VI8qK6?`__}kIB@9h7 zqeJY`m>T`22>o6&hD)H<+C>=w;qD7biAGSL2$KI^Y8jVAazF54dX>**SNGth+3jgF zsl+D|)e!DT(0{g|j-I6i>f>2XZ-jP@x>aT*ws}^SQ9dIP{PYh4iY9S-@w4LSeU>Er z=zR5`(@S6^TNqD-GnL++J=+Q0eXNi}r0AgEoIzebm1~$=qKiE)@>*_B>5cPQ3`Qy^{ zwStjsq86o}j@#guJZm17tySQu9%c=kRvD|IijU#!0VMq8P+gWZPZJ-TL!1;nN@8W$ z0tdq_dV!Emv^`^BxHEeoI-l#dF4PtL*jJedhh+X}a()+=fO*4k30K`FklbEW4{{J>>~-@<~&Z7`3<;qlQ0N ztR*tJ3N%vLtt;E;Sq$J;nHJw0+F}&M&n-(*c8W^< zm~CZyN&%10T@Ynu2ed(D;!82!kEQ*=Y6yn?mxmHr$(h9ujS252mA9WA{RrUO1gcy| z4)|w8mdn+96>+XjcDYR4RVn9Y2sR4!xlFcy2a!G_&hvX?^bNB{ueX9Yi9yK|~Fx4EmWiL&t-z7_* zrPZ)zd7QsCP!EakKAK$nKZ4TZg>lFZq&vELk*Y;}67Lf;6NCuvkCDnD*i*hXYtV6J zxcZ{vpMh%^hhacL-x9OePbO@igAmYX7T#y$jPk~|Ct(n|W4h=PMNFx((yvgNN=!xg ztiX$W)aPx4rh=RC8mD+N$WbuSdK4^-g<0hqMjOq^7h)id0nE%HCJ(f>vuo)@8-R=g z!WykR7nqojK9?fL)1o%y)T2QE0&j^|owbQRrlRAW>{YiCC$X)kVd?1VpsWC@sn|xK*t4#ZJ^s64#mT4tL4Mt>nGJVGR%p;2wmFk7 zjRNalykCo=#hgJpb|4>Jt$(>7U}EwSg?diF)GgH39+~l2k%5V0!c&WSG9m|W!Wi;$REL#A zcyOvQo_Mm7H4L1jl%dEuVT6LCbwuHfQ;z71Dqjm=ywKwYme%Xvw|ltN0QYQjl+S*U zp$bgp%8l$1pdkWF!lpWwQlJ_X--Gx5!>(rMoY5ou5PFu*t?> zVtH6%mBJ#rXcdnHJ~Q7wg(b5HZ!*|lQ(^>P|FJ!|ZVZ3}2mFDxkaLPYYu>vjoIs2`)XlNPO{(`~;pvNO*d{<8*t)LWOl^|3 zfj3q7f#>wbPM=PRXv#B5Q zzvbEoRsc`D!r7l0)x;Ls5{66^)r$I1l45kEy0*mMeE9-1qVT028Law0pgarUK?3r- z18LdZwkPQIlEMK%e|+=q^m=X+=#(;*J5^v+6qVWn&|_M5Q*FeEvvXbUXJn`b*jMH; zclbpjD`R+l(@049Bn zrfg(COV;&-CKi72oi@>FgSS!Ev#!)BwS%7TXIcj{D+0)eaprAX66*>JJ>shLj-;(v z2G)I+<#$=#QUCCLa|VQhr_K4!n#knWOHg)UN^V6uvAcY;uj&VA`%%?&^wpBue>$}Z zr+O)d)Qli#v_IEHm-MR;KDS4*{tA+H@`FZlbLFZ5X9|Ni^Sl2bqzkaAnAN0j8oEIj zewmI91BB+3<%v9co97zls}B6h;Szz27P|Kg?{Qh{a}P%2z6MlaBK*bze1?y~bQCZ^ zZg}#7?9BWE;=%99b75~OWj%}sOuTgd?hl1AniCr^DlOIs-`ZugXunECEn-H;+`sH^ z_r-x^@%Q5ccKr{>u*kf56`zji2JB@Xtt3b@e8?`LI#){-3}GUXxY_4SbOtfuX0&`# zXebQ8xQS@Vqk2+-l(yA`@)&sMN-c z@&c}sOSs1i%ss5AqZJcCO29XwG4djJ4B~RXV|gVE=#W=jo>U-Zo{{KP_V(lHuxaxl=e4K(OPpcNSCG*>H`SF4_&)sRu1mUtVNgCp z=wiA5K2X9SN4_n6VrmPNM1UBjEW(SV2yp3F5^sKX48^E+I&4ki_)drC0Pmug6GCS; z9JAfKZd}#m@jzI?Ef>iMM-8QAr%30Dj zNnuJ~J=oB)nl@@_OjP?-U^B#_Jd8sz2H!c}4%o@!Ec?h9~%}a{**FJd4ln$(~ zZ2)^xzylQ8*j+=W4#1qd+`k{Tq;r}L~G?(6?OV35RG=zHeo-N{u6ZySZw z-GLpWCDm`g>s7~LeEzBeB&Pb^lY3GZlF=bu%`vdYWaI{58xB2a9ns#r?d3J^3N{pi-fg)T7fWgNpM$1yy+1fV@)a#QK9!9f zi&kR^k5%;}u$!Q@`v4#z)6udfl4KE{i?j&^i|HaGFgX2xRh-|lUqCDp!SiGe{ zn24Xz-~=w>#QXnbX$mPfjWDr?Znh(@$v1u6|LrN$UX`k5U4AOfeCxlp=DzPf){2?5hsEMwnlAly ztZR9B#8zw{046v!_CX*H{M_QC@C_%`ViZ2NA+&TW)k#$`WGve8&6wB6UFdr8fW8O# zX2417{`5z+QzWDR@}Vg`4Np5C?KFmAPv!j0SV@Dqv{V&`DGP$(ArF+MwnH$0Awv6awLaUsRKGMY@%k=H73Z8 zfZyY1QlQ>n@BvxeFowCYI7Lxh$oc>>YbvrL>SQP+mrcGbeYbOt{=FM&wkyVQV_Xc= z7|m{Y+LH|uxZr8akTCPC{FQooe2d5;E+~aUJq_<593K2K%e2$Qeark$rG!gQ18HR3 Dtp-C> literal 0 HcmV?d00001 diff --git a/MikroMaster/20260512/20260512084001-Config.rsc b/MikroMaster/20260512/20260512084001-Config.rsc new file mode 100644 index 0000000..a5eb447 --- /dev/null +++ b/MikroMaster/20260512/20260512084001-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-12 08:40:02 by RouterOS 7.23beta5 +# software id = A8L5-07YF +# +# model = RB952Ui-5ac2nD +# serial number = D3D50CEDCD38 +/caps-man configuration +add channel.band=2ghz-b/g/n .control-channel-width=20mhz .extension-channel=\ + XX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-2ghz ssid=vados +add channel.band=5ghz-a/n/ac .control-channel-width=20mhz .extension-channel=\ + XXXX country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-ac ssid=vados5g +add channel.band=5ghz-a/n .control-channel-width=20mhz .extension-channel=XX \ + country=belarus datapath.client-to-client-forwarding=yes \ + .local-forwarding=yes name=cfg-5ghz-an ssid=vados5g +/interface ethernet +# same mac-address as wlan1 +set [ find default-name=ether1 ] comment="WAN - Unet" mac-address=\ + 48:8F:5A:8E:1A:C2 name="ether1 - Unet" +set [ find default-name=ether3 ] comment=LEN +set [ find default-name=ether4 ] comment=NUC +set [ find default-name=ether5 ] poe-out=off +/interface l2tp-server +add comment=Server disabled=yes name=l2tp-in1 user=vados +/interface l2tp-client +add comment="Starless 2 MikroSPb" connect-to=176.53.203.171 name=l2tp-EoIP \ + user=vados +add allow=mschap2 allow-fast-path=yes comment=Starless connect-to=\ + vpn.starless.ru max-mru=1280 name=l2tp-vpn use-ipsec=yes use-peer-dns=yes \ + user=vados +/interface wireguard +add listen-port=13231 mtu=1280 name=WG +/disk +add slot=tmpfs tmpfs-max-size=22369621 type=tmpfs +/interface list +add name=WAN +add name=LAN +/interface lte apn +set [ find default=yes ] ip-type=ipv4 use-network-apn=no +/interface wifi channel +add band=5ghz-ax disabled=no frequency=5180,5200,5220,5240 name=5G-AX +add band=5ghz-ac disabled=no frequency=5180,5200,5220,5240 name=5G-AC +add band=2ghz-n disabled=no frequency=2422,2442,2462 name=2G-N +add band=2ghz-ax disabled=no frequency=2422,2442,2462 name=2G-AX +add band=2ghz-g disabled=no frequency=2422,2442,2462 name=2G-G +add band=5ghz-n disabled=no frequency=5180,5200,5220,5240 name=5G-AN +/interface wifi security +add authentication-types=wpa2-psk,wpa3-psk disabled=no group-encryption=ccmp \ + group-key-update=1h management-protection=allowed name=sec2g +add authentication-types=wpa3-psk disable-pmkid=yes disabled=no \ + group-encryption=ccmp group-key-update=5m management-encryption=cmac \ + management-protection=required name=sec5G +/interface wifi configuration +add channel=5G-AX disabled=no mode=ap name=5G-AX security=sec5G security.ft=\ + yes .ft-over-ds=yes ssid=vados +add channel=5G-AN disabled=no mode=ap name=5G-AN security=sec5G ssid=vados +/interface wireless security-profiles +set [ find default=yes ] supplicant-identity=MikroTik +/ip dhcp-server option +add code=12 name=HostName +add code=119 force=yes name=domain-search-list value="0x03'WORKGROUP'0x00" +/ip dhcp-server option sets +add name=HP1505n options=HostName +add name=StartLife1 options=HostName +add name=amsterDev options=HostName +add name=MiTV options=HostName +add name=miller options=HostName +add name=amster options=HostName +add name=garage options=HostName +add name=domain-search-set options=domain-search-list +add name=VADOS-LEN options=HostName +add name=VADOS-NUC options=HostName +add name=MikroNUC options=HostName +add name=master options=HostName +add name=MikroYellow options=HostName +add name="=\"Client ID\"" options=HostName +/ip dns forwarders +add dns-servers=1.1.1.1,1.0.0.1 name=blsp.at verify-doh-cert=no +add comment=Kra dns-servers=1.0.0.1,1.1.1.1 name=slon2.to verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=slon3.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=slon3.cc verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2web.at verify-doh-cert=no +add dns-servers=1.1.1.1,1.0.0.1 name=bs2best.at verify-doh-cert=no +add dns-servers=1.0.0.1,1.1.1.1 name=psrms.is verify-doh-cert=no +/ip ipsec proposal +set [ find default=yes ] disabled=yes +/ip pool +add name=dhcp ranges=10.30.30.83-10.30.30.254 +/ip smb users +set [ find default=yes ] disabled=yes +add disabled=yes name=vados +/ppp profile +set *FFFFFFFE use-upnp=no +/routing bgp template +set default disabled=no output.network=bgp-networks +/routing table +add disabled=no fib name=To-VPN +/system logging action +add email-start-tls=yes email-to=vados@vados.ru name=email target=email +/system script +add dont-require-permissions=no name=fetchCustom owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + /tool/fetch mode=https url=(\$GlobalScriptsUrl . #\".bak/mikro_bak_rsa@10.\ + 30.30.86.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.86.pub\";\ + \n#:local Script AM-setup\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n\ + \n#\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.10.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.10.pub\";\ + \n#\ + \n#root.mnuc.backuper\ + \n\ + \n#/tool/fetch mode=https url=(\$GlobalScriptsUrl . \".bak/mikro_bak_rsa@1\ + 0.30.30.81.pub\") dst-path=\"/mikro_bak_rsa@10.30.30.81.pub\";\ + \n#:local Script AM-GlobalConfig;\ + \n#/system/script/add name=\$Script owner=\$Script source=([ /tool/fetch c\ + heck-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \".r\ + sc\") output=user as-value ]->\"data\");\ + \n#/usb1/mikro_bak_rsa.pub\ + \n#:local FetchFile AM-DOHCert.rsc\ + \n\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/tmp/\";\ + \n:global MkDir;\ + \n\ + \n:local FetchFile Binary.backup\ + \n:local localDir \"\";\ + \n\ + \n#\$MkDir \$localDir;\ + \n\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \$FetchFile) dst-path=(\ + \$localDir . \$FetchFile);" +add comment="Example add WU servers to AddrList" dont-require-permissions=no \ + name=WU-add-to-list owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# Syed Jahanzaib / aacable@hotmail.com\r\ + \n# List name\r\ + \n:local LISTNAME \"windowsupdateslist\"\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"update.microsoft.com\"\r\ + \n:local TARGET2 \"download.windowsupdate.com\"\r\ + \n:local TARGET3 \"download.microsoft.com\"\r\ + \n:local TARGET4 \"windowsupdate.com\"\r\ + \n:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n:local TARGET6 \"wustat.windows.com\"\r\ + \n:local TARGET7 \"stats.microsoft.com\"\r\ + \n:local TARGET8 \"mp.microsoft.com\"\r\ + \n:local TARGET9 \"ws.microsoft.com\"\r\ + \n:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n \r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n \r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4|\$TARGET5|\$TARGET6|\$TARGET7|\$TARGET8|\$TARGET9|\$TARGET10|\$T\ + ARGET11|\$TARGET12|\$TARGET13|\$TARGET14)\" && \$type ~ \"^(A|CNAME)\\\$\"\ + \_] do={\r\ + \n \r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n \r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Add Hosts DNS names to NoWG addres list" \ + dont-require-permissions=no name=Add2vdsina owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_Script to add target web sites DNS IP addresses into address list\r\ + \n# Tested with Mikrotik 6.4x\r\ + \n# \r\ + \n# List name\r\ + \n:local LISTNAME \"NoWG\"\r\ + \n#\r\ + \n# Web site names which will be added in address list\r\ + \n:local TARGET1 \"comp-lenta.ru\"\r\ + \n:local TARGET2 \"ok.ru\"\r\ + \n:local TARGET3 \"vk.com\"\r\ + \n#:local TARGET4 \"smtp.mail.me.com\"\r\ + \n#:local TARGET4 \"windowsupdate.com\"\r\ + \n#:local TARGET5 \"ntservicepack.microsoft.com\"\r\ + \n#:local TARGET6 \"wustat.windows.com\"\r\ + \n#:local TARGET7 \"stats.microsoft.com\"\r\ + \n#:local TARGET8 \"mp.microsoft.com\"\r\ + \n#:local TARGET9 \"ws.microsoft.com\"\r\ + \n#:local TARGET10 \"sls.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET11 \"vortex.data.microsoft.com\"\r\ + \n#:local TARGET12 \"vortex-win.data.microsoft.com\"\r\ + \n#:local TARGET13 \"fe2.update.microsoft.com.akadns.net\"\r\ + \n#:local TARGET14 \"statsfe2.update.microsoft.com.akadns.net\"\r\ + \n \r\ + \n# 1st time runner, check if address list is not created previously and a\ + dd entries in it for 1st time usage\r\ + \n:if ( [/ip firewall address-list find where list=\$LISTNAME] = \"\") do=\ + {\r\ + \n:log warning \"No address list for \$TARGET1 found ! creating and adding\ + \_resolved entry for 1st time usage ... zaib\"\r\ + \n\r\ + \n:local FirstAddr [resolve \$TARGET1];\r\ + \n\r\ + \n/ip firewall address-list add address=\$FirstAddr list=\$LISTNAME commen\ + t=\$TARGET1;\r\ + \n\r\ + \n} else={\r\ + \n:log warning \"Previous List for \$LISTNAME found ! moving forward and c\ + hecking if DNS entries can be added in it ...\"\r\ + \n}\r\ + \n\r\ + \n# Check DNS entries and collect matching names\r\ + \n:foreach i in=[/ip dns cache find name~\"(\$TARGET1|\$TARGET2|\$TARGET3|\ + \$TARGET4)\" && \$type ~ \"^(A|CNAME)\\\$\" ] do={\r\ + \n\r\ + \n:log info (\"start entry: \$c \$sitednsname \$Buffer\");\r\ + \n\r\ + \n# Get IP Address from the names and hold it in temporary buffer\r\ + \n:local Buffer [/ip dns cache get \$i data];\r\ + \ndelay delay-time=10ms\r\ + \n:log info (\"1: \$Buffer\"); \r\ + \n\r\ + \n# Check if entry is already not exists, then OK, otherwise ignore duplic\ + ation\r\ + \n:if ( [/ip firewall address-list find where address=\$Buffer] = \"\") do\ + ={\r\ + \n\r\ + \n:log info (\"2: \$Buffer\"); \r\ + \n \r\ + \n# Fetch DNS names for the entries\r\ + \n:local sitednsname [/ip dns cache get \$i name] ;\r\ + \n \r\ + \n# Print name in LOG window\r\ + \n:log info (\"added entry: \$i \$sitednsname \$Buffer\");\r\ + \n \r\ + \n# Add IP addresses and there names to the address list\r\ + \n/ip firewall address-list add address=\$Buffer list=\$LISTNAME comment=\ + \$sitednsname;\r\ + \n}\r\ + \n}" +add comment="Flush DNS Cache" dont-require-permissions=no name=\ + DNS_Flush_Cache owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ + "/ip dns cache flush" +add comment="Certificates CloudFlare, Quad9 " dont-require-permissions=no \ + name=Update-Certificates owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \_CloudFlare\r\ + \n#/tool/fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobalR\ + ootCA.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalRootCA.crt.pem passphrase=\ + \"\";\r\ + \n#/tool/ fetch mode=https url=https://cacerts.digicert.com/DigiCertGlobal\ + G2TLSRSASHA2562020CA1-1.crt.pem;\r\ + \n#/certificate/import file-name=DigiCertGlobalG2TLSRSASHA2562020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n# Quad9\r\ + \n#/tool/fetch mode=https url=\"https://cacerts.digicert.com/DigiCertGloba\ + lG3TLSECCSHA3842020CA1-1.crt.pem\"\r\ + \n#/certificate/import file-name=DigiCertGlobalG3TLSECCSHA3842020CA1-1.crt\ + .pem passphrase=\"\";\r\ + \n\r\ + \n:global GlobalScriptsUrl;\r\ + \n#google\r\ + \n:local CertName \"DigiCert-Global-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-CA\" [ find where common-na\ + me=\"DigiCert Global Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-CA.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-CA\" [ find where commo\ + n-name=\"DigiCert Assured ID Root CA\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G2\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Assured-ID-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Assured-ID-Root-G3\" [ find where commo\ + n-name=\"DigiCert Assured ID Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G2-TLS-RSA-SHA256-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G2 TLS RSA SHA256 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-G3-TLS-ECC-SHA384-2020-CA1\" [ f\ + ind where common-name=\"DigiCert Global G3 TLS ECC SHA384 2020 CA1\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G2\" [ find where common-na\ + me=\"DigiCert Global Root G2\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Global-Root-G3.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Global-Root-G3\" [ find where common-na\ + me=\"DigiCert Global Root G3\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-ECC-P384-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-ECC-P384-Root-G5\" [ find where com\ + mon-name=\"DigiCert TLS ECC P384 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-TLS-RSA4096-Root-G5.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-TLS-RSA4096-Root-G5\" [ find where comm\ + on-name=\"DigiCert TLS RSA4096 Root G5\" ];\r\ + \n\r\ + \n:set CertName \"DigiCert-Trusted-Root-G4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"DigiCert-Trusted-Root-G4\" [ find where common-n\ + ame=\"DigiCert Trusted Root G4\" ];\r\ + \n\r\ + \n:set CertName \"GTS-Root-R4.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"GTS-Root-R4\" [ find where common-name=\"GTS Roo\ + t R4\" ];\r\ + \n\r\ + \n:set CertName \"Go-Daddy-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Go-Daddy-Root-Certificate-Authority-G2\" [ find \ + where common-name=\"Go Daddy Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"ISRG-Root-X1.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"ISRG-Root-X1\" [ find where common-name=\"ISRG R\ + oot X1\" ];\r\ + \n\r\ + \n:set CertName \"Root-YE.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Root-YE\" [ find where common-name=\"Root YE\" ]\ + ;\r\ + \n\r\ + \n:set CertName \"Starfield-Root-Certificate-Authority-G2.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"Starfield-Root-Certificate-Authority-G2\" [ find\ + \_where common-name=\"Starfield Root Certificate Authority - G2\" ];\r\ + \n\r\ + \n:set CertName \"USERTrust-RSA-Certification-Authority.pem\";\r\ + \n/tool/fetch mode=https url=(\$GlobalScriptsUrl . \"certs/Master/\" . \$C\ + ertName);\r\ + \n/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n/certificate/set name=\"USERTrust-RSA-Certification-Authority\" [ find w\ + here common-name=\"USERTrust RSA Certification Authority\" ];\r\ + \n\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"GTS-Root-RX.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#internet\r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n#:set CertName \"ISRG-Root-X2.pem\";\r\ + \n#/tool/fetch mode=https url=(\$AmScriptsUrl . \"certs/\" . \$CertName);\ + \r\ + \n#/certificate/import file-name=\$CertName passphrase=\"\";\r\ + \n\r\ + \n\r\ + \n#/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 do\ + h-max-server-connections=20 use-doh-server=https://security.cloudflare-dns\ + .com/dns-query verify-doh-cert=yes;\r\ + \n#/ip/dns/static remove [find where address=1.1.1.1];\r\ + \n#/ip/dns/static add address=1.1.1.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 1\";\r\ + \n#/ip/dns/ static remove [find where address=1.0.0.1];\r\ + \n#/ip/dns/static add address=1.0.0.1 name=security.cloudflare-dns.com com\ + ment=\"cloudflare-dns IPv4 2\"\r\ + \n#/ip dns static add address=2606:4700:4700::1111 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip dns static add address=2606:4700:4700::1001 name=security.cloudflar\ + e-dns.com type=AAAA\r\ + \n#/ip/dns set servers=\"1.0.0.1, 8.8.4.4\";\r\ + \n#/ip/dns set servers=\"\";" +add dont-require-permissions=no name=script1 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\ + tool/netwatch/add comment=\"doh-fallback, doh-url=https://security.cloudfl\ + are-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Clou\ + dFlare-doh IPv4 1\" host=1.1.1.1;\r\ + \n/tool/netwatch/add comment=\"doh, doh-url=https://security.cloudflare-dn\ + s.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=CloudFlare\ + -doh IPv4 2\" host=1.0.0.1;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 1\" host=8.8.8.8;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.google/dns-query, doh-cert=DigiCert Global Root G2, notify, name=Goog\ + le-doh IPv4 2\" host=8.8.4.4;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 1\" host=9.9.9.9;\r\ + \n/tool/netwatch/add comment=\"doh-fallback, dns-fallback, doh-url=https:/\ + /dns.quad9.net/dns-query, doh-cert=DigiCert Global Root G3, notify, name=C\ + uad9-doh IPv4 2\" host=149.112.112.112;\r\ + \n\r\ + \n/tool/netwatch/add comment=\"dns, notify, name=ns1.unet.ws\" host=91.192\ + .189.2;" +add dont-require-permissions=no name=script2 owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + \r\ + \n\r\ + \n:global InspectVar;\r\ + \n#:global RouterBoard;\r\ + \n#:do {:set RouterBoard [[ :parse \"/system/routerboard/get\" ]]} on-erro\ + r={}\r\ + \n#:global Resources;\r\ + \n#:do {:set Resources [[ :parse \"/system/resource/get\" ]]} on-error={}\ + \r\ + \n\r\ + \n#:global Updates;\r\ + \n#:do {:set Updates [[ :parse \"/system/package/update/get\" ]]} on-error\ + ={}\r\ + \n\r\ + \n#:global PkgUpdStatus \"undefined\";\r\ + \n#:local Update [/system/package/update/get];\r\ + \n#:retry command={:set PkgUpdStatus (\$Update->\"status\")} delay=200ms m\ + ax=5 on-error={};\r\ + \n\r\ + \n#:log warning [\$InspectVar \$RouterBoard];\r\ + \n#:put [\$InspectVar \$RouterBoard];\r\ + \n\r\ + \n#:retry command={/system/package/update check-for-updates without-paging\ + \_as-value} delay=300ms max=5 on-error={};\r\ + \n\r\ + \n#:global arrDeviceInfo ({});\r\ + \n#:local arrDeviceInfo ({\"section\":{\"key\":\"\"; \"value\":\"\";};});\ + \r\ + \n#:set (\$arrDeviceInfo->\"RouterBoard\") [[ :parse \"/system/routerboard\ + /get\" ]];\r\ + \n#:retry command={:set (\$arrDeviceInfo->\"Updates\") [[ :parse \"/system\ + /package/update/get\" ]]} delay=500ms max=5 on-error={:log error (\"Error\ + \")};\r\ + \n# [:toarray {\"section\"={\"key\"=\"\"; \"value\"=\"\";} }];\r\ + \n# [:toarray \"\"];\r\ + \n:local arrDeviceInfo ({});\r\ + \n\r\ + \n:set (\$arrDeviceInfo->\"devUpdates\") {\"channel\"; \"stable\";};\r\ + \n#:do {:set (arrDeviceInfo->\"Updates\") [[ :parse \"/system/package/upda\ + te/get\" ]]} on-error={:log error (\$error)}\r\ + \n\$InspectVar \$arrDeviceInfo;\r\ + \n" +add comment="Script for setup routeros script system" \ + dont-require-permissions=no name=AM-setup owner=AM-setup policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-setup\r\ + \n# Script comment: Script for setup routeros script system\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# :local ScriptName [ :jobname ];\r\ + \n# Additional commands:\r\ + \n#\r\ + \n# For scripts:\r\ + \n#:global NewScript \"script_name\"; \r\ + \n#:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n#/system/script/add name=\$NewScript owner=\$NewScript source=([/tool/fe\ + tch check-certificate=yes-without-crl (\$GlobalScriptsUrl . \$ScriptAdd . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n#:global NewScript (a);\r\ + \n#:global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n#\r\ + \n# For run from terminal:\r\ + \n#/system/script/add name=AM-setup owner=AM-Setup source=([/tool/fetch ch\ + eck-certificate=yes-without-crl \"https://ros.vados.ru/AM-setup.rsc\" outp\ + ut=user as-value ]->\"data\");\r\ + \n#\r\ + \n\r\ + \n:global ScriptUpdatesCRLF \"LF\";\r\ + \n#:if (\$ScriptUpdatesCRLF != false) do={\r\ + \n# :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vad\ + os\" ] do={\r\ + \n# if (\$ScriptUpdatesCRLF = true) do={\r\ + \n# /system/script/set source=[ :tocrlf [ get \$Script source ] ] \$S\ + cript;\r\ + \n# } else={\r\ + \n# /system/script/set source=[ :tolf [ get \$Script source ] ] \$Scr\ + ipt;\r\ + \n# }\r\ + \n# }\r\ + \n#}\r\ + \n\r\ + \n# /import verbose=no \$ScriptName\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global SetupScript [ :jobname ];\r\ + \n:global RemoveMe true;\r\ + \n:global RunOnce (a);\r\ + \n:global InitSetup true;\r\ + \n:global tmpfs false;\r\ + \n\r\ + \n{\r\ + \n :local RmMe [:tobool \$1];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SetupScript;\r\ + \n :global RemoveMe;\r\ + \n :global InitSetup;\r\ + \n :global tmpfs;\r\ + \n\r\ + \n :local UrlSuffix \$Identity;\r\ + \n :local UrlDir \"certs/\";\r\ + \n :local CertUrl (\$GlobalScriptsUrl . \$UrlDir . \$UrlSuffix .\"/\"); \ + \r\ + \n :local CertCommonName \"Root YE\";\r\ + \n :local CertFileName \"Root-YE.pem\";\r\ + \n :local CertFingerprint \"e14ffcad5b0025731006caa43a121a22d8e9700f4fb9c\ + f852f02a708aa5d5666\";\r\ + \n\r\ + \n :if (\$SetupScript = false) do={\r\ + \n :global SetupScript \"AM-setup\";\r\ + \n }\r\ + \n :if (\$RemoveMe != false) do={\r\ + \n :set RemoveMe true;\r\ + \n }\r\ + \n\r\ + \n :log warning (\"\\n\\\$GlobalScriptsUrl = \" . \$GlobalScriptsUrl);\r\ + \n \r\ + \n\r\ + \n :if (!(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" ||\ + \_\\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CertComm\ + onName ] ] > 0)) do={\r\ + \n :put \"Importing certificate...\";\r\ + \n /tool/fetch (\$CertUrl . \$CertFileName) dst-path=\$CertFileName\ + \_as-value;\r\ + \n :delay 1s;\r\ + \n /certificate/import file-name=\$CertFileName passphrase=\"\";\r\ + \n /certificate/set name=\"Root-YE\" [ find where common-name=\"Roo\ + t YE\" ];\r\ + \n :delay 1s;\r\ + \n };\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] != 1) do={\r\ + \n :error \"Something is wrong with your certificates!\";\r\ + \n };\r\ + \n\r\ + \n:local MkTmpfs do={\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\"The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\"Try to removing directory 'tmpfs'.\");\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/remove tmpfs;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n# \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource/g\ + et total-memory ] / 3);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get tmpfs;\r\ + \n :return true;\r\ + \n } delay=222ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\"Creating disk of type tmpfs failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n}\r\ + \n:if (\$tmpfs = true) do={\r\ + \n :put \"Tmpfs variable is true. Checking for tmpfs/scripts directory...\ + \";\r\ + \n :if ([/file find name=\"tmpfs/scripts\"] != \"\") do={\r\ + \n :log info (\$0 . \"Directory tmpfs/scripts exsist.\");\r\ + \n :return \$true;\r\ + \n } else={\r\ + \n :log warning (\$0 . \"Directory tmpfs/scripts does't exsist.\");\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :log error (\$0 . \"Directory tmpfs is not created!\");\r\ + \n :return false;\r\ + \n } else={\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=/tmpfs/scripts;\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get /tmpfs/scripts;\r\ + \n :return true;\r\ + \n } delay=100ms max=10;\r\ + \n } on-error={ }\r\ + \n } do={\r\ + \n :log warning (\$0 . \"Making directory 'scripts' failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n# :return true;\r\ + \n# [ /file/get \$FileName ]\r\ + \n }\r\ + \n# :log error (\$0 . \"Directory tmpfs/scripts does not exsist. Remove\ + \_global variable tmpfs!\");\r\ + \n# :global tmpfs (a);\r\ + \n# return false;\r\ + \n }\r\ + \n}\r\ + \n :put \"Renaming AM-GlobalConfig, if exists...\";\r\ + \n :local ConfOldName (\"AM-GlobalConfig-\" . [ /system/clock/get date ] \ + . [ /system/clock/get time ] . \".rsc\");\r\ + \n /system/script/set name=\$ConfOldName [ find where name=\"AM-GlobalCon\ + fig\" ];\r\ + \n :foreach Script in={ \"AM-GlobalConfig\"; \"AM-GlobalFunc\"; \"mod/AM-\ + Certs-By-Ident\" } do={\r\ + \n :put \"Installing \$Script...\";\r\ + \n /system/script/remove [ find where name=\$Script ];\r\ + \n /system/script/add name=\$Script owner=\$Script source=([ /tool/fetc\ + h check-certificate=yes-without-crl url=(\$GlobalScriptsUrl . \$Script . \ + \".rsc\") output=user as-value ]->\"data\");\r\ + \n \r\ + \n /system/script run \$Script;\r\ + \n :delay 2s;\r\ + \n };\r\ + \n\r\ + \n :if ([ :len [ /certificate/find where fingerprint=\$CertFingerprint ] \ + ] > 0) do={\r\ + \n :put \"Renaming certificate by its common-name...\";\r\ + \n :global CertificateNameByCN;\r\ + \n \$CertificateNameByCN \$CertFingerprint;\r\ + \n };\r\ + \n\r\ + \n :if (\$RemoveMe = true) do={\r\ + \n :put \"Add Scheduler for remove this script...\";\r\ + \n :local OnEvent (\":delay 30s;\\n\" . \"/system/script/remove [ find \ + where name=\\\"\$SetupScript\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \"/system/scheduler/remove [ find where name=\\\ + \"_RemoveSetup\\\" ];\\n\" . \\\r\ + \n \":delay 2s;\\n\" . \":global RemoveMe (a);\\n\");\r\ + \n :local Comment \"_RemoveSetup tmp scheduler for remove setup script.\ + \";\r\ + \n /system/scheduler/add name=\"_RemoveSetup\" comment=\$Comment start-\ + time=startup interval=30s on-event=\$OnEvent;\r\ + \n :log warning (\$0 . \"\\nI've done everything, and now I'm tired..\ + . I'm leaving.\\nThere will be an error below, this is normal.\");\r\ + \n }\r\ + \n :delay 1;\r\ + \n :put \"Loading configuration and functions...\";\r\ + \n :do { \r\ + \n :global ScriptInstallUpdate; \$ScriptInstallUpdate;\r\ + \n :put \"Normal removing temporary global environment variables.\";\ + \r\ + \n :global SetupScript (a);\r\ + \n :global InitSetup (a);\r\ + \n :global RemoveMe (a);\r\ + \n } on-error={\r\ + \n :local ErrorMsg \"Loading configuration and functions error!\";\r\ + \n :log error (\$0 . \$ErrorMsg . :error);\r\ + \n :error \$ErrorMsg;\r\ + \n }\r\ + \n}\r\ + \n" +add comment="Global Config Script" dont-require-permissions=no name=\ + AM-GlobalConfig owner=AM-GlobalConfig policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GlobalConfig\r\ + \n# Script comment: Global Config Script\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# Warning: Dont touch this line!\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global GlobalConfReady false;\r\ + \n#\r\ + \n#\r\ + \n# Global Url For Amster scripts to fetch\r\ + \n# most be defined in AM-Init-Script or AM-setup scripts\r\ + \n:global GlobalScriptsUrl \"https://ros.vados.ru/\";\r\ + \n:global ScriptsUrlSuffix (a);\r\ + \n:global CheckSumsVerify true;\r\ + \n\r\ + \n:global ScriptUpdatesCRLF true;\r\ + \n:global CommentsInScripts true;\r\ + \n\r\ + \n# Debug output:\r\ + \n:global PrintDebug true; #false;\r\ + \n\r\ + \n# Debug output for specific script:\r\ + \n#:set (\$PrintDebugOverride->\"AM-GlobalFunc\") true;\r\ + \n\r\ + \n# Debug logs\r\ + \n# Other actions (disk, email, remote or support) can be used as well.\r\ + \n# I do not recommend using echo - use debug output instead (https://rsc.\ + eworm.de/main/DEBUG.html#debug-output).\r\ + \n#/system/logging/add topics=script,debug action=memory;\r\ + \n\r\ + \n:global MikrotikUpgradeUrl \"https://upgrade.mikrotik.com/routeros\";\r\ + \n:global Domain \"WORKGROUP\";\r\ + \n\r\ + \n:global EmailGeneralTo \"vados@vados.ru\";\r\ + \n#:global EmailGeneralCc \"\";\r\ + \n\r\ + \n# \$ScriptInstallUpdate mod/notification-telegram\r\ + \n:global TelegramTokenId \"8390868324:AAG3_d1hfVR2M6pGAgDK6ZvhOe4J97nyopw\ + \";\r\ + \n:global TelegramChatId \"-1003631309063\"; #\"454403445\";\r\ + \n# Use this to send notifications to a specific topic in group.\r\ + \n#:global TelegramThreadId \"30\";\r\ + \n# Using telegram-chat you have to define trusted chat ids (not group ids\ + !)\r\ + \n# or user names. Groups allow to chat with devices simultaneously.\r\ + \n:global TelegramChatIdsTrusted {\r\ + \n \"454403445\"\r\ + \n \"-1003631309063\"\r\ + \n \"-5124482807\"\r\ + \n \"1087968824\";\r\ + \n};\r\ + \n# \"-5294757340\";\r\ + \n\r\ + \n:global TelegramChatGroups \"(all)\";\r\ + \n#:global TelegramChatGroups \"(all|home|office)\";\r\ + \n\r\ + \n:global NotificationFunctions {\r\ + \n \"email\"\r\ + \n \"telegram\";\r\ + \n};\r\ + \n# Toggle this to disable symbols in notifications.\r\ + \n:global NotificationsWithSymbols true;\r\ + \n:global TerminalColorOutput true;\r\ + \n\r\ + \n:global DetectIpAddrDefault \"https://ipv4.mikrotik.ovh/\";\r\ + \n:global DetectIpAddrFallback \"https://api.ipify.org/\";\r\ + \n\r\ + \n## Update channel. Possible values: stable, long-term, testing, developm\ + ent\r\ + \n:global updateChannel \"stable\";\r\ + \n\r\ + \n:global CertRenewUrl (\$GlobalScriptsUrl . \"certs/\" . \$Identity . \"/\ + \");\r\ + \n:global CertRenewTime 2w;\r\ + \n:global CertRenewPass (a); #{\r\ + \n# \"\";\r\ + \n# \"v3ry-s3cr3t\";\r\ + \n# \"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n:global CertWarnTime 1w;\r\ + \n:global CertIssuedExportPass (a); # {\r\ + \n# \"\";\r\ + \n# \"cert1-cn\"=\"v3ry-s3cr3t\";\r\ + \n# \"cert2-cn\"=\"4n0th3r-s3cr3t\";\r\ + \n#};\r\ + \n\r\ + \n# Script BackupAndUpdate mode, possible values: backup,\r\ + \n# updateOnce - Update once as \"osnotify\" and back \"osnotify\" mode (i\ + n terminal run :set OSUpdateMode updateOnce; \$OSUpdateMode;). \r\ + \n# osupdate - Update if available and creates backups before/after update\ + \_(ignores `forceBackup`)\r\ + \n# Set `forceBackup` to true to always create backups, even\ + \_without updates\r\ + \n# osnotify - Set `forceBackup` to always create backups on every run\r\ + \n:global DevInfoIncludeIP true;\r\ + \n:global BackupAndUpdateMode \"osnotify\"\r\ + \n\r\ + \n:global forceBackup true;\r\ + \n:global BackupPassword \"Peskar55\";\r\ + \n\r\ + \n# SFTP Backup Variables\r\ + \n:global BackupRandomDelay 0;\r\ + \n:global BackupUploadUrl \"sftp://amster.vados.ru/upload/\";\r\ + \n:global BackupUploadUser \$Identity;\r\ + \n:global BackupUploadPass \"root.mnuc.backuper\";\r\ + \n\r\ + \n:global BackupSendBinary true;\r\ + \n:global BackupSendExport true;\r\ + \n:global BackupSendGlobalConfig true;\r\ + \n:global BackupSendScripts true;\r\ + \n\r\ + \n# Remove local file after uploading if no errors\r\ + \n:global BackupRmLocal true;\r\ + \n\r\ + \n# Local Backups Root Directory \r\ + \n:global BackupLocalRoot \"tmpfs\";\r\ + \n\r\ + \n# Encrypt Backup\r\ + \n:global BackupEncrypt true;\r\ + \n\r\ + \n# Sensitive information in Backups\r\ + \n:global BackupSens true;\r\ + \n\r\ + \n# User Export\r\ + \n:global BackupUser true;\r\ + \n\r\ + \n# License Export (not for CHR, will silently skip)\r\ + \n:global BackupLicense false;\r\ + \n\r\ + \n# SSH Keys\r\ + \n:global BackupSshKeys true;\r\ + \n\r\ + \n# Certificate Export\r\ + \n:global BackupCerts true;\r\ + \n\r\ + \n# Certificate Password\r\ + \n:global BackupCertsPasswd \"\";\r\ + \n\r\ + \n# User-Manager Export\r\ + \n:global BackupUserMan false;\r\ + \n\r\ + \n# The Dude Export\r\ + \n:global BackupDude false;\r\ + \n\r\ + \n# User Files to export, comma-separated string or array of strings\r\ + \n# User Files are not removed on backup\r\ + \n# Any directory paths will be removed (/ -> _) on remote file\r\ + \n# Nonpresent files are silently skipped\r\ + \n:global BackupUserList \"autosupout.rif,autosupout.old.rif\";\r\ + \n\r\ + \n# load functions and any custom scripts\r\ + \n# [ /system/script/find where name=\"global-config-ov\ + erlay\" ], \\\r\ + \n# [ /system/script/find where name~\"^global-config-o\ + verlay\\\\.d/.\" ]\r\ + \n#\r\ + \n#:foreach Script in=([ /system/script/find where name=\"Amster-TGglobalV\ + ars\" ], [ /system/script/find where name=\"Amster-TGglobalFunc\" ]) do={\ + \r\ + \n# :onerror Err {\r\ + \n# /system/script/run \$Script;\r\ + \n# } do={\r\ + \n# :log error (\"Loading configuration from configs and functions\"\ + \_. [ /system/script/get \$Script name ] . \" failed: \" . \$Err);\r\ + \n# }\r\ + \n#}\r\ + \n#:log info \"\\ndevMode = \$devMode\";\r\ + \n#:log info \"\\ndevRunning = \$devRunning\";\r\ + \n:foreach Script in=[ /system/script/find where source~\"^#!rsc by Vados \ + GlobalRUN\\r\?\\n\" ] do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n :log error (\"Run script \" . [ /system/script/get \$Script name \ + ] . \" width marker \\\" GlobalRUN\\\" failed: \" . \$Err);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# signal we are ready\r\ + \n:set GlobalConfReady true;\r\ + \n:while (\$GlobalConfReady != true) do={:delay 500ms};\r\ + \n" +add comment="Global functions" dont-require-permissions=no name=AM-GlobalFunc \ + owner=AM-GlobalFunc policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-GglobalFunc\r\ + \n# Script comment: Global functions\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n:local ExitOK false;\r\ + \n:local ScriptName [ :jobname ];\r\ + \n#:global checkRunJob \$SriptName;\r\ + \n#:global fixCRLF;\r\ + \n#:if (\$fixCRLF != false) do={\r\ + \n#:foreach fixScript in=([ /system/script/find where name~\"*\" ]) do={/s\ + ystem/script/set source=[ :tocrlf [ get \$fixScript source ] ] \$fixScript\ + }\r\ + \n#:if (\$fixCRLF != \"LF\") do={ /system/script/set source=[ :tocrlf [ g\ + et \$fixScript source ] ] \$fixScript};};\r\ + \n#}\r\ + \n:global GlobalFuncReady false;\r\ + \n\r\ + \n# Git commit id & info, expected configuration version\r\ + \n:global CommitId \"main/635/33f8040a\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 13:30:03 11.05.2026.\";\r\ + \n\r\ + \n# The variables are received right here.\r\ + \n:global GlobalConfVersion 140;\r\ + \n\r\ + \n:global SumsDirAndFileName \"tmp/checksums.json\";\r\ + \n\r\ + \n:global Identity [/system/identity/get name];\r\ + \n:global IdentityShort [:pick \$Identity 0 18];\r\ + \n\r\ + \n:global devBoardName [/system/resource/get board-name];\r\ + \n:global devMode [/system/device-mode/get mode];\r\ + \n:global devCurArch [/system/resource/get architecture-name];\r\ + \n:global devCurVersion [/system/resource/get version];\r\ + \n\r\ + \n# Variables defined in AM-GlobalConfig.rsc\r\ + \n:global TerminalColorOutput;\r\ + \n:global CommentsInScripts;\r\ + \n:global DetectIpAddrDefault;\r\ + \n:global DetectIpAddrFallback;\r\ + \n:global updateChannel;\r\ + \n:global Domain;\r\ + \n:global EmailGeneralTo;\r\ + \n:global BackupAndUpdateMode;\r\ + \n\r\ + \n# Single functions, without nested functions.\r\ + \n:global MiniDateTimeStamp;\r\ + \n:global MicroDateTimeStamp;\r\ + \n\r\ + \n# Include globals \$PrintDebug and \$PrintDebugOverride\r\ + \n:global LogPrint;\r\ + \n\r\ + \n# DeviceInfo and Updates\r\ + \n:global IsCheckUpdates;\r\ + \n:global WaitCheckUpdates;\r\ + \n:global GetPubIp;\r\ + \n\r\ + \n:global GetArrDeviceInfo;\r\ + \n:global WaitArrDeviceInfo;\r\ + \n\r\ + \n:global devModel;\r\ + \n:global devRunningMode;\r\ + \n\r\ + \n:global devRbRevision;\r\ + \n:global devRbSerialNumber;\r\ + \n:global devRbVerAvail;\r\ + \n\r\ + \n:global runningChannelVersion;\r\ + \n:global runningChannel;\r\ + \n:global runningVersion;\r\ + \n\r\ + \n:global devBuildTime;\r\ + \n:global ROsVerAvail;\r\ + \n:global PkgUpdStatus;\r\ + \n:global currentUpdateChannel;\r\ + \n\r\ + \n:global ScriptInstallUpdate;\r\ + \n\r\ + \n:global DeviceInfo;\r\ + \n\r\ + \n:global OldMode;\r\ + \n\r\ + \n:global ParseKeyValueStore;\r\ + \n:global RandomDelay;\r\ + \n:global GetRandomNumber;\r\ + \n:global EscapeForRegEx;\r\ + \n:global CharacterMultiply;\r\ + \n:global CharacterReplace;\r\ + \n:global CleanFilePath;\r\ + \n:global CleanName;\r\ + \n\r\ + \n:global CommitBrief;\r\ + \n\r\ + \n:global EitherOr;\r\ + \n:global FormatLine;\r\ + \n:global GetRandom20CharAlNum;\r\ + \n:global GetRandom20CharHex;\r\ + \n:global GetRandomNumber;\r\ + \n:global Grep;\r\ + \n:global IfThenElse;\r\ + \n:global MAX;\r\ + \n:global MIN;\r\ + \n:global HumanReadableNum;\r\ + \n\r\ + \n:global IsFullyConnected;\r\ + \n:global IsDNSResolving;\r\ + \n:global IsTimeSync;\r\ + \n:global IsTimeSyncCached;\r\ + \n:global IsTimeSyncResetNtp;\r\ + \n\r\ + \n:global WaitDNSResolving;\r\ + \n:global WaitFullyConnected;\r\ + \n:global WaitTimeSync;\r\ + \n:global MkDir;\r\ + \n:global RmDir;\r\ + \n:global RmFile;\r\ + \n:global FileGet;\r\ + \n:global Unix2Dos;\r\ + \n:global UrlEncode;\r\ + \n:global WaitForFile;\r\ + \n:global ScriptLock;\r\ + \n:global SendTelegram;\r\ + \n:global NotificationFunctions;\r\ + \n:global SendNotification;\r\ + \n:global SendNotification2;\r\ + \n:global SymbolForNotification;\r\ + \n:global SymbolByUnicodeName;\r\ + \n:global ValidateSyntax;\r\ + \n:global CheckSumsVerify;\r\ + \n:global GlobalConfChanges;\r\ + \n:global GlobalConfMigration;\r\ + \n:global VersionToNum;\r\ + \n:global RequiredRouterOS;\r\ + \n:global ExitError;\r\ + \n:global ExitOnError;\r\ + \n\r\ + \n:global FetchHugeFiles;\r\ + \n:global FetchUserAgentStr;\r\ + \n:global FileExists;\r\ + \n:global CertificateAvailable;\r\ + \n:global CertificateDownload;\r\ + \n:global CertificateNameByCN;\r\ + \n:global CharacterMultiply;\r\ + \n\r\ + \n:global InspectVar;\r\ + \n:global InspectVarRet;\r\ + \n:global ParseCustom;\r\ + \n\r\ + \n:set IsCheckUpdates do={\r\ + \n :local isInfo [:tobool \$1];\r\ + \n :global updateChannel;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :log info (\$0 . \" \\\$isInfo = \" . \$isInfo); \r\ + \n :local CurrentChannel [ /system/package/update/get channel ];\r\ + \n :if ([ :len \$updateChannel ] > 0 && \$CurrentChannel != \$updateChann\ + el) do={\r\ + \n :retry command={/system/package/update set channel=\$updateChannel} \ + \_delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" Set updates channel to: \$updateChannel\");\r\ + \n }\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local Channel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set currentUpdateChannel \$Channel;\r\ + \n :log info (\$0 . \" Update Channel: \" . \$Channel . \".\");\r\ + \n :local StatusPkg \"undefined\";\r\ + \n :log info (\$0 . \" Checking for updates...\");\r\ + \n :retry command={:set \$StatusPkg ([/system/package/update/check-for-up\ + dates without-paging as-value]->\"status\")} \\\r\ + \n delay=300ms max=5 on-error={};\r\ + \n :log info (\$0 . \" \\\$StatusPkg = \" . \$StatusPkg);\r\ + \n :if (\$StatusPkg = \"New version is available\") do={ :set PkgUpdStatu\ + s true; } else={ :set PkgUpdStatus false; }\r\ + \n :set ROsVerAvail [ :tostr [ /system/package/update/get latest-version \ + ] ];\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if (\$isInfo != false || \$PkgUpdStatus = true) do={\r\ + \n :log info (\$0 . \" \\\$PkgUpdStatus = \" . \$PkgUpdStatus);\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :retry command={:set (\$arrDeviceInfo->\"devUpdates\") [ /system/pac\ + kage/update/get ]} delay=500ms max=5 on-error={:log error (\"Error\")};\r\ + \n :return true;\r\ + \n } else={\r\ + \n :return \$PkgUpdStatus;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set WaitCheckUpdates do={\r\ + \n :global IsCheckUpdates;\r\ + \n :global PkgUpdStatus;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n :global arrDeviceInfo;\r\ + \n :local Status \"\";\r\ + \n :local Update;\r\ + \n :local WaitCount 0;\r\ + \n :if ([ \$IsCheckUpdates true ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n :while ((\$Status = \"\" || \$Status = \"finding out latest version...\ + \") && \$WaitCount < 60) do={\r\ + \n :delay 1s;\r\ + \n :set WaitCount (\$WaitCount + 1);\r\ + \n :set Status [ :tostr [ /system/package/update/get status ] ];\r\ + \n }\r\ + \n :set Update [ /system/package/update/get ];\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n :if ((\$Update->\"status\") = \"New version is available\") do={\r\ + \n :set PkgUpdStatus true;\r\ + \n } else={\r\ + \n :set PkgUpdStatus false;\r\ + \n }\r\ + \n :if ([ :typeof \$arrDeviceInfo ] != \"array\") do={\r\ + \n :set arrDeviceInfo [:toarray \$arrDeviceInfo];\r\ + \n }\r\ + \n :set (\$arrDeviceInfo->\"devUpdates\") \$Update;\r\ + \n :if (\$Status = \"\" || \$Status = \"finding out latest version...\") \ + do={\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set WaitArrDeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :while ([ \$GetArrDeviceInfo ] = false) do={\r\ + \n :delay 1s;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set GetArrDeviceInfo do={\r\ + \n :global LogPrint;\r\ + \n :global arrDeviceInfo;\r\ + \n :global devBoardName;\r\ + \n :global devModel;\r\ + \n :global devRunning;\r\ + \n :global devCurArch;\r\ + \n :global devRbRevision;\r\ + \n :global devRbSerialNumber;\r\ + \n :global devBuildTime;\r\ + \n :global runningChannelVersion;\r\ + \n :global runningChannel;\r\ + \n :global runningVersion;\r\ + \n :global currentUpdateChannel;\r\ + \n :global ROsVerAvail;\r\ + \n\r\ + \n :local DeviceInfo;\r\ + \n :local Resource [/system/resource/get];\r\ + \n :local Update [ /system/package/update/get ];\r\ + \n :local VersionString [ :tostr (\$Resource->\"version\") ];\r\ + \n :local ChannelStart [ :find \$VersionString \" (\" ];\r\ + \n :local RouterBoard;\r\ + \n :local IsRouterBoard false;\r\ + \n :local RunningMode \"\";\r\ + \n\r\ + \n :set devCurArch [ :tostr (\$Resource->\"architecture-name\") ];\r\ + \n :set devBuildTime [ :tostr (\$Resource->\"build-time\") ];\r\ + \n :set runningChannelVersion \$VersionString;\r\ + \n :set runningVersion \$VersionString;\r\ + \n :set runningChannel \"\";\r\ + \n\r\ + \n :if ([ :typeof \$ChannelStart ] = \"num\" && \$ChannelStart >= 0) do=\ + {\r\ + \n :set runningVersion [ :pick \$VersionString 0 \$ChannelStart ];\r\ + \n :local ChannelRest [ :pick \$VersionString (\$ChannelStart + 2) [ :\ + len \$VersionString ] ];\r\ + \n :local ChannelEnd [ :find \$ChannelRest \")\" ];\r\ + \n :if ([ :typeof \$ChannelEnd ] = \"num\" && \$ChannelEnd >= 0) do={\ + \r\ + \n :set runningChannel [ :pick \$ChannelRest 0 \$ChannelEnd ];\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([:pick \$devBoardName 0 3] != \"CHR\" or [:pick \$devBoardName 0\ + \_3] != \"x86\") do={\r\ + \n :do {\r\ + \n :set RouterBoard [[ :parse \"/system/routerboard/get\" ]];\r\ + \n# :set RouterBoard [ /system/routerboard/get ];\r\ + \n :if ((\$RouterBoard->\"routerboard\") = true) do={\r\ + \n :set IsRouterBoard true;\r\ + \n }\r\ + \n } on-error={}\r\ + \n }\r\ + \n\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get mode ];\r\ + \n } on-error={\r\ + \n :do {\r\ + \n :set RunningMode [ /system/device-mode/get running ];\r\ + \n } on-error={\r\ + \n :set RunningMode \"\";\r\ + \n }\r\ + \n }\r\ + \n :set devRunning \$RunningMode;\r\ + \n\r\ + \n :if (\$IsRouterBoard = true) do={\r\ + \n :set devModel [ :tostr (\$RouterBoard->\"model\") ];\r\ + \n :set devRbRevision [ :tostr (\$RouterBoard->\"revision\") ];\r\ + \n :set devRbSerialNumber [ :tostr (\$RouterBoard->\"serial-number\") \ + ];\r\ + \n } else={\r\ + \n :set devModel \$devBoardName;\r\ + \n :set devRbRevision \"\";\r\ + \n :set devRbSerialNumber \"\";\r\ + \n }\r\ + \n\r\ + \n :set currentUpdateChannel [ :tostr (\$Update->\"channel\") ];\r\ + \n :set ROsVerAvail [ :tostr (\$Update->\"latest-version\") ];\r\ + \n\r\ + \n :set (\$DeviceInfo->\"board-name\") \$devBoardName;\r\ + \n :set (\$DeviceInfo->\"architecture-name\") \$devCurArch;\r\ + \n :set (\$DeviceInfo->\"model\") \$devModel;\r\ + \n :set (\$DeviceInfo->\"revision\") \$devRbRevision;\r\ + \n :set (\$DeviceInfo->\"serial-number\") \$devRbSerialNumber;\r\ + \n :set (\$DeviceInfo->\"running-mode\") \$devRunning;\r\ + \n :set (\$DeviceInfo->\"build-time\") \$devBuildTime;\r\ + \n :set (\$DeviceInfo->\"running-channel-version\") \$runningChannelVers\ + ion;\r\ + \n :set (\$DeviceInfo->\"running-version\") \$runningVersion;\r\ + \n :set (\$DeviceInfo->\"running-channel\") \$runningChannel;\r\ + \n :set (\$DeviceInfo->\"routerboard\") \$IsRouterBoard;\r\ + \n :set (\$DeviceInfo->\"current-firmware\") [ :tostr (\$RouterBoard->\"\ + current-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"upgrade-firmware\") [ :tostr (\$RouterBoard->\"\ + upgrade-firmware\") ];\r\ + \n :set (\$DeviceInfo->\"package-channel\") \$currentUpdateChannel;\r\ + \n :set (\$DeviceInfo->\"installed-version\") [ :tostr (\$Update->\"inst\ + alled-version\") ];\r\ + \n :set (\$DeviceInfo->\"latest-version\") \$ROsVerAvail;\r\ + \n :set (\$DeviceInfo->\"update-status\") [ :tostr (\$Update->\"status\"\ + ) ];\r\ + \n\r\ + \n :set arrDeviceInfo \$DeviceInfo;\r\ + \n :return \$DeviceInfo;\r\ + \n}\r\ + \n\r\ + \n:set DeviceInfo do={\r\ + \n :global GetArrDeviceInfo;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global IfThenElse;\r\ + \n :global FormatLine;\r\ + \n :global CommitBrief;\r\ + \n\r\ + \n :local License [/system/license/get];\r\ + \n :local Snmp [ /snmp/get ];\r\ + \n :local Info [ \$GetArrDeviceInfo ];\r\ + \n\r\ + \n :if ([ :typeof \$Info ] != \"array\") do={\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :return ( \\\r\ + \n [ \$FormatLine \"Hostname\" \$Identity ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"location\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Location\" (\$Snmp->\"location\") ] . \"\\n\") ]\ + \_. \\\r\ + \n [ \$IfThenElse ([ :len (\$Snmp->\"contact\") ] > 0) \\\r\ + \n ([ \$FormatLine \"Contact\" (\$Snmp->\"contact\") ] . \"\\n\") ] .\ + \_\\\r\ + \n \"Hardware:\\n\" . \\\r\ + \n [ \$FormatLine \" Board\" (\$Info->\"board-name\") ] . \"\\n\" . \ + \\\r\ + \n [ \$FormatLine \" Arch\" (\$Info->\"architecture-name\") ] . \"\\\ + n\" . \\\r\ + \n [ \$FormatLine \" Model\" (\$Info->\"model\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"revision\") ] > 0) \\\r\ + \n (\" \" . (\$Info->\"revision\")) ] . \"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"serial-number\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Serial\" (\$Info->\"serial-number\") ] . \"\ + \\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"nlevel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"nlevel\ + \")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS:\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$License->\"level\") ] > 0) \\\r\ + \n ([ \$FormatLine \" License\" (\"level \" . (\$License->\"level\ + \")) ] . \"\\n\") ] . \\\r\ + \n [ \$FormatLine \" Channel\" (\$Info->\"package-channel\") ] . \"\ + \\n\" . \\\r\ + \n [ \$FormatLine \" Installed\" (\$Info->\"installed-version\") ] .\ + \_\"\\n\" . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"running-channel\") ] > 0) \\\r\ + \n ([ \$FormatLine \" Running\" ((\$Info->\"running-version\") . \ + \" (\" . (\$Info->\"running-channel\") . \")\") ] . \"\\n\") \\\r\ + \n ([ \$FormatLine \" Running\" (\$Info->\"running-version\") ] . \ + \"\\n\") ] . \\\r\ + \n [ \$IfThenElse ([ :len (\$Info->\"latest-version\") ] > 0 && \\\r\ + \n (\$Info->\"installed-version\") != (\$Info->\"latest-version\"))\ + \_\\\r\ + \n ([ \$FormatLine \" Available\" (\$Info->\"latest-version\") ] .\ + \_\"\\n\") ] . \\\r\ + \n [ \$IfThenElse ((\$Info->\"routerboard\") = true && \\\r\ + \n (\$Info->\"current-firmware\") != (\$Info->\"upgrade-firmware\")\ + ) \\\r\ + \n ([ \$FormatLine \" Firmware\" ((\$Info->\"current-firmware\") .\ + \_\" -> \" . (\$Info->\"upgrade-firmware\")) ] . \"\\n\") ] . \\\r\ + \n \"RouterOS-Scripts:\\n\" . \\\r\ + \n [ \$FormatLine \" Commit\" [ \$CommitBrief ] ] . \"\\n\" . \\\r\ + \n [ \$FormatLine \" Version\" \$GlobalConfVersion ]);\r\ + \n}\r\ + \n\r\ + \n:if ([ :typeof \$NotificationFunctions ] != \"array\") do={:set Notifica\ + tionFunctions ({})}\r\ + \n\r\ + \n:set GetRandom20CharAlNum do={\r\ + \n :global EitherOr;\r\ + \n :return [ :rndstr length=[ \$EitherOr [ :tonum \$1 ] 20 ] from=\"ABCDE\ + FGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\" ];\r\ + \n}\r\ + \n\r\ + \n:set GetRandom20CharHex do={:global EitherOr; :return [ :rndstr length=[\ + \_\$EitherOr [ :tonum \$1 ] 20 ] from=\"0123456789abcdef\" ]; }\r\ + \n:set GetRandomNumber do={:global EitherOr; :return [ :rndnum from=0 to=[\ + \_\$EitherOr [ :tonum \$1 ] 4294967295 ] ]; }\r\ + \n\r\ + \n:global checkRunJob;\r\ + \n:set checkRunJob do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLock; \r\ + \n :if ([ \$ScriptLock \$Script ] = false) do={:return false}\r\ + \n :foreach Job in=[ /system/script/job/find where script=\$Script ] do={\ + :set Job [ /system/script/job/get \$Job ];\r\ + \n :while ([ :typeof (\$Job->\"parent\") ] = \"id\") do={:set Job [ /sy\ + stem/script/job/get [ find where .id=(\$Job->\"parent\") ] ]}\r\ + \n :if ((\$Job->\"type\") = \"login\") do={:return true};}; :return fa\ + lse; \r\ + \n}\r\ + \n\r\ + \n:set InspectVar do={\r\ + \n :global InspectVarRet;\r\ + \n :put [ :tocrlf [ \$InspectVarRet \$1 ] ];\r\ + \n}\r\ + \n\r\ + \n:set CommitBrief do={\r\ + \n :global CommitId;\r\ + \n :global CommitInfo;\r\ + \n :if (\$CommitId = \"unknown\") do={\r\ + \n :return \"unknown\";\r\ + \n }\r\ + \n :return (\$CommitInfo . \"/\" . [ :pick \$CommitId 0 8 ]);\r\ + \n}\r\ + \n\r\ + \n:set InspectVarRet do={\r\ + \n :local Input \$1;\r\ + \n :local Level (0 + [ :tonum \$2 ]);\r\ + \n :global CharacterReplace;\r\ + \n :global IfThenElse;\r\ + \n :global InspectVarRet;\r\ + \n :local IndentReturn do={\r\ + \n :local Prefix [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Level [ :tonum \$3 ];\r\ + \n :global CharacterMultiply;\r\ + \n :return ([ \$CharacterMultiply \" \" (\$Level * 2) ] . \"-\" . \$Pre\ + fix . \"-> \" . \$Value);\r\ + \n }\r\ + \n :local TypeOf [ :typeof \$Input ];\r\ + \n :local Len [ :len \$Input ];\r\ + \n :local Return [ \$IndentReturn \"type\" \$TypeOf \$Level ];\r\ + \n :if (\$TypeOf = \"array\") do={\r\ + \n :foreach Key,Value in=\$Input do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"key\" \$Key (\$Level + 1) ] . \"\\n\" . \\\r\ + \n [ \$InspectVarRet \$Value (\$Level + 2) ]);\r\ + \n }\r\ + \n } else={\r\ + \n :if (\$TypeOf = \"str\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"len\" \$Len \$Level ]);\r\ + \n :if ([ :typeof [ :find \$Input (\"\\r\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\r\") \"\" ];\r\ + \n }\r\ + \n :if ([ :typeof [ :find \$Input (\"\\n\") ] ] = \"num\") do={\r\ + \n :set Input [ \$CharacterReplace \$Input (\"\\n\") \" \" ];\r\ + \n }\r\ + \n }\r\ + \n :if (\$TypeOf != \"nothing\") do={\r\ + \n :set \$Return (\$Return . \"\\n\" . \\\r\ + \n [ \$IndentReturn \"value\" [ \$IfThenElse ([ :len \$Input ] > 80)\ + \_\\\r\ + \n ([ :pick \$Input 0 77 ] . \"...\") \$Input ] \$Level ]);\r\ + \n }\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set GetPubIp do={\r\ + \n :global DetectIpAddrDefault;\r\ + \n :global DetectIpAddrFallback;\r\ + \n\r\ + \n :local PubIpAddr false;\r\ + \n :local Url \$DetectIpAddrDefault;\r\ + \n :local JobName [ :jobname ];\r\ + \n\r\ + \n :do {\r\ + \n :log debug (\$0 . \" Trying to detect public IP using default serv\ + ice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=50ms max=5 on-error={:log error (\$JobName . \" Failed to \ + detect public IP using default service: \" . \$Url . \".\")}\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed to detect public IP using default serv\ + ice: \" . \$Url . \".\");\r\ + \n :set Url \$DetectIpAddrFallBack;\r\ + \n :log debug (\$0 . \" Trying to detect public IP using fallback ser\ + vice: \" . \$Url . \"...\");\r\ + \n :retry command={:set PubIpAddr ([ /tool/fetch http-method=\"get\"\ + \_check-certificate=yes-without-crl \$Url output=user as-value ]->\"data\"\ + )} \\\r\ + \n delay=200ms max=5 on-error={:log error (\$JobName . \" Failed to\ + \_detect public IP using fallback service: \" . \$Url . \".\")}\r\ + \n };\r\ + \n :local IpLen ([ :len \$PubIpAddr ] -1);\r\ + \n :if (\$PubIpAddr = false) do={:set PubIpAddr \"not-detected\"} else=\ + {:set PubIpAddr [:pick \$PubIpAddr 0 \$IpLen]}\r\ + \n :return \$PubIpAddr;\r\ + \n}\r\ + \n\r\ + \n:set FormatLine do={\r\ + \n :local Key [ :tostr \$1 ];\r\ + \n :local Value [ :tostr \$2 ];\r\ + \n :local Indent [ :tonum \$3 ];\r\ + \n :local Spaces;\r\ + \n :local Return \"\";\r\ + \n :global CharacterMultiply;\r\ + \n :global EitherOr;\r\ + \n :set Indent [ \$EitherOr \$Indent 16 ];\r\ + \n :local Spaces [ \$CharacterMultiply \" \" \$Indent ];\r\ + \n :if ([ :len \$Key ] > 0) do={ :set Return (\$Key . \":\")}\r\ + \n :if ([ :len \$Key ] > (\$Indent - 2)) do={:set Return (\$Return . \"\\\ + n\" . [ :pick \$Spaces 0 \$Indent ] . \$Value);\r\ + \n } else={:set Return (\$Return . [ :pick \$Spaces 0 (\$Indent - [ :len \ + \$Return ]) ] . \$Value)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ParseCustom do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Start [:find [ \$Str ] [:tostr \$2]];\r\ + \n :local End [ :tostr \$3 ];\r\ + \n :local Num [ :tonum \$4 ];\r\ + \n :local Return;\r\ + \n :if ([:len \$Num] = 0) do={:set Num \"0\"}\r\ + \n :local rest [:pick \$Str (\$Start+\$Num) [:len \$Str]]; \r\ + \n :if ([:len \$End ] = 0) do={:set Return [:pick \$Str \$Num \$Start]} e\ + lse={\r\ + \n :set End [:find \$rest \$End];\r\ + \n :set Return [:pick \$rest 0 \$End];\r\ + \n }\r\ + \n:return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set LogPrint do={\r\ + \n :local Severity [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Message [ :tostr \$3 ];\r\ + \n :global PrintDebug;\r\ + \n :global PrintDebugOverride;\r\ + \n :global EitherOr;\r\ + \n :local Debug [ \$EitherOr (\$PrintDebugOverride->\$Name) \$PrintDebug \ + ];\r\ + \n :local PrintSeverity do={\r\ + \n :global TerminalColorOutput;\r\ + \n :if (\$TerminalColorOutput != true) do={:return \$1}\r\ + \n :local Color { debug=96; info=97; warning=93; error=91 };\r\ + \n :return (\"\\1B[\" . \$Color->\$1 . \"m\" . \$1 . \"\\1B[0m\");\r\ + \n}\r\ + \n :local Log ([ \$EitherOr \$Name \"\" ] . \": \" . \$Message);\ + \r\ + \n :if (\$Severity ~ (\"^(custom|debug|error|info)\\\$\")) do={\r\ + \n :if (\$Severity = \"debug\") do={:log debug \$Log}\r\ + \n :if (\$Severity = \"error\") do={:log error \$Log}\r\ + \n :if (\$Severity = \"info\" ) do={:log info \$Log}\r\ + \n } else={:log warning \$Log; :set Severity \"warning\"}\r\ + \n :if (\$Severity != \"debug\" || \$Debug = true) do={:put ([ \$PrintSev\ + erity \$Severity ] . \": \" . \$Message)}\r\ + \n}\r\ + \n\r\ + \n:set CertificateAvailable do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :local UseFor [ :tostr \$2 ];\r\ + \n\r\ + \n :global CertificateDownload;\r\ + \n :global ParseKeyValueStore;\r\ + \n\r\ + \n :if ([ :len \$UseFor ] = 0) do={\r\ + \n :log warning (\$0 . \"The intended use is undefined!\");\r\ + \n :set UseFor \"undefined\";\r\ + \n }\r\ + \n :if ([ /system/resource/get free-hdd-space ] < 8388608 && \\\r\ + \n [ /certificate/settings/get crl-download ] = true && \\\r\ + \n [ /certificate/settings/get crl-store ] = \"system\") do={\r\ + \n :log warning (\$0 . \"This system has low free flash space but \" . \ + \\\r\ + \n \"is configured to download certificate CRLs to system!\");\r\ + \n }\r\ + \n :if ([ :len \$CommonName ] = 0) do={\r\ + \n :log warning (\$0 . \"No CommonName given!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if (((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" || \\\ + \r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \$UseFor || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\r\ + \n [ :len [ /certificate/builtin/find where common-name=\$CommonName\ + \_] ] > 0) do={\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n :log info (\$0 . \"Certificate with CommonName '\" . \$CommonName . \ + \"' not available.\");\r\ + \n :if ([ \$CertificateDownload \$CommonName ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] > 1\ + ) do={\r\ + \n :log info (\$0 . \"There are \" . \$CertCount . \" Certificates with\ + \_CommonName '\" . \$CommonName . \"'. Should be ok.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :local CertVal [ /certificate/get [ find where common-name=\$CommonNam\ + e ] ];\r\ + \n :while ((\$CertVal->\"akid\") != \"\" && (\$CertVal->\"akid\") != (\$C\ + ertVal->\"skid\")) do={\r\ + \n :if ([ :len [ /certificate/find where skid=(\$CertVal->\"akid\") ] ]\ + \_= 0) do={\r\ + \n :local IssuerCN ([ \$ParseKeyValueStore (\$CertVal->\"issuer\") ]-\ + >\"CN\");\r\ + \n :log info (\$0 . \"Certificate chain for '\" . \$CommonName . \"' \ + is incomplete, missing '\" . \$IssuerCN . \"'.\");\r\ + \n :if ([ \$CertificateDownload \$IssuerCN ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :set CertVal [ /certificate/get [ find where skid=(\$CertVal->\"akid\ + \") ] ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateDownload do={\r\ + \n :local CommonName [ :tostr \$1 ];\r\ + \n :global ScriptUpdatesBaseUrl;\r\ + \n :global ScriptUpdatesUrlSuffix;\r\ + \n :global CertificateNameByCN;\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :log info (\$0 . \"Downloading and importing certificate with \" . \\\ + \r\ + \n \"CommonName '\" . \$CommonName . \"'.\");\r\ + \n :local FileName ([ \$CleanName \$CommonName ] . \".pem\");\r\ + \n :do {\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-header\ + -field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n (\$ScriptUpdatesBaseUrl . \"certs/\" . \$FileName . \$ScriptUpdate\ + sUrlSuffix) \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n } on-error={\r\ + \n :log warning (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \\\r\ + \n \"' from repository! Trying fallback to mkcert.org...\");\r\ + \n :do {\r\ + \n :local CertSettings [ /certificate/settings/get ];\r\ + \n :if ([ :len [ /certificate/find where common-name=\"ISRG Root X1\"\ + \_] ] = 0 && \\\r\ + \n !(((\$CertSettings->\"builtin-trust-anchors\") = \"trusted\" \ + || \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") ~ \"fetch\" || \ + \\\r\ + \n (\$CertSettings->\"builtin-trust-store\") = \"all\") && \\\ + \r\ + \n [ :len [ /certificate/builtin/find where common-name=\"ISRG\ + \_Root X1\" ] ] > 0)) do={\r\ + \n :log error (\$0 . \" Required certificate is not available.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n /tool/fetch check-certificate=yes-without-crl mode=https http-head\ + er-field=({ [ \$FetchUserAgentStr \$0 ] }) \\\r\ + \n url=\"https://mkcert.org/generate/\" http-data=[ :serialize to=jso\ + n ({ \$CommonName }) ] \\\r\ + \n dst-path=\$FileName as-value;\r\ + \n \$WaitForFile \$FileName;\r\ + \n :if ([ /file/get \$FileName size ] = 0) do={\r\ + \n \$RmFile \$FileName;\r\ + \n :error false;\r\ + \n }\r\ + \n } on-error={\r\ + \n :log error (\$0 . \" Failed downloading certificate with CommonNam\ + e '\" . \$CommonName . \"'!\");\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n /certificate/import file-name=\$FileName passphrase=\"\" as-value;\r\ + \n :delay 1s;\r\ + \n \$RmFile \$FileName;\r\ + \n :if ([ :len [ /certificate/find where common-name=\$CommonName ] ] = 0\ + ) do={\r\ + \n /certificate/remove [ find where name~(\"^\" . \$FileName . \"_[0-9]\ + +\\\$\") ];\r\ + \n :log warning (\$0 . \" Certificate with CommonName '\" . \$CommonNam\ + e . \"' still unavailable!\");\r\ + \n :return false;\r\ + \n }\r\ + \n :foreach Cert in=[ /certificate/find where name~(\"^\" . \$FileName . \ + \"_[0-9]+\\\$\") ] do={\r\ + \n \$CertificateNameByCN [ /certificate/get \$Cert common-name ];\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CertificateNameByCN do={\r\ + \n :local Match [ :tostr \$1 ];\r\ + \n :global CleanName;\r\ + \n :local Cert ([ /certificate/find where (common-name=\$Match or fingerp\ + rint=\$Match or name=\$Match) ]->0);\r\ + \n :if ([ :len \$Cert ] = 0) do={\r\ + \n :log warning (\$0 .\" No matching certificate found.\");\r\ + \n :return false;\r\ + \n }\r\ + \n :local CommonName [ /certificate/get \$Cert common-name ];\r\ + \n /certificate/set \$Cert name=[ \$CleanName \$CommonName ];\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FileExists do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local Type [ :tostr \$2 ];\r\ + \n :global FileGet;\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={ :return false; }\r\ + \n :if ([ :len (\$FileVal->\"size\") ] = 0) do={ :return false; }\r\ + \n :if ([ :len \$Type ] = 0 || \$FileVal->\"type\" = \$Type) do={ :return\ + \_true; }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set Grep do={\r\ + \n :local Input ([ :tostr \$1 ] . \"\\n\");\r\ + \n :local Pattern [ :tostr \$2 ];\r\ + \n :if ([ :typeof [ :find \$Input \$Pattern ] ] = \"nil\") do={:return []\ + }\r\ + \n :do {\r\ + \n :local Line [ :pick \$Input 0 [ :find \$Input \"\\n\" ] ];\r\ + \n :if ([ :typeof [ :find \$Line \$Pattern ] ] = \"num\") do={:return \ + \$Line}\r\ + \n :set Input [ :pick \$Input ([ :find \$Input \"\\n\" ] + 1) [ :len \$\ + Input ] ];\r\ + \n } while=([ :len \$Input ] > 0);\r\ + \n :return [];\r\ + \n}\r\ + \n\r\ + \n:set HumanReadableNum do={\r\ + \n :local Input [ :tonum \$1 ];\r\ + \n :local Base [ :tonum \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global IfThenElse;\r\ + \n :local Prefix \"kMGTPE\";\r\ + \n :local Pow 1;\r\ + \n :set Base [ \$EitherOr \$Base 1024 ];\r\ + \n :local Bin [ \$IfThenElse (\$Base = 1024) \"i\" \"\" ];\r\ + \n :if (\$Input < \$Base) do={:return \$Input}\r\ + \n :for I from=0 to=[ :len \$Prefix ] do={\r\ + \n :set Pow (\$Pow * \$Base);\r\ + \n :if (\$Input / \$Base < \$Pow) do={\r\ + \n :set Prefix [ :pick \$Prefix \$I ];\r\ + \n :local Tmp1 (\$Input * 100 / \$Pow);\r\ + \n :local Tmp2 (\$Tmp1 / 100);\r\ + \n :if (\$Tmp2 >= 100) do={:return (\$Tmp2 . \$Prefix . \$Bin)}\r\ + \n :return (\$Tmp2 . \".\" . \\\r\ + \n [ :pick \$Tmp1 [ :len \$Tmp2 ] ([ :len \$Tmp1 ] - [ :len \$Tmp\ + 2 ] + 1) ] . \\\r\ + \n \$Prefix . \$Bin);\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set CleanFilePath do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CharacterReplace;\r\ + \n :while (\$Path ~ \"//\") do={ :set \$Path [ \$CharacterReplace \$Path \ + \"//\" \"/\" ]; }\r\ + \n :if ([ :pick \$Path 0 ] = \"/\") do={ :set Path [ :pick \$Path 1 [ :le\ + n \$Path ] ]; }\r\ + \n :if ([ :pick \$Path ([ :len \$Path ] - 1) ] = \"/\") do={ :set Path [ \ + :pick \$Path 0 ([ :len \$Path ] - 1) ]; }\r\ + \n :return \$Path;\r\ + \n}\r\ + \n\r\ + \n:set CleanName do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Return \"\";\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :typeof [ find \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr\ + stuvwxyz0123456789\" \$Char ] ] = \"nil\") do={\r\ + \n :do {:if ([ :len \$Return ] = 0) do={:error true};\r\ + \n :if ([ :pick \$Return ([ :len \$Return ] - 1) ] = \"-\") do={:er\ + ror true}; :set Char \"-\"} on-error={:set Char \"\"}; \r\ + \n };\r\ + \n :set Return (\$Return . \$Char)};\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set RandomDelay do={\r\ + \n :local Time [ :tonum \$1 ];\r\ + \n :local Unit [ :tostr \$2 ];\r\ + \n :global EitherOr;\r\ + \n :global GetRandomNumber;\r\ + \n :global MAX;\r\ + \n :if (\$Time = 0) do={:return false}\r\ + \n :delay ([ \$MAX 10 [ \$GetRandomNumber ([ :tonsec [ :totime (\$Time . \ + [ \$EitherOr \$Unit \"s\" ]) ] ] / 1000000) ] ] . \"ms\");\r\ + \n}\r\ + \n\r\ + \n:set EscapeForRegEx do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"^.[]\\\$()|*+\?{}\\\\\");\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :if ([ :find \$Chars \$Char ]) do={:set Char (\"\\\\\" . \$Char)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ExitError do={\r\ + \n :local ExitOK [ :tostr \$1 ];\r\ + \n :local Name [ :tostr \$2 ];\r\ + \n :local Error [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :if (\$ExitOK = \"false\") do={\r\ + \n :log error (\$Name [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\\\$\") \ + \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with er\ + ror\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \ + \$Error) \".\" ]);\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set ExitOnError do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :local Error [ :tostr \$2 ];\r\ + \n :global IfThenElse;\r\ + \n :log error (\$Name . \" \" . [ \$IfThenElse ([ :pick \$Name 0 1 ] = \"\ + \\\$\") \\\r\ + \n \"Function\" \"Script\" ] . \" '\" . \$Name . \"' exited with erro\ + r\" . \\\r\ + \n [ \$IfThenElse (!(\$Error ~ \"^(|true|false)\\\$\")) (\": \" . \$E\ + rror) \".\" ]);\r\ + \n}\r\ + \n\r\ + \n:set MiniDateTimeStamp do={\r\ + \n :local mikro [ :tobool \$1 ];\r\ + \n /system/clock;\r\ + \n :local vdate [get date];\r\ + \n :local vtime [get time];\r\ + \n :local vdoff [:toarray \"0,4,5,7,8,10\"];\r\ + \n :local MM [:pick \$vdate (\$vdoff->2) (\$vdoff->3)];\r\ + \n :local M [:tonum \$MM];\r\ + \n :if (\$vdate ~ \".../../....\") do={\r\ + \n :set vdoff [:toarray \"7,11,1,3,4,6\"];\r\ + \n :set M ([:find \"xxanebarprayunulugepctovecANEBARPRAYUNULUGE\ + PCTOVEC\" [:pick \$vdate (\$vdoff->2) (\$vdoff->3)] -1] / 2);\r\ + \n :if (\$M>12) do={:set M (\$M - 12)}\r\ + \n :set MM [:pick (100 + \$M) 1 3];\r\ + \n }\r\ + \n :local yyyy [:pick \$vdate (\$vdoff->0) (\$vdoff->1)];\r\ + \n :local dd [:pick \$vdate (\$vdoff->4) (\$vdoff->5)];\r\ + \n :local HH [:pick \$vtime 0 2];\r\ + \n :local mm [:pick \$vtime 3 5];\r\ + \n :local ss [:pick \$vtime 6 8];\r\ + \n :local Return;\r\ + \n :if (\$mikro = true) do={\r\ + \n :set Return ([:pick \$yyyy 2 4] . [:pick \$dd 0 1] . [:pick \$HH 0\ + \_1] . [:pick \$mm 3 4] . [:pick \$ss 6 7]);\r\ + \n } else={\r\ + \n :set Return ([\$yyyy] . [\$MM] . [\$dd] . [\$HH] . [\$mm] . [\$ss]);\ + \r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set WaitForFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :local WaitTime [ :totime \$2 ];\r\ + \n :global CleanFilePath;\r\ + \n :global EitherOr;\r\ + \n :global MAX;\r\ + \n :set FileName [ \$CleanFilePath \$FileName ];\r\ + \n :local Delay ([ \$MAX [ \$EitherOr \$WaitTime 2s ] 100ms ] / 9);\r\ + \n :do {\r\ + \n :retry {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } delay=\$Delay max=10;\r\ + \n } on-error={ }\r\ + \n :while ([ :len [ /file/find where name=\$FileName ] ] > 0) do={\r\ + \n :do {\r\ + \n /file/get \$FileName;\r\ + \n :return true;\r\ + \n } on-error={ }\r\ + \n :delay \$Delay;\r\ + \n :set Delay (\$Delay * 3 / 2);\r\ + \n }\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set FileGet do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global WaitForFile;\r\ + \n :if ([ \$WaitForFile \$FileName 0s ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n :local FileVal false;\r\ + \n :do {\r\ + \n :set FileVal [ /file/get \$FileName ];\r\ + \n } on-error={ }\r\ + \n :return \$FileVal;\r\ + \n}\r\ + \n\r\ + \n:set RmDir do={\r\ + \n :local DirName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing directory: \". \$DirName);\r\ + \n :local DirVal [ \$FileGet \$DirName ];\r\ + \n :if (\$DirVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n };\r\ + \n :if (\$DirVal->\"type\" != \"directory\") do={\r\ + \n :log error (\$0 . \" Directory '\" . \$DirName . \"' is not a direct\ + ory.\");\r\ + \n :return false;\r\ + \n };\r\ + \n :onerror Err {\r\ + \n /file/remove \$DirName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing directory '\" . \$DirName . \"' failed\ + : \" . \$Err);\r\ + \n :return false;\r\ + \n };\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set RmFile do={\r\ + \n :local FileName [ :tostr \$1 ];\r\ + \n :global FileGet;\r\ + \n :log debug (\$0 . \" Removing file: \". \$FileName);\r\ + \n :local FileVal [ \$FileGet \$FileName ];\r\ + \n :if (\$FileVal = false) do={\r\ + \n :log debug (\$0 . \" ... which does not exist.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if (\$FileVal->\"type\" = \"directory\" || \$FileVal->\"type\" = \"di\ + sk\") do={\r\ + \n :log error (\$0 . \" File '\" . \$FileName . \"' is not a file.\");\ + \r\ + \n :return false;\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/remove \$FileName;\r\ + \n } do={\r\ + \n :log error (\$0 . \" Removing file '\" . \$FileName . \"' failed: \"\ + \_. \$Err); :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MkDir do={\r\ + \n :local Path [ :tostr \$1 ];\r\ + \n :global CleanFilePath;\r\ + \n :global FileGet;\r\ + \n :global RmDir;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :local MkTmpfs do={\r\ + \n :global WaitForFile;\r\ + \n :local TmpFs [ /disk/find where slot=tmpfs type=tmpfs ];\r\ + \n :if ([ :len \$TmpFs ] = 1) do={\r\ + \n :if ([ /disk/get \$TmpFs disabled ] = true) do={\r\ + \n :log info (\$0 . \" The tmpfs is disabled, enabling.\");\r\ + \n /disk/enable \$TmpFs;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :log info (\$0 . \" Creating disk of type tmpfs.\");\r\ + \n \$RmDir \"tmpfs\";\r\ + \n :onerror Err {\r\ + \n /disk/add slot=tmpfs type=tmpfs tmpfs-max-size=([ /system/resource\ + /get total-memory ] / 3);\r\ + \n \$WaitForFile \"tmpfs\";\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Creating disk of type tmpfs failed: \" . \$\ + Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n }\r\ + \n :set Path [ \$CleanFilePath \$Path ];\r\ + \n :if (\$Path = \"\") do={\r\ + \n :return true;\r\ + \n }\r\ + \n :log debug (\$0 . \" Making directory: \" . \$Path);\r\ + \n :local PathVal [ \$FileGet \$Path ];\r\ + \n :if (\$PathVal->\"type\" = \"directory\") do={\r\ + \n :log debug (\$0 . \" ... which already exists.\");\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ :pick \$Path 0 5 ] = \"tmpfs\") do={\r\ + \n :if ([ \$MkTmpfs ] = false) do={\r\ + \n :return false;\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n /file/add type=\"directory\" name=\$Path;\r\ + \n \$WaitForFile \$Path;\r\ + \n } do={\r\ + \n :log warning (\$0 . \" Making directory '\" . \$Path . \"' failed: \ + \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set MAX do={:if (\$1 > \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n:set MIN do={:if (\$1 < \$2) do={:return \$1}\r\ + \n :return \$2;\r\ + \n}\r\ + \n\r\ + \n:set CharacterMultiply do={\r\ + \n :local Str [ :tostr \$1 ];\r\ + \n :local Num [ :tonum \$2 ];\r\ + \n :if (\$Num = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :for I from=1 to=\$Num do={:set Return (\$Return . \$Str)}\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set CharacterReplace do={\r\ + \n :local String [ :tostr \$1 ];\r\ + \n :local ReplaceFrom [ :tostr \$2 ];\r\ + \n :local ReplaceWith [ :tostr \$3 ];\r\ + \n :local Return \"\";\r\ + \n :if (\$ReplaceFrom = \"\") do={:return \$String}\r\ + \n :while ([ :typeof [ :find \$String \$ReplaceFrom ] ] != \"nil\") do={\ + \r\ + \n :local Pos [ :find \$String \$ReplaceFrom ];\r\ + \n :set Return (\$Return . [ :pick \$String 0 \$Pos ] . \$ReplaceWith);\ + \r\ + \n :set String [ :pick \$String (\$Pos + [ :len \$ReplaceFrom ]) [ :len\ + \_\$String ] ];\r\ + \n }\r\ + \n :return (\$Return . \$String);\r\ + \n}\r\ + \n\r\ + \n:set IfThenElse do={\r\ + \n :if ([ :tostr \$1 ] = \"true\" || [ :tobool \$1 ] = true) do={:return \ + \$2};\r\ + \n :return \$3;\r\ + \n}\r\ + \n\r\ + \n:set EitherOr do={\r\ + \n :global IfThenElse;\r\ + \n :if ([ :typeof \$1 ] = \"num\") do={:return [ \$IfThenElse (\$1 != 0) \ + \$1 \$2 ]}\r\ + \n :if ([ :typeof \$1 ] = \"time\") do={:return [ \$IfThenElse (\$1 > 0s)\ + \_\$1 \$2 ]}\r\ + \n# this works for boolean values, literal ones with parentheses\r\ + \n :return [ \$IfThenElse ([ :len [ :tostr \$1 ] ] > 0) \$1 \$2 ];\r\ + \n}\r\ + \n\r\ + \n:set ParseKeyValueStore do={\r\ + \n :local Source \$1;\r\ + \n :if ([ :pick \$Source 0 1 ] = \"{\") do={\r\ + \n :do {\r\ + \n :return [ :deserialize from=json \$Source ];\r\ + \n } on-error={ }\r\ + \n } \r\ + \n :if ([ :typeof \$Source ] != \"array\") do={:set Source [ :tostr \$1 ]\ + }\r\ + \n :local Result ({});\r\ + \n :foreach KeyValue in=[ :toarray \$Source ] do={\r\ + \n :if ([ :find \$KeyValue \"=\" ]) do={\r\ + \n :local Key [ :pick \$KeyValue 0 [ :find \$KeyValue \"=\" ] ];\r\ + \n :local Value [ :pick \$KeyValue ([ :find \$KeyValue \"=\" ] + 1) [\ + \_:len \$KeyValue ] ];\r\ + \n :if (\$Value=\"true\") do={:set Value true}\r\ + \n :if (\$Value=\"false\") do={:set Value false}\r\ + \n :set (\$Result->\$Key) \$Value;\r\ + \n } else={:set (\$Result->\$KeyValue) true}\r\ + \n }\r\ + \n :return \$Result;\r\ + \n}\r\ + \n:set RequiredRouterOS do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :local Required [ :tostr \$2 ];\r\ + \n :local Warn [ :tostr \$3 ];\r\ + \n :global IfThenElse;\r\ + \n :global VersionToNum;\r\ + \n :if (!(\$Required ~ \"^\\\\d+\\\\.\\\\d+((alpha|beta|rc|\\\\.)\\\\d+|)\ + \\\$\")) do={\r\ + \n :log error (\$0 . \" No valid RouterOS version: \" . \$Required);\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ \$VersionToNum \$Required ] > [ \$VersionToNum [ /system/packag\ + e/update/get installed-version ] ]) do={\r\ + \n :if (\$Warn = \"true\") do={\r\ + \n :log warning (\$0 . \" This \" . [ \$IfThenElse ([ :pick \$Caller \ + 0 ] = (\"\\\$\")) \"function\" \"script\" ] . \\\r\ + \n \" '\" . \$Caller . \"' (at least specific functionality) requir\ + es RouterOS \" . \$Required . \". Please update!\");\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set ValidateSyntax do={\r\ + \n :local Code [ :tostr \$1 ];\r\ + \n :global LogPrint;\r\ + \n :onerror Err {\r\ + \n [ :parse (\":local Validate do={\\n\" . \$Code . \"\\n}\") ];\r\ + \n } do={\r\ + \n \$LogPrint debug \$0 (\"Valdation failed: \" . \$Err);\r\ + \n :return false;\r\ + \n }\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set VersionToNum do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :local Multi 0x1000000;\r\ + \n :local Return 0;\r\ + \n :global CharacterReplace;\r\ + \n :set Input [ \$CharacterReplace \$Input \".\" \",\" ];\r\ + \n :foreach I in={ \"zero\"; \"alpha\"; \"beta\"; \"rc\" } do={\r\ + \n :set Input [ \$CharacterReplace \$Input \$I (\",\" . \$I . \",\") ];\ + \r\ + \n }\r\ + \n :foreach Value in=([ :toarray \$Input ], 0) do={\r\ + \n :local Num [ :tonum \$Value ];\r\ + \n :if (\$Multi = 0x100) do={\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={\r\ + \n :set Return (\$Return + 0xff00);\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n } else={\r\ + \n :if (\$Value = \"zero\") do={ }\r\ + \n :if (\$Value = \"alpha\") do={ :set Return (\$Return + 0x3f00); \ + }\r\ + \n :if (\$Value = \"beta\") do={ :set Return (\$Return + 0x5f00); }\ + \r\ + \n :if (\$Value = \"rc\") do={ :set Return (\$Return + 0x7f00); }\r\ + \n }\r\ + \n }\r\ + \n :if ([ :typeof \$Num ] = \"num\") do={ :set Return (\$Return + (\$Va\ + lue * \$Multi)); }\r\ + \n :set Multi (\$Multi / 0x100);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set ScriptLock do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local WaitMax [ :totime \$2 ];\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global ScriptLockOrder;\r\ + \n :if ([ :typeof \$ScriptLockOrder ] = \"nothing\") do={\r\ + \n :set ScriptLockOrder ({});\r\ + \n }\r\ + \n :if ([ :typeof (\$ScriptLockOrder->\$Script) ] = \"nothing\") do={\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :local JobCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :return [ :len [ /system/script/job/find where script=\$Script ] ];\ + \r\ + \n }\r\ + \n :local TicketCount do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :local Count 0;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:set Count (\$Count \ + + 1)}\r\ + \n }\r\ + \n :return \$Count;\r\ + \n }\r\ + \n :local IsFirstTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Check [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if (\$Ticket = \$Check) do={:return true}\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\" && \$Ticket != \$Check) d\ + o={:return false}\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :local AddTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Add [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :while (true) do={\r\ + \n :local Pos [ :len (\$ScriptLockOrder->\$Script) ];\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Pos) \$Add;\r\ + \n :delay 10ms;\r\ + \n :if ((\$ScriptLockOrder->\$Script->\$Pos) = \$Add) do={:return tru\ + e}\r\ + \n }\r\ + \n }\r\ + \n :local RemoveTicket do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :local Remove [ :tostr \$2 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Id,Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :while ((\$ScriptLockOrder->\$Script->\$Id) = \$Remove) do={\r\ + \n :set (\$ScriptLockOrder->\$Script->\$Id);\r\ + \n :delay 10ms;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :local CleanupTickets do={\r\ + \n :local Script [ :tostr \$1 ];\r\ + \n :global ScriptLockOrder;\r\ + \n :foreach Ticket in=(\$ScriptLockOrder->\$Script) do={\r\ + \n :if ([ :typeof \$Ticket ] != \"nothing\") do={:return false}\r\ + \n }\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n }\r\ + \n :if ([ :typeof \$WaitMax ] = \"nil\" ) do={:set WaitMax 0s}\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\r\ + \n :log error (\$0 . \" A script named '\" . \$Script . \"' does not ex\ + ist!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$JobCount \$Script ] = 0) do={\r\ + \n \$LogPrint error \$0 (\"No script '\" . \$Script . \"' is running!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$TicketCount \$Script ] >= [ \$JobCount \$Script ]) do={\r\ + \n :log error (\$0 . \" More tickets than running scripts '\" . \$Scrip\ + t . \"', resetting!\");\r\ + \n :set (\$ScriptLockOrder->\$Script) ({});\r\ + \n /system/script/job/remove [ find where script=\$Script ];\r\ + \n }\r\ + \n :local MyTicket [ \$GetRandom20CharAlNum 6 ];\r\ + \n \$AddTicket \$Script \$MyTicket;\r\ + \n :local WaitInterval (\$WaitMax / 20);\r\ + \n :local WaitTime \$WaitMax;\r\ + \n :while (\$WaitTime > 0 && \\\r\ + \n ([ \$IsFirstTicket \$Script \$MyTicket ] = false || \\\r\ + \n [ \$TicketCount \$Script ] < [ \$JobCount \$Script ])) do={\r\ + \n :set WaitTime (\$WaitTime - \$WaitInterval);\r\ + \n :delay \$WaitInterval;\r\ + \n }\r\ + \n :if ([ \$IsFirstTicket \$Script \$MyTicket ] = true && \\\r\ + \n [ \$TicketCount \$Script ] = [ \$JobCount \$Script ]) do={\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$CleanupTickets \$Script;\r\ + \n :return true;\r\ + \n }\r\ + \n \$RemoveTicket \$Script \$MyTicket;\r\ + \n \$LogPrint debug \$0 (\"Script '\" . \$Script . \"' started more than \ + once\" . \\\r\ + \n [ \$IfThenElse (\$WaitTime < \$WaitMax) \" and timed out waiting for\ + \_lock\" \"\" ] . \"...\");\r\ + \n :return false;\r\ + \n}\r\ + \n\r\ + \n:set SendNotification do={ :onerror Err {\r\ + \n :global SendNotification2;\r\ + \n \$SendNotification2 ({ origin=\$0; subject=\$1; message=\$2; link=\$3;\ + \_silent=\$4 });\r\ + \n} do={:global ExitOnError; \$ExitOnError \$0 \$Err}\r\ + \n}\r\ + \n\r\ + \n:set SendNotification2 do={\r\ + \n :local Notification \$1;\r\ + \n :global NotificationFunctions;\r\ + \n :foreach FunctionName,Discard in=\$NotificationFunctions do={\r\ + \n (\$NotificationFunctions->\$FunctionName) (\"\\\$NotificationFunctio\ + ns->\\\"\" . \$FunctionName . \"\\\"\") \$Notification;\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:set SymbolByUnicodeName do={\r\ + \n :local Name [ :tostr \$1 ];\r\ + \n :global EitherOr;\r\ + \n :global SymbolsExtra;\r\ + \n :local Symbols ({\r\ + \n \"abacus\"=\"\\F0\\9F\\A7\\AE\";\r\ + \n \"alarm-clock\"=\"\\E2\\8F\\B0\";\r\ + \n \"arrow-down\"=\"\\E2\\AC\\87\";\r\ + \n \"arrow-up\"=\"\\E2\\AC\\86\";\r\ + \n \"calendar\"=\"\\F0\\9F\\93\\85\";\r\ + \n \"card-file-box\"=\"\\F0\\9F\\97\\83\";\r\ + \n \"chart-decreasing\"=\"\\F0\\9F\\93\\89\";\r\ + \n \"chart-increasing\"=\"\\F0\\9F\\93\\88\";\r\ + \n \"cloud\"=\"\\E2\\98\\81\";\r\ + \n \"cross-mark\"=\"\\E2\\9D\\8C\";\r\ + \n \"earth\"=\"\\F0\\9F\\8C\\8D\";\r\ + \n \"fire\"=\"\\F0\\9F\\94\\A5\";\r\ + \n \"floppy-disk\"=\"\\F0\\9F\\92\\BE\";\r\ + \n \"gear\"=\"\\E2\\9A\\99\";\r\ + \n \"heart\"=\"\\E2\\99\\A5\";\r\ + \n \"high-voltage-sign\"=\"\\E2\\9A\\A1\";\r\ + \n \"incoming-envelope\"=\"\\F0\\9F\\93\\A8\";\r\ + \n \"information\"=\"\\E2\\84\\B9\";\r\ + \n \"large-orange-circle\"=\"\\F0\\9F\\9F\\A0\";\r\ + \n \"large-red-circle\"=\"\\F0\\9F\\94\\B4\";\r\ + \n \"link\"=\"\\F0\\9F\\94\\97\";\r\ + \n \"lock-with-ink-pen\"=\"\\F0\\9F\\94\\8F\";\r\ + \n \"memo\"=\"\\F0\\9F\\93\\9D\";\r\ + \n \"mobile-phone\"=\"\\F0\\9F\\93\\B1\";\r\ + \n \"pushpin\"=\"\\F0\\9F\\93\\8C\";\r\ + \n \"scissors\"=\"\\E2\\9C\\82\";\r\ + \n \"scroll\"=\"\\F0\\9F\\93\\9C\";\r\ + \n \"smiley-partying-face\"=\"\\F0\\9F\\A5\\B3\";\r\ + \n \"smiley-smiling-face\"=\"\\E2\\98\\BA\";\r\ + \n \"smiley-winking-face-with-tongue\"=\"\\F0\\9F\\98\\9C\";\r\ + \n \"sparkles\"=\"\\E2\\9C\\A8\";\r\ + \n \"speech-balloon\"=\"\\F0\\9F\\92\\AC\";\r\ + \n \"star\"=\"\\E2\\AD\\90\";\r\ + \n \"warning-sign\"=\"\\E2\\9A\\A0\";\r\ + \n \"white-heavy-check-mark\"=\"\\E2\\9C\\85\"\r\ + \n }, \$SymbolsExtra);\r\ + \n :local Magic [ :pick [ /system/clock/get date ] 4 10 ];\r\ + \n :local Special {\r\ + \n \"information-04-01\"=\"\\F0\\9F\\9A\\BB\";\r\ + \n \"large-orange-circle-04-01\"=\"\\F0\\9F\\8D\\8A\";\r\ + \n \"large-orange-circle-10-31\"=\"\\F0\\9F\\8E\\83\";\r\ + \n \"large-red-circle-04-01\"=\"\\F0\\9F\\8D\\92\" };\r\ + \n :if ([ :len (\$Symbols->\$Name) ] = 0) do={\r\ + \n :log warning (\$0 . \"No symbol available for name '\" . \$Name . \"\ + '!\");\r\ + \n :return \"\";\r\ + \n }\r\ + \n :return ([ \$EitherOr (\$Special->(\$Name . \$Magic)) (\$Symbols->\$Na\ + me) ] . \"\\EF\\B8\\8F\");\r\ + \n}\r\ + \n\r\ + \n:set SymbolForNotification do={\r\ + \n :global NotificationsWithSymbols;\r\ + \n :global SymbolByUnicodeName;\r\ + \n :global IfThenElse;\r\ + \n :if (\$NotificationsWithSymbols != true) do={:return [ \$IfThenElse ([\ + \_:len \$2 ] > 0) ([ :tostr \$2 ] . \" \") \"\" ]}\r\ + \n :local Return \"\";\r\ + \n :foreach Symbol in=[ :toarray \$1 ] do={:set Return (\$Return . [ \$Sy\ + mbolByUnicodeName \$Symbol ])}\r\ + \n :return (\$Return . \" \");\r\ + \n}\r\ + \n\r\ + \n:set Unix2Dos do={:return [ :tocrlf [ :tostr \$1 ] ]}\r\ + \n:set UrlEncode do={\r\ + \n :local Input [ :tostr \$1 ];\r\ + \n :if ([ :len \$Input ] = 0) do={:return \"\"}\r\ + \n :local Return \"\";\r\ + \n :local Chars (\"\\n\\r !\\\"#\\\$%&'()*+,:;<=>\?@[\\\\]^`{|}~\");\r\ + \n :local Subs { \"%0A\"; \"%0D\"; \"%20\"; \"%21\"; \"%22\"; \"%23\"; \"\ + %24\"; \"%25\"; \"%26\"; \"%27\";\r\ + \n \"%28\"; \"%29\"; \"%2A\"; \"%2B\"; \"%2C\"; \"%3A\"; \"%3B\"; \ + \"%3C\"; \"%3D\"; \"%3E\"; \"%3F\";\r\ + \n \"%40\"; \"%5B\"; \"%5C\"; \"%5D\"; \"%5E\"; \"%60\"; \"%7B\"; \ + \"%7C\"; \"%7D\"; \"%7E\" };\r\ + \n :for I from=0 to=([ :len \$Input ] - 1) do={\r\ + \n :local Char [ :pick \$Input \$I ];\r\ + \n :local Replace [ :find \$Chars \$Char ];\r\ + \n :if ([ :typeof \$Replace ] = \"num\") do={:set Char (\$Subs->\$Repla\ + ce)}\r\ + \n :set Return (\$Return . \$Char);\r\ + \n }\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set IsDNSResolving do={\r\ + \n :do {:resolve \"api.telegram.org\"} on-error={:return false}\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsFullyConnected do={\r\ + \n :global IsDNSResolving;\r\ + \n :global IsTimeSync;\r\ + \n :if ([ \$IsDNSResolving ] = false) do={:return false};\r\ + \n :if ([ \$IsTimeSync ] = false) do={:return false};\r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set IsTimeSync do={\r\ + \n :global IsTimeSyncCached;\r\ + \n :global IsTimeSyncResetNtp;\r\ + \n :if (\$IsTimeSyncCached = true) do={:return true}\r\ + \n :if ([ /system/ntp/client/get enabled ] = true) do={\r\ + \n :if ([ /system/ntp/client/get status ] = \"synchronized\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :local Uptime [ /system/resource/get uptime ];\r\ + \n :if ([ :typeof \$IsTimeSyncResetNtp ] = \"nothing\") do={\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n }\r\ + \n :if (\$Uptime - \$IsTimeSyncResetNtp < 3m) do={:return false}\r\ + \n :log warning \"\$0 The ntp client is configured, but did not sync.\"\ + ;\r\ + \n :set IsTimeSyncResetNtp \$Uptime;\r\ + \n /system/ntp/client/set enabled=no;\r\ + \n :delay 20ms;\r\ + \n /system/ntp/client/set enabled=yes;\r\ + \n :return false;\r\ + \n }\r\ + \n :if ([ /system/license/get ]->\"level\" = \"free\" || \\\r\ + \n [ /system/resource/get ]->\"board-name\" = \"x86\") do={\r\ + \n :log debug \"\$0 No ntp client configured, relying on RTC for CHR fr\ + ee license and x86.\";\r\ + \n :return true;\r\ + \n }\r\ + \n :if ([ /ip/cloud/get update-time ] = true) do={\r\ + \n :if ([ :typeof [ /ip/cloud/get public-address ] ] = \"ip\") do={\r\ + \n :set IsTimeSyncCached true;\r\ + \n :return true;\r\ + \n }\r\ + \n :return false;\r\ + \n }\r\ + \n :log debug \"\$0 No time source configured! Returning gracefully...\";\ + \r\ + \n :return true;\r\ + \n}\r\ + \n\r\ + \n:set FetchHugeFiles do={\r\ + \n :local ScriptName [ :tostr \$1 ];\r\ + \n :local Url [ :tostr \$2 ];\r\ + \n :local CheckCert [ :tostr \$3 ];\r\ + \n\r\ + \n :global CleanName;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global GetRandom20CharAlNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global MkDir;\r\ + \n :global RmDir;\r\ + \n :global RmFile;\r\ + \n :global WaitForFile;\r\ + \n\r\ + \n :set CheckCert [ \$IfThenElse (\$CheckCert = \"false\") \"no\" \"yes-w\ + ithout-crl\" ];\r\ + \n\r\ + \n :local DirName (\"tmpfs/\" . [ \$CleanName \$ScriptName ]);\r\ + \n :if ([ \$MkDir \$DirName ] = false) do={\r\ + \n \$LogPrint error \$0 (\"Failed creating directory!\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileName (\$DirName . \"/\" . [ \$CleanName \$0 ] . \"-\" . [ \ + \$GetRandom20CharAlNum ]);\r\ + \n :onerror Err {\r\ + \n /tool/fetch check-certificate=\$CheckCert \$Url dst-path=\$FileName \ + \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$ScriptName ] }) as-va\ + lue;\r\ + \n } do={\r\ + \n :if ([ \$WaitForFile \$FileName 500ms ] = true) do={\r\ + \n \$RmFile \$FileName;\r\ + \n }\r\ + \n \$LogPrint debug \$0 (\"Failed downloading from \" . \$Url . \" - \"\ + \_. \$Err);\r\ + \n \$RmDir \$DirName;\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$WaitForFile \$FileName 5s ] = false) do={\r\ + \n \$LogPrint debug \$0 (\"The file downloaded from \" . \$Url . \" did\ + \_not show up.\");\r\ + \n :return false;\r\ + \n }\r\ + \n\r\ + \n :local FileSize [ /file/get \$FileName size ];\r\ + \n :local Return \"\";\r\ + \n :local VarSize 0;\r\ + \n :while (\$VarSize != \$FileSize) do={\r\ + \n :set Return (\$Return . ([ /file/read offset=\$VarSize chunk-size=32\ + 768 file=\$FileName as-value ]->\"data\"));\r\ + \n :set FileSize [ /file/get \$FileName size ];\r\ + \n :set VarSize [ :len \$Return ];\r\ + \n :if (\$VarSize > \$FileSize) do={\r\ + \n :delay 100ms;\r\ + \n }\r\ + \n }\r\ + \n \$RmDir \$DirName;\r\ + \n :return \$Return;\r\ + \n}\r\ + \n\r\ + \n:set FetchUserAgentStr do={\r\ + \n :local Caller [ :tostr \$1 ];\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global CommitBrief;\r\ + \n :global IfThenElse;\r\ + \n :local Resource [ /system/resource/get ];\r\ + \n :return (\"User-Agent: Mikrotik/\" . \$Resource->\"version\" . \" \" .\ + \_\$Resource->\"architecture-name\" . \\\r\ + \n \" \" . \$Caller . \"/Fetch (\" . \$GlobalScriptsUrl . \"; \" . [ \$\ + CommitBrief ] . \")\");\r\ + \n}\r\ + \n\r\ + \n:set ScriptInstallUpdate do={ :onerror Err {\r\ + \n :local Scripts [ :toarray \$1 ];\r\ + \n :local NewComment [ :tostr \$2 ];\r\ + \n :global InitSetup;\r\ + \n\r\ + \n :global CommitId;\r\ + \n :global ScriptUpdatesCRLF;\r\ + \n :global GlobalConfVersion;\r\ + \n :global Identity;\r\ + \n :global CertificateAvailable;\r\ + \n :global CheckSumsVerify;\r\ + \n :global GlobalScriptsUrl;\r\ + \n :global SumsDirAndFileName;\r\ + \n :global GlobalScriptsUrlSuffix;\r\ + \n :global EitherOr;\r\ + \n :global FetchUserAgentStr;\r\ + \n :global Grep;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global ParseKeyValueStore;\r\ + \n :global RequiredRouterOS;\r\ + \n :global SendNotification2;\r\ + \n :global SymbolForNotification;\r\ + \n :global ValidateSyntax;\r\ + \n :global CommentsInScripts;\r\ + \n\r\ + \n :if ([ \$CertificateAvailable \"Root YE\" \"fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, trying wit\ + hout.\");\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=\$Scripts do={\r\ + \n :if ([ :len [ /system/script/find where name=\$Script ] ] = 0) do={\ + \r\ + \n \$LogPrint info \$0 (\"Adding new script: \" . \$Script);\r\ + \n /system/script/add name=\$Script owner=\$Script source=\"#!rsc by \ + Vados\\n\" comment=\$NewComment;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local CommitIdBefore \$CommitId;\r\ + \n :local GlobalConfVersionBefore \$GlobalConfVersion;\r\ + \n :local ReloadGlobal false;\r\ + \n :local DeviceMode [ /system/device-mode/get ];\r\ + \n\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSums ({});\r\ + \n :do {\r\ + \n :local Url (\$GlobalScriptsUrl . \$SumsDirAndFileName . \$GlobalScr\ + iptsUrlSuffix);\r\ + \n \$LogPrint debug \$0 (\"Fetching checksums from url: \" . \$Url);\ + \r\ + \n :set CheckSums [ :deserialize from=json ([ /tool/fetch check-certi\ + ficate=yes-without-crl \\\r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url output\ + =user as-value ]->\"data\") ];\r\ + \n } on-error={ \$LogPrint warning \$0 (\"Err = \" . \$Err); }\r\ + \n }\r\ + \n\r\ + \n :foreach Script in=[ /system/script/find where source~\"^#!rsc by Vado\ + s\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :local ScriptInfo [ \$ParseKeyValueStore (\$ScriptVal->\"comment\") \ + ];\r\ + \n :local SourceNew;\r\ + \n\r\ + \n :foreach Scheduler in=[ /system/scheduler/find where on-event~(\"\\\ + \\b\" . \$ScriptVal->\"name\" . \"\\\\b\") ] do={\r\ + \n :local SchedulerVal [ /system/scheduler/get \$Scheduler ];\r\ + \n :if (\$ScriptVal->\"policy\" != \$SchedulerVal->\"policy\") do={\r\ + \n \$LogPrint warning \$0 (\"Policies differ for script '\" . \$Scr\ + iptVal->\"name\" . \"' and its scheduler '\" . \$SchedulerVal->\"name\" . \ + \"'!\");\r\ + \n }\r\ + \n }\r\ + \n :do {\r\ + \n :if (\$ScriptInfo->\"ignore\" = true) do={\r\ + \n \$LogPrint debug \$0 (\"Ignoring script '\" . \$ScriptVal->\"nam\ + e\" . \"', as requested.\");\r\ + \n :error true;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :local CheckSum (\$CheckSums->(\$ScriptVal->\"name\"));\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Scri\ + ptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :convert transform=md5 to=hex [ :tolf (\$ScriptVal->\"sou\ + rce\") ] ] = \$CheckSum) do={\r\ + \n \$LogPrint debug \$0 (\"Checksum for script '\" . \$ScriptVal-\ + >\"name\" . \"' matches, ignoring.\");\r\ + \n :error true;\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len (\$ScriptInfo->\"certificate\") ] > 0) do={\r\ + \n :if ([ \$CertificateAvailable (\$ScriptInfo->\"certificate\") \"\ + fetch\" ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Downloading certificate failed, tryi\ + ng without.\");\r\ + \n }\r\ + \n }\r\ + \n :onerror Err {\r\ + \n :local BaseUrl [ \$EitherOr (\$ScriptInfo->\"base-url\") \$Globa\ + lScriptsUrl ];\r\ + \n :local UrlSuffix [ \$EitherOr (\$ScriptInfo->\"url-suffix\") \$G\ + lobalScriptsUrlSuffix ];\r\ + \n :local Url (\$BaseUrl . \$ScriptVal->\"name\" . \".rsc\" . \$Url\ + Suffix);\r\ + \n \$LogPrint warning \$0 (\"Fetching script '\" . (\$ScriptVal->\"\ + name\") . \"' from url: \" . \$Url);\r\ + \n :local Result [ /tool/fetch check-certificate=yes-without-crl \\\ + \r\ + \n http-header-field=({ [ \$FetchUserAgentStr \$0 ] }) \$Url outp\ + ut=user as-value ];\r\ + \n :if (\$Result->\"status\" = \"finished\") do={\r\ + \n :set SourceNew [ :tolf (\$Result->\"data\") ];\r\ + \n } \r\ + \n } do={\r\ + \n \$LogPrint warning \$0 (\"Failed fetching script '\" . \$ScriptV\ + al->\"name\" . \"': \" . \$Err);\r\ + \n :if (\$Err != \"Fetch failed with status 404\") do={\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$ScriptVal->\"source\" = \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Removing dummy. Typo on installation\ + \?\");\r\ + \n /system/script/remove \$Script;\r\ + \n :error false;\r\ + \n }\r\ + \n :if (\$CheckSumsVerify = true) do={\r\ + \n :if ([ :len (\$ScriptInfo->\"base-url\") ] = 0 && [ :len (\$Sc\ + riptInfo->\"url-suffix\") ] = 0 && \\\r\ + \n [ :len \$CheckSum ] = 0) do={\r\ + \n \$LogPrint warning \$0 (\"Added the script manually\? Skip u\ + pdates with 'ignore=true' in comment.\");\r\ + \n }\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$SourceNew ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"No update for script '\" . (\$ScriptVal-\ + >\"name\") . \"'.\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local SourceCRLF [ :tocrlf \$SourceNew ];\r\ + \n :if (\$InitSetup != true && ((\$ScriptVal->\"name\") != \"AM-Globa\ + lConfig\" || (\$ScriptVal->\"name\") != \"AM-GlobalFunc\")) do={\r\ + \n :if (\$SourceNew = (\$ScriptVal->\"source\") || \$SourceCRLF = (\ + \$ScriptVal->\"source\")) do={\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\") \ + . \"' source did not change. End of lines set to CRLF.\");\r\ + \n if (\$ScriptUpdatesCRLF = false) do={\r\ + \n :put [ :tolf \$SourceNew ];\r\ + \n \$LogPrint debug \$0 (\"Script '\" . (\$ScriptVal->\"name\"\ + ) . \"' source update end of lines to LF.\");\r\ + \n }\r\ + \n :error false;\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if ([ :pick \$SourceNew 0 14 ] != \"#!rsc by Vados\") do={\r\ + \n \$LogPrint warning \$0 (\"Looks like new script '\" . \$ScriptVa\ + l->\"name\" . \"' is not valid (missing shebang = '\$shebang') Ignoring!\"\ + );\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if (\$CommentsInScripts = true) do={\r\ + \n :local CommentLine [ \$Grep \$SourceNew (\"\\23 Script comment:\ + \_\") ];\r\ + \n :if ([ :len \$CommentLine ] = 0) do={\r\ + \n \$LogPrint debug \$0 (\"The search in new script '\" . (\$Scr\ + iptVal->\"name\") . \"' for comment in script body, is not found result Ig\ + noring!\");\r\ + \n :error false;\r\ + \n } else={\r\ + \n :if ([ :len (\$ScriptVal->\"comment\")] = 0 || [ :len (\$Scri\ + ptVal->\"comment\")] != [ :pick \$CommentLine ([ :find \$CommentLine \":\"\ + ] + 2) [ :len \$CommentLine] ]) do={\r\ + \n \$LogPrint debug \$0 (\"Exsiting comment for script '\" . (\ + \$ScriptVal->\"name\") . \"' is '\" . (\$ScriptVal->\"comment\") . \"'.\")\ + ;\r\ + \n :set (\$ScriptVal->\"comment\") [ :pick \$CommentLine ([ :f\ + ind \$CommentLine \":\"] + 2) [ :len \$CommentLine] ];\r\ + \n \$LogPrint debug \$0 (\"New comment (\" . (\$ScriptVal->\"c\ + omment\") . \") for script '\" . (\$ScriptVal->\"name\") . \"' has been ad\ + ded!\");\r\ + \n } else={\r\ + \n \$LogPrint debug \$0 (\"Comment for script '\" . (\$ScriptV\ + al->\"name\") . \"' did not change.\");\r\ + \n :error false;\r\ + \n }\r\ + \n } \r\ + \n }\r\ + \n\r\ + \n :local RequiredROS ([ \$ParseKeyValueStore [ \$Grep \$SourceNew (\ + \"\\23 requires RouterOS, \") ] ]->version);\r\ + \n :if ([ \$RequiredRouterOS \$0 [ \$EitherOr \$RequiredROS \"0.0\" ]\ + \_false ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires RouterOS \" . \\\r\ + \n \$RequiredROS . \", which is not met by your installation. I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n :local RequiredDM [ \$ParseKeyValueStore [ \$Grep \$SourceNew (\"\ + \\23 requires device-mode, \") ] ];\r\ + \n :local MissingDM ({});\r\ + \n :foreach Feature,Value in=\$RequiredDM do={\r\ + \n :if ([ :typeof (\$DeviceMode->\$Feature) ] = \"bool\" && (\$Devi\ + ceMode->\$Feature) = false) do={\r\ + \n :set MissingDM (\$MissingDM, \$Feature);\r\ + \n }\r\ + \n }\r\ + \n :if ([ :len \$MissingDM ] > 0) do={\r\ + \n \$LogPrint warning \$0 (\"The script '\" . (\$ScriptVal->\"name\ + \") . \"' requires disabled \" . \\\r\ + \n \"device-mode features (\" . [ :tostr \$MissingDM ] . \"). I\ + gnoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :if ([ \$ValidateSyntax \$SourceNew ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Syntax validation for script '\" . (\$\ + ScriptVal->\"name\") . \"' failed! Ignoring!\");\r\ + \n :error false;\r\ + \n }\r\ + \n \r\ + \n :log info (\"Updating script: \" . (\$ScriptVal->\"name\") . \" Sc\ + ript comment: \" . (\$ScriptVal->\"comment\"));\r\ + \n\r\ + \n /system/script/set owner=(\$ScriptVal->\"name\") comment=(\$Script\ + Val->\"comment\") \\\r\ + \n source=[ \$IfThenElse (\$ScriptUpdatesCRLF = true) \$SourceCRL\ + F \$SourceNew ] \$Script;\r\ + \n :if (\$ScriptVal->\"name\" = \"AM-GlobalConfig\" || \\\r\ + \n \$ScriptVal->\"name\" = \"AM-GlobalFunc\" || \\\r\ + \n \$ScriptVal->\"name\" ~ (\"^(AM-GlobalFunc\\\\.d|mod)/.\")) d\ + o={\r\ + \n :set ReloadGlobal true;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n :if (\$ReloadGlobal = true) do={\r\ + \n \$LogPrint info \$0 (\"Reloading global configuration and functions.\ + \");\r\ + \n :onerror Err {\r\ + \n :global InitSetup (a);\r\ + \n /system/script {run AM-GlobalConfig; run AM-GlobalFunc;};\r\ + \n } do={\$LogPrint error \$0 (\"Reloading global configuration and fun\ + ctions failed! \" . \$Err)}\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore > \$GlobalConfVersion) do={\r\ + \n \$LogPrint warning \$0 (\"The configuration version decreased from \ + \" . \\\r\ + \n \$GlobalConfVersionBefore . \" to \" . \$GlobalConfVersion . \\\r\ + \n \". Installed an older version\?\");\r\ + \n }\r\ + \n :if (\$GlobalConfVersionBefore < \$GlobalConfVersion) do={\r\ + \n :global GlobalConfChanges;\r\ + \n :global GlobalConfMigration;\r\ + \n :local ChangeLogCode;\r\ + \n :if ([ :len \$ChangeLogCode ] > 0) do={\r\ + \n :if ([ \$ValidateSyntax \$ChangeLogCode ] = true) do={\r\ + \n :onerror Err {\r\ + \n [ :parse \$ChangeLogCode ];\r\ + \n } do={\$LogPrint warning \$0 (\"The changelog failed to run: \" \ + . \$Err)}\r\ + \n } else={\$LogPrint warning \$0 (\"The changelog failed syntax vali\ + dation!\")}\r\ + \n }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Migration (\$GlobalConfMigration->[ :tostr \$I ]);\r\ + \n :do {\r\ + \n :if ([ :typeof \$Migration ] != \"str\") do={\r\ + \n \$LogPrint debug \$0 (\"Migration code for change \" . \$I .\ + \_\" is not available.\");\r\ + \n :error false;\r\ + \n }\r\ + \n :if ([ \$ValidateSyntax \$Migration ] = false) do={\r\ + \n \$LogPrint warning \$0 (\"Migration code for change \" . \$I\ + \_. \" failed syntax validation!\");\r\ + \n :error false}\r\ + \n \$LogPrint info \$0 (\"Applying migration for change \" . \$I \ + . \": \" . \$Migration);\r\ + \n :onerror Err {\r\ + \n [ :parse \$Migration ];\r\ + \n } do={\$LogPrint warning \$0 (\"Migration code for change \" .\ + \_\$I . \" failed to run: \" . \$Err)}\r\ + \n } on-error={ }\r\ + \n }\r\ + \n }\r\ + \n :local NotificationMessage (\"The configuration version on \" . \$Id\ + entity . \" increased \" . \\\r\ + \n \"to \" . \$GlobalConfVersion . \", current configuration may nee\ + d modification. \" . \\\r\ + \n \"Please review and update global-config-overlay, then re-run glo\ + bal-config.\");\r\ + \n \$LogPrint info \$0 (\$NotificationMessage);\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nChanges:\ + \");\r\ + \n :for I from=(\$GlobalConfVersionBefore + 1) to=\$GlobalConfVersion\ + \_do={\r\ + \n :local Change (\$GlobalConfChanges->[ :tostr \$I ]);\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n \" . \\\ + \r\ + \n [ \$SymbolForNotification \"pushpin\" \"*\" ] . \$Change);\r\ + \n \$LogPrint info \$0 (\"Change \" . \$I . \": \" . \$Change);\r\ + \n }\r\ + \n } else={\r\ + \n :set NotificationMessage (\$NotificationMessage . \"\\n\\nNews and\ + \_changes are not available.\");\r\ + \n\r\ + \n }\r\ + \n\r\ + \n :if ([ :len \$GlobalConfChanges ] > 0) do={ :set GlobalConfChanges; \ + } else={ :global GlobalConfChanges (a); }\r\ + \n :if ([ :len \$GlobalConfMigration ] > 0) do={ :set GlobalConfMigrati\ + on; } else={ :global GlobalConfMigration (a); }\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n} }\r\ + \n\r\ + \n# load modules\r\ + \n:foreach Script in=[ /system/script/find where name ~ \"^(global-functio\ + ns\\\\.d|mod)/.\" ] do={\r\ + \n :local ScriptVal [ /system/script/get \$Script ];\r\ + \n :if ([ \$ValidateSyntax (\$ScriptVal->\"source\") ] = true) do={\r\ + \n :onerror Err {\r\ + \n /system/script/run \$Script;\r\ + \n } do={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' f\ + ailed to run: \" . \$Err);\r\ + \n }\r\ + \n } else={\r\ + \n \$LogPrint error \$0 (\"Module '\" . \$ScriptVal->\"name\" . \"' fai\ + led syntax validation, skipping.\");\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n# Add and fix global scheduler\r\ + \n:put \"Add or/and fix Global scheduler...\";\r\ + \n:local OnEvent \"/system/script { run AM-GlobalConfig; run AM-GlobalFunc\ + ; }\";\r\ + \n:local Comment \"Every Day Set Global Environment Variables\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-SetGlobalEnv\" ] ] \ + = 0) do={\r\ + \n /system/scheduler/add name=\"AM-SetGlobalEnv\" comment=\$Comment on-ev\ + ent=\$OnEvent start-time=startup;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" comment ] != \$Comment)\ + \_do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" comment=\$Comment;\r\ + \n}\r\ + \n:if ([ /system/scheduler/get \"AM-SetGlobalEnv\" on-event ] != \$OnEvent\ + ) do={\r\ + \n /system/scheduler/set \"AM-SetGlobalEnv\" on-event=\$OnEvent;\r\ + \n}\r\ + \n# Add Update Script scheduler\r\ + \n:put \"Add or/and fix Update Script scheduler\";\r\ + \n:set OnEvent \":global ScriptInstallUpdate; \\\$ScriptInstallUpdate;\";\ + \r\ + \n:set Comment \"Every Day Check For Update Scripts\";\r\ + \n:if ([ :len [ /system/scheduler/find where name=\"AM-ScriptInstallUpdate\ + \" ] ] = 0) do={\r\ + \n/system/scheduler/add name=\"AM-ScriptInstallUpdate\" comment=\$Comment \ + start-time=startup interval=1d on-event=\$OnEvent;\r\ + \n}\r\ + \n\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady;\r\ + \n :retry { :if (\$GlobalConfReady != true) do={ :error (\"Global configs\ + \_not ready.\"); }; } delay=100ms max=5;\r\ + \n\r\ + \n:log warning (\"This script \$ScriptName Loaded \" . \\\r\ + \n [ \$IfThenElse (\$CommitId != \"unknown\") ([ \$CommitBrief ] . \" \ + \") ] . \\\r\ + \n \"on \" . \$devBoardName . \"\\nRouterOS: \" . \$devCurVersion . \"\ + \\nArchitecture: \" . \$devCurArch . \"\\nIdentity: \" . \$Identity);\r\ + \n # signal we are ready\r\ + \n:set GlobalFuncReady true;\r\ + \n:set ExitOK true;\r\ + \n\r\ + \n:log info (\$0 . \"Global configs ready!\");\r\ + \n} do={\r\ + \n :global ExitOnError; \$ExitOnError \$0 \$Err;\r\ + \n}\r\ + \n" +add comment="download, import and update firewall address-lists" \ + dont-require-permissions=no name=AM-FwAddrLists owner=AM-FwAddrLists \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-FwAddrLists\r\ + \n# Script comment: download, import and update firewall address-lists\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# https://ros.vados.ru/doc/fw-addr-lists.md\r\ + \n:local ExitOK false;\r\ + \n:onerror Err {\r\ + \n :global GlobalConfReady; :global GlobalFuncReady;\r\ + \n :retry { :if (\$GlobalConfReady != true || \$GlobalFuncReady != true) \ + \\\r\ + \n do={ :error (\"Global config and/or functions not ready.\"); }; } \ + delay=500ms max=50;\r\ + \n :local ScriptName [ :jobname ];\r\ + \n\r\ + \n :global GlobalScriptsUrl;\r\ + \n :local ListsDirName (\"fw-addr-lists.d/\" . [ /system identity get nam\ + e ] . \"/\");\r\ + \n :local ListsUrl (\$GlobalScriptsUrl . \$ListsDirName);\r\ + \n :local ListsIndex \"index.lst\";\r\ + \n :local AddrListsTimeOut 1d;\r\ + \n :local CheckCerts false;\r\ + \n\r\ + \n :global CertificateAvailable;\r\ + \n :global EitherOr;\r\ + \n :global FetchHugeFiles;\r\ + \n :global HumanReadableNum;\r\ + \n :global IfThenElse;\r\ + \n :global LogPrint;\r\ + \n :global NetMask4;\r\ + \n :global NetMask6;\r\ + \n :global ScriptLock;\r\ + \n \r\ + \n :local FindDelim do={\r\ + \n :local ValidChars \"0123456789.:/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi\ + jklmnopqrstuvwxyz-\";\r\ + \n :for I from=0 to=[ :len \$1 ] do={\r\ + \n :if ([ :typeof [ :find \$ValidChars [ :pick (\$1 . \" \") \$I ] ] \ + ] != \"num\") do={\r\ + \n :return \$I;\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :local GetBranch do={\r\ + \n :global EitherOr;\r\ + \n :return [ :pick [ :convert transform=md5 to=hex [ :pick \$1 0 [ \$Ei\ + therOr [ :find \$1 \"/\" ] [ :len \$1 ] ] ] ] 0 2 ];\r\ + \n }\r\ + \n \r\ + \n :if ([ \$ScriptLock \$ScriptName ] = false) do={\r\ + \n :set ExitOK true;\r\ + \n :error false;\r\ + \n }\r\ + \n\r\ + \n :local ListComment (\"managed by \" . \$ScriptName);\r\ + \n :local Url (\$ListsUrl . \$ListsIndex);\r\ + \n :local tmpIndex false;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :set tmpIndex [ :tolf [ \$FetchHugeFiles \$ScriptName \$Url \$Chec\ + kCerts ] ];\r\ + \n :if (\$tmpIndex = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list \ + index, \" . \$I . \". try from: \" . \$Url);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n :if (\$tmpIndex = false) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading address-list inde\ + x from: \" . \$Url);\r\ + \n :set tmpIndex \"\";\r\ + \n }\r\ + \n\r\ + \n :foreach List in=[ :deserialize \$tmpIndex delimiter=\"\\n\" from=dsv \ + options=dsv.plain ] do={\r\ + \n# :set List (\$List->0);\r\ + \n :local ListName;\r\ + \n :local Delim [ \$FindDelim \$List ];\r\ + \n :if (\$Delim = 0) do={ :set List \"\"; };\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$List);\r\ + \n :if ([ :len \$List ] = 0) do={\r\ + \n :log error (\$ScriptName . \" Failed parsing address-list index en\ + try: \" . \$List);\r\ + \n } else={\r\ + \n :set ListName [ :pick \$List 0 \$Delim ];\r\ + \n }\r\ + \n :log warning (\$ScriptName . \" Parsing address-list index entry: \"\ + \_. \$ListName . \" - Ok.\");\r\ + \n :local ListUrl (\$ListsUrl . \$ListName);\r\ + \n :local CntAdd 0;\r\ + \n :local CntRenew 0;\r\ + \n :local CntRemove 0;\r\ + \n :local IPv4Addresses ({});\r\ + \n :local IPv6Addresses ({});\r\ + \n :local Failure false;\r\ + \n :local Data false;\r\ + \n :local TimeOut \$AddrListTimeOut;\r\ + \n\r\ + \n :for I from=1 to=5 do={\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data [ :tolf [ \$FetchHugeFiles \$ScriptName \$ListUrl \$Ch\ + eckCerts ] ];\r\ + \n :if (\$Data = false && \$I < 5) do={\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\ + \" . \$ListName . \"', \" . \$I . \". try from: \" . \$ListUrl);\r\ + \n :delay ((\$I * \$I) . \"s\");\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :if (\$Data = false) do={\r\ + \n :set Data \"\";\r\ + \n :set Failure true;\r\ + \n :log warning (\$ScriptName . \" Failed downloading for list '\" . \ + \$ListName . \"' from: \" . \$ListUrl);\r\ + \n } else={\r\ + \n :log warning (\$ScriptName . \" Downloaded \" . [ \$HumanReadableN\ + um [ :len \$Data ] 1024 ] . \"B for list '\" . \$ListName . \"' from: \" .\ + \_\$ListUrl);\r\ + \n }\r\ + \n\r\ + \n :foreach Line in=[ :deserialize \$Data delimiter=\"\\n\" from=dsv op\ + tions=dsv.plain ] do={\r\ + \n :set Line (\$Line->0);\r\ + \n :local Address;\r\ + \n :if ([ :pick \$Line 0 1 ] = \"{\" && [ :pick \$Line ([ :len \$Line\ + \_] - 1) ] = \"}\") do={\r\ + \n :do {\r\ + \n :set Address [ :tostr ([ :deserialize from=json \$Line ]->\"ci\ + dr\") ];\r\ + \n } on-error={ }\r\ + \n } else={\r\ + \n :set Address ([ :pick \$Line 0 [ \$FindDelim \$Line ] ] . (\$L\ + ist->\"cidr\"));\r\ + \n }\r\ + \n :do {\r\ + \n :local Branch;\r\ + \n :if (\$Address ~ \"^[0-9]{1,3}\\\\.[0-9]{1,3}\\\\.[0-9]{1,3}\\\\\ + .[0-9]{1,3}(/[0-9]{1,2})\?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 32;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n :set Address [ :tostr (([ :toip \$Net ] & [ \$NetMask4 \$CID\ + R ]) . [ \$IfThenElse (\$CIDR < 32) (\"/\" . \$CIDR) ]) ];\r\ + \n }\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[0-9a-zA-Z]*:[0-9a-zA-Z:\\\\.]+(/[0-9]{1,3})\ + \?\\\$\") do={\r\ + \n :local Net \$Address;\r\ + \n :local CIDR 128;\r\ + \n :local Slash [ :find \$Address \"/\" ];\r\ + \n :if ([ :typeof \$Slash ] = \"num\") do={\r\ + \n :set Net [ :toip6 [ :pick \$Address 0 \$Slash ] ]\r\ + \n :set CIDR [ :pick \$Address (\$Slash + 1) [ :len \$Address ]\ + \_];\r\ + \n }\r\ + \n :set Address (([ :toip6 \$Net ] & [ \$NetMask6 \$CIDR ]) . \"/\ + \" . \$CIDR);\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n :if (\$Address ~ \"^[\\\\.a-zA-Z0-9-]+\\\\.[a-zA-Z]{2,}\\\$\") d\ + o={\r\ + \n :set Branch [ \$GetBranch \$Address ];\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address) \$TimeOut;\r\ + \n }\r\ + \n } on-error={ }\r\ + \n }\r\ + \n \r\ + \n\r\ + \n :foreach Entry in=[ /ip/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ip/firewall/address-list/get \$Entry address ];\ + \r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv4 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ip/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv4Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv4 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ip/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach Entry in=[ /ipv6/firewall/address-list/find where \\\r\ + \n list=\$ListName comment=\$ListComment ] do={\r\ + \n :local Address [ /ipv6/firewall/address-list/get \$Entry address ]\ + ;\r\ + \n :local Branch [ \$GetBranch \$Address ];\r\ + \n :local TimeOut (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :if ([ :typeof \$TimeOut ] = \"time\") do={\r\ + \n :log warning (\$ScriptName . \" Renewing IPv6 address \" . \$Add\ + ress . \\\r\ + \n \" in list '\" . \$ListName . \"' with \" . \$TimeOut . \".\ + \");\r\ + \n /ipv6/firewall/address-list/set \$Entry timeout=\$TimeOut;\r\ + \n :set (\$IPv6Addresses->\$Branch->\$Address);\r\ + \n :set CntRenew (\$CntRenew + 1);\r\ + \n } else={\r\ + \n :if (\$Failure = false) do={\r\ + \n :log warning (\$ScriptName . \" Removing IPv6 address \" . \$A\ + ddress . \\\r\ + \n \" from list '\" . \$ListName . \".\");\r\ + \n /ipv6/firewall/address-list/remove \$Entry;\r\ + \n :set CntRemove (\$CntRemove + 1);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv4Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv4 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ip/firewall/address-list/add list=\$ListName comment=\$ListCo\ + mment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv4 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :foreach BranchName,Branch in=\$IPv6Addresses do={\r\ + \n :log warning (\$ScriptName . \" Handling branch: \" . \$BranchName\ + );\r\ + \n :foreach Address,Timeout in=\$Branch do={\r\ + \n :log warning (\$ScriptName . \" Adding IPv6 address \" . \$Addre\ + ss . \\\r\ + \n \" to list '\" . \$ListName . \"' with \" . \$Timeout . \".\ + \");\r\ + \n :onerror Err {\r\ + \n /ipv6/firewall/address-list/add list=\$ListName comment=\$List\ + Comment \\\r\ + \n address=\$Address timeout=\$Timeout;\r\ + \n :set CntAdd (\$CntAdd + 1);\r\ + \n } do={\r\ + \n :log warning (\$ScriptName . \" Failed to add IPv6 address \" \ + . \$Address . \\\r\ + \n \" to list '\" . \$ListName . \"': \" . \$Err);\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n\r\ + \n :log info (\$ScriptName . \" list: \" . \$ListName . \\\r\ + \n \" (\" . [ \$HumanReadableNum (\$CntAdd + \$CntRenew) 1000 ] . \ + \")\" . \\\r\ + \n \" -- added: \" . [ \$HumanReadableNum \$CntAdd 1000 ] . \\\r\ + \n \" - renewed: \" . [ \$HumanReadableNum \$CntRenew 1000 ] . \\\r\ + \n \" - removed: \" . [ \$HumanReadableNum \$CntRemove 1000 ]);\r\ + \n }\r\ + \n} do={\r\ + \n :global ExitError; \$ExitError \$ExitOK [ :jobname ] \$Err;\r\ + \n}\r\ + \n" +add comment=\ + "Lookup IP addresses for RKN list and add them to firewall address-list" \ + dont-require-permissions=no name=AM-RKN-dnsLookup owner=AM-RKN-dnsLookup \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-RKN-dnsLookup\r\ + \n# Script comment: Lookup IP addresses for RKN list and add them to firew\ + all address-list\r\ + \n# Copyright (c) 2007-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch\r\ + \n#\r\ + \n# Script description: This script is intended to be run periodically, e.\ + g. once a day, to update the IP addresses in the firewall address-list bas\ + ed on the RKN list.\r\ + \n# It resolves the domain names in the RKN list and a\ + dds the corresponding IP addresses to the specified firewall address-list.\ + \r\ + \n# The script also handles CNAME records by following\ + \_them until it finds A records.\r\ + \n# Usage:\r\ + \n# /system/script { run AM-RKN-dnsLookup; }\r\ + \n:local ScriptName [ :jobname ];\r\ + \n\r\ + \n:global dnsLookupReady false;\r\ + \n:if ([:typeof \$dnsLookupReady] != \"boolean\") do={ :set dnsLookupReady\ + \_true; }\r\ + \nwhile (!\$dnsLookupReady) do={ :nothing; }\r\ + \n:set dnsLookupReady false;\r\ + \n\r\ + \n:local arrRKN {\r\ + \n \"telegra.ph\"\r\ + \n \"grani.ru\"\r\ + \n \"xhamster.com\"\r\ + \n \"kasparov.ru\"\r\ + \n \"lostfilm.tv\"\r\ + \n \"rutracker.org\"\r\ + \n \"lurkmore.to\"\r\ + \n \"dou.ua\"\r\ + \n \"youporn.com\"\r\ + \n \"pornolab.net\"\r\ + \n \"crimerussia.com\"\r\ + \n \"telegram.org\"\r\ + \n \"api.telegram.org\"\r\ + \n \"telegram.me\"\r\ + \n \"t.me\";}\r\ + \n\r\ + \n:local ListRKN \"FuckRKN\";\r\ + \n:local ListComment (\"ListRKN managed by \" . \$ScriptName);\r\ + \n:foreach aListItem in=[/ip/firewall/address-list find list=\$ListRKN] do\ + ={\r\ + \n /ip firewall address-list remove \$aListItem;\r\ + \n}\r\ + \n:foreach aItem in=\$arrRKN do={\r\ + \n :do {\r\ + \n :resolve \$aItem;\r\ + \n } on-error={\r\ + \n :log error \"dns resolve failure [ ip - resolve ip ]\";\r\ + \n }\r\ + \n :foreach dnsRecord in=[/ip dns cache all find where (name=\$aItem)] \ + do={\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"A\") do={\r\ + \n :local newAddress [/ip dns cache all get \$dnsRecord data];\ + \r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address=\$n\ + ewAddress comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddress\ + \";\r\ + \n }\r\ + \n }\r\ + \n :if ([/ip dns cache all get \$dnsRecord type]=\"CNAME\") do={\r\ + \n :local cname;\r\ + \n :local nextCname;\r\ + \n :set cname [/ip dns cache all find where (name=\$aItem && ty\ + pe=\"CNAME\")];\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip dns \ + cache all get \$cname data] && type=\"CNAME\")];\r\ + \n :while (\$nextCname != \"\") do={\r\ + \n :set cname \$nextCname;\r\ + \n :set nextCname [/ip dns cache all find where (name=[/ip \ + dns cache all get \$cname data] && type=\"CNAME\")];\r\ + \n }\r\ + \n :foreach aRecord in=[/ip dns cache all find where (name=[/ip\ + \_dns cache all get \$cname data] && type=\"A\")] do={\r\ + \n :do {\r\ + \n /ip firewall address-list add list=\$ListRKN address\ + =[/ip dns cache all get \$aRecord data] comment=\$aItem;\r\ + \n } on-error={\r\ + \n :log error \"error when adding ip to list: \$newAddr\ + ess\";\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n }\r\ + \n}\r\ + \n\r\ + \n:if ([ :len [ /system/scheduler/find where name=\$ScriptName ] ] = 0) do\ + ={\r\ + \n :log error (\$ScriptName . \"System Scheduler for script: \" . \$Scri\ + ptName . \" is NOT SET! Fix It Now!\");\r\ + \n /system/scheduler/add name=\$ScriptName on-event=\"/system/script { \ + run \$ScriptName; }\" comment=\"Update RKN DNS Looup\" interval=00:20:00 p\ + olicy=\"ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon\"\ + \_start-time=startup;\r\ + \n }\r\ + \n:set dnsLookupReady true;\r\ + \ndelay 5s; \r\ + \n:global dnsLookupReady (a);\r\ + \n" +add dont-require-permissions=no name=dnsForwarders owner=vados policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#\ + !rsc by Vados\r\ + \n# RouterOS script: AM-dnsForwarders\r\ + \n# Script comment: DNS Forwarders and DOH Servers | by @xmrdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n\r\ + \n\r\ + \n/ip/dns/set allow-remote-requests=yes doh-max-concurrent-queries=100 doh\ + -max-server-connections=20 use-doh-server=https://security.cloudflare-dns.\ + com/dns-query verify-doh-cert=no;\r\ + \n\r\ + \n/ip dns static\r\ + \n:do {\r\ + \nadd address=8.8.8.8 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=8.8.4.4 comment=\"DNS Google\" name=dns.google type=A\r\ + \nadd address=9.9.9.9 comment=\"DNS Quad9\" name=dns.quad9.net type=A\r\ + \nadd address=149.112.112.112 comment=\"DNS Quad9\" name=dns.quad9.net typ\ + e=A\r\ + \nadd address=195.133.25.16 comment=\"DNS Comss\" name=dns.comss.one type=\ + A\r\ + \n\r\ + \n/ip dns forwarders\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query name=\"CloudFlare D\ + oH\"\r\ + \nadd doh-servers=https://secure.cloudflare-dns.com/dns-query name=\"Cloud\ + Flare Secure DoH\"\r\ + \nadd disabled=yes doh-servers=https://dns.quad9.net/dns-query name=\"Quad\ + 9 Default\" verify-doh-cert=no\r\ + \nadd doh-servers=https://dns.google/dns-query name=\"Google DoH\"\r\ + \nadd dns-servers=dns.comss.one doh-servers=https://dns.comss.one/mikrotik\ + \_name=\"Comss DoH\" verify-doh-cert=no\r\ + \nadd doh-servers=https://cloudflare-dns.com/dns-query,https://dns.google/\ + dns-query name=\"CF & Google DoH\"\r\ + \nadd dns-servers=1.0.0.1,8.8.4.4,1.1.1.1,8.8.8.8,77.88.8.1,77.88.8.8 name\ + =\"CF & G & Ya IPv4\" verify-doh-cert=no\r\ + \n} on-error={ }\r\ + \n\r\ + \n" +add dont-require-permissions=no name=AM-ADguardHome-container owner=vados \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + source="#!rsc by Vados\r\ + \n# RouterOS script: AM-ADguardHome-container\r\ + \n# Script comment: ADguardHome-container to container | by @xdenb43\r\ + \n# Copyright (c) 2005-2026 Vados \r\ + \n#\r\ + \n#\r\ + \n# requires RouterOS, version=7.19\r\ + \n# requires device-mode, fetch, scheduler\r\ + \n# \r\ + \n# tested on hap ac lite tc/hap ax3, RoS 7.18.2+\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n#/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53\r\ + \n# cat adguardhome_container.rsc\r\ + \n# adguard home to container | by @xdenb43\r\ + \n# tested on hap ax3/RoS 7.17.2+\r\ + \n\r\ + \n# enable containers, follow https://help.mikrotik.com/docs/spaces/ROS/pa\ + ges/84901929/Container\r\ + \n/system/device-mode/update container=yes\r\ + \n\r\ + \n# MAIN PART STARTS HERE\r\ + \n/interface veth\r\ + \nadd address=192.168.254.5/24 gateway=192.168.254.1 name=ADGUARD-HOME\r\ + \n\r\ + \n/interface bridge\r\ + \nadd name=Bridge-Docker port-cost-mode=short\r\ + \n/interface bridge port\r\ + \nadd bridge=Bridge-Docker interface=ADGUARD-HOME\r\ + \n/ip address\r\ + \nadd address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254\ + .0\r\ + \n\r\ + \n/ip firewall nat\r\ + \nadd action=masquerade chain=srcnat comment=AdGuardHome src-address=192.1\ + 68.254.5\r\ + \n\r\ + \n# USB flash drive, FS ext4\r\ + \n/container config\r\ + \nset ram-high=200.0MiB registry-url=https://registry-1.docker.io tmpdir=/\ + usb1/docker/pull\r\ + \n\r\ + \n/container mounts\r\ + \nadd dst=/opt/adguardhome/conf name=adguard_home_conf src=/usb1/docker_co\ + nfigs/adguard_home\r\ + \n\r\ + \n/container\r\ + \nadd cmd=\"-c /opt/adguardhome/conf/AdGuardHome.yaml -h 0.0.0.0 -w /opt/a\ + dguardhome/work\" entrypoint=/opt/adguardhome/AdGuardHome interface=ADGUAR\ + D-HOME logging=yes mounts=\\\r\ + \n adguard_home_conf root-dir=/usb1/docker/adguard_home workdir=/opt/ad\ + guardhome/work remote-image=adguard/adguardhome:latest\r\ + \n\r\ + \n/container/start [find where interface=ADGUARD-HOME]\r\ + \n\r\ + \n# ADH available on http://192.168.254.5:300 , configure before use\r\ + \n# Choose one of the options below\r\ + \n# uncomment lines before copying to terminal\r\ + \n\r\ + \n# OPTION 1\r\ + \n# Just set AGH ip as DNS server.\r\ + \n# /!\\ DNS FWD will work.\r\ + \n# /!\\ No device-related stats will be gathered (all dns requests are co\ + ming from mikrotik)\r\ + \n#/ip dns\r\ + \n#set allow-remote-requests=yes servers=192.168.254.5\r\ + \n#/ip firewall nat\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=udp\r\ + \n#add action=redirect chain=dstnat comment=\"Incoming DNS redirect\" dst-\ + address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp\r\ + \n\r\ + \n\r\ + \n# OPTION 2\r\ + \n# Forward all DNS requests to ADH\r\ + \n# /!\\ DNS FWD will NOT work\r\ + \n# /!\\ WILL SHOW stats for every LAN device\r\ + \n#/ip firewall nat\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard udp - NO NAT L\ + oopback / local addresses only!\" dst-port=53 in-interface-list=LAN protoc\ + ol=udp src-address=\\\r\ + \n# 192.168.88.0/24 to-addresses=192.168.254.5 to-ports=53\r\ + \n#add action=dst-nat chain=dstnat comment=\"local AdGuard tcp\" dst-port=\ + 53 in-interface-list=LAN protocol=tcp src-address=192.168.88.0/24 to-addre\ + sses=192.168.254.5 to-ports=53" +/user group +add name=backup policy="telnet,ssh,ftp,read,write,policy,test,sniff,sensitive,\ + !local,!reboot,!winbox,!password,!web,!api,!romon,!rest-api" +/interface bridge +add admin-mac=48:8F:5A:8E:1A:BC auto-mac=no mlag-peer-port="ether1 - Unet" \ + name=Bridge-LAN port-cost-mode=short +/interface wireless +# same mac-address as ether1 - Unet +set [ find default-name=wlan1 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 2ghz-b/g/n basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps basic-rates-b=\ + 1Mbps,2Mbps,5.5Mbps,11Mbps channel-width=20/40mhz-XX country=belarus \ + disabled=no frequency=auto hw-protection-mode=rts-cts mode=ap-bridge \ + rate-set=configured skip-dfs-channels=10min-cac ssid=vados \ + wds-default-bridge=Bridge-LAN wds-mode=dynamic-mesh wireless-protocol=\ + 802.11 wmm-support=enabled wps-mode=disabled +set [ find default-name=wlan2 ] ampdu-priorities=0,1,2,3,4,5,6,7 band=\ + 5ghz-a/n/ac basic-rates-a/g=\ + 6Mbps,9Mbps,12Mbps,18Mbps,24Mbps,36Mbps,48Mbps,54Mbps channel-width=\ + 20/40/80mhz-XXXX country=belarus disabled=no frequency=auto \ + hw-protection-mode=rts-cts mode=ap-bridge rate-set=configured \ + skip-dfs-channels=10min-cac ssid=vados5g wds-default-bridge=Bridge-LAN \ + wds-mode=dynamic-mesh wireless-protocol=802.11 wmm-support=enabled \ + wps-mode=disabled +/interface wireless nstreme +# same mac-address as ether1 - Unet +set wlan1 enable-nstreme=yes +set wlan2 enable-nstreme=yes +/caps-man provisioning +add action=create-dynamic-enabled hw-supported-modes=gn master-configuration=\ + cfg-2ghz name-format=prefix-identity name-prefix=2ghz +add action=create-dynamic-enabled hw-supported-modes=ac master-configuration=\ + cfg-5ghz-ac name-format=prefix-identity name-prefix=5ghz-ac +add action=create-dynamic-enabled hw-supported-modes=an master-configuration=\ + cfg-5ghz-an name-format=prefix-identity name-prefix=5ghz-an +/certificate settings +set builtin-trust-store="ipsec,wpa-eap,capsman,fetch,sstp,ovpn,radius,containe\ + r,userman,wiliot,openflow,tr069,dot1x,dns,www,api,reverse-proxy,logging" +/interface bridge port +add bridge=Bridge-LAN disabled=yes interface="ether1 - Unet" +add bridge=Bridge-LAN interface=ether2 +add bridge=Bridge-LAN interface=ether3 +add bridge=Bridge-LAN interface=ether4 +add bridge=Bridge-LAN interface=ether5 +add bridge=Bridge-LAN interface=wlan2 +add bridge=Bridge-LAN interface=wlan1 +/ip firewall connection tracking +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set udp-timeout=10s +/ip neighbor discovery-settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set discover-interface-list=LAN +/ip settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +# ipv6 neighbor configuration has changed, please restart the device in order to apply the new settings +set max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="ether1 - Unet" list=WAN +add interface=Bridge-LAN list=LAN +/interface ovpn-server server +add auth=sha1,md5 mac-address=FE:82:A5:78:8E:84 name=ovpn-server1 +/interface wifi configuration +add channel=2G-AX datapath=xs-DataPath disabled=no mode=ap name=2G-AX \ + security=sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=2G-N datapath=xs-DataPath disabled=no mode=ap name=2G-N security=\ + sec2g security.ft=yes .ft-over-ds=yes ssid=vados +add channel=5G-AC datapath=xs-DataPath disabled=no mode=ap name=5G-AC \ + security=sec5G security.authentication-types="" .ft=yes .ft-over-ds=yes \ + ssid=vados +add channel=2G-G datapath=xs-DataPath disabled=no mode=ap name=2G-G security=\ + sec2g security.authentication-types="" .ft=yes .ft-over-ds=yes ssid=vados +/interface wifi datapath +add bridge=Bridge-LAN disabled=no interface-list=all name=xs-DataPath +/interface wireguard peers +add allowed-address=0.0.0.0/0,::/0 client-allowed-address=::/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=25s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=ether2 interfaces=wlan1,wlan2 \ + lock-to-caps-man=yes +/ip address +add address=10.30.30.81/24 interface=Bridge-LAN network=10.30.30.0 +add address=10.8.0.2/24 interface=WG network=10.8.0.0 +add address=10.8.0.2 interface=*F network=10.8.0.2 +/ip dhcp-client +add add-default-route=special-classless default-route-distance=2 \ + default-route-tables=main dhcp-options=clientid,clientid_duid interface=\ + "ether1 - Unet" name=client1 use-peer-dns=no use-peer-ntp=no +/ip dhcp-server +add add-arp=yes address-pool=dhcp always-broadcast=yes bootp-support=none \ + dhcp-option-set=domain-search-set interface=Bridge-LAN lease-time=10m \ + name=masterDHCP server-address=10.30.30.81 +/ip dhcp-server config +set accounting=no +/ip dhcp-server lease +add address=10.30.30.101 client-id=1:48:8f:5a:8e:ee:a8 mac-address=\ + 48:8F:5A:8E:EE:A8 server=masterDHCP +add address=10.30.30.107 client-id=1:f0:de:f1:91:d:1e mac-address=\ + F0:DE:F1:91:0D:1E server=masterDHCP +add address=10.30.30.83 client-id=1:0:80:77:ec:43:86 mac-address=\ + 00:80:77:EC:43:86 server=masterDHCP +add address=10.30.30.70 dhcp-option=domain-search-list,HostName \ + dhcp-option-set=HP1505n mac-address=00:1E:0B:1A:88:8D server=masterDHCP +add address=10.30.30.50 client-id=1:4:7c:16:36:f5:37 mac-address=\ + 04:7C:16:36:F5:37 server=masterDHCP +add address=10.30.30.71 client-id=1:10:2d:41:2c:20:c2 mac-address=\ + 10:2D:41:2C:20:C2 server=masterDHCP +add address=10.30.30.61 client-id=1:10:8:c1:81:59:5f mac-address=\ + 10:08:C1:81:59:5F server=masterDHCP +add address=10.30.30.72 client-id=1:10:38:1f:d2:5f:13 mac-address=\ + 10:38:1F:D2:5F:13 server=masterDHCP +add address=10.30.30.99 client-id=1:10:b1:df:e9:d0:d5 mac-address=\ + 10:B1:DF:E9:D0:D5 server=masterDHCP +add address=10.30.30.111 client-id=1:fe:2:52:be:3f:16 mac-address=\ + FE:02:52:BE:3F:16 server=masterDHCP +add address=10.30.30.92 client-id=1:d4:6d:6d:fd:e5:49 mac-address=\ + D4:6D:6D:FD:E5:49 server=masterDHCP +add address=10.30.30.93 client-id=1:7e:8b:1e:cb:b8:cb mac-address=\ + CC:42:10:12:46:94 server=masterDHCP +add address=10.30.30.94 client-id=1:50:cc:f8:85:96:a mac-address=\ + 50:CC:F8:85:96:0A server=masterDHCP +add address=10.30.30.82 client-id=1:e4:18:6b:58:34:ab mac-address=\ + E4:18:6B:58:34:AB server=masterDHCP +add address=10.30.30.75 client-id=1:0:27:15:41:97:a9 mac-address=\ + 00:27:15:41:97:A9 server=masterDHCP +add address=10.30.30.77 dhcp-option=HostName dhcp-option-set=StartLife1 \ + mac-address=C4:82:E1:03:49:10 server=masterDHCP +add address=10.30.30.73 client-id=1:10:38:1f:82:81:f2 mac-address=\ + 10:38:1F:82:81:F2 server=masterDHCP +add address=10.30.30.95 client-id=1:88:ae:dd:60:39:54 dhcp-option=HostName \ + dhcp-option-set=VADOS-NUC mac-address=88:AE:DD:60:39:54 server=masterDHCP +add address=10.30.30.98 client-id=1:c8:5b:76:d8:cc:bf dhcp-option=HostName \ + dhcp-option-set=VADOS-LEN mac-address=C8:5B:76:D8:CC:BF server=masterDHCP +add address=10.30.30.96 client-id=iPhone mac-address=4A:91:ED:0E:1F:39 \ + server=masterDHCP +add address=10.30.30.74 client-id=MiTV dhcp-option=HostName dhcp-option-set=\ + MiTV mac-address=20:72:A9:D3:34:36 server=masterDHCP +add address=10.30.30.30 dhcp-option=HostName dhcp-option-set=miller \ + mac-address=F0:75:5D:1E:5F:71 server=masterDHCP +add address=10.30.30.100 client-id=iVados dhcp-option=HostName \ + dhcp-option-set="=\"Client ID\"" mac-address=DE:4D:72:F3:1A:9F server=\ + masterDHCP +/ip dhcp-server network +add address=10.30.30.0/24 caps-manager=10.30.30.10 dhcp-option=\ + domain-search-list dhcp-option-set=domain-search-set dns-server=\ + 10.30.30.81 domain=WORKGROUP gateway=10.30.30.81 netmask=24 ntp-server=\ + 10.30.30.81,10.30.30.10 wins-server=10.30.30.95,10.30.30.98 +/ip dns +set allow-remote-requests=yes cache-max-ttl=1d doh-max-concurrent-queries=100 \ + doh-max-server-connections=20 servers=8.8.4.4,8.8.8.8 +/ip dns static +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=1.1.1.1 comment="CloudFlare-doh IPv4 1" disabled=yes name=\ + security.cloudflare-dns.com type=A +add address=149.112.112.112 comment="Cuad9-dns IPv4 2" disabled=yes name=\ + dns.quad9.net type=A +add address=9.9.9.9 comment="Cuad9-dns IPv4 1" disabled=yes name=\ + dns.quad9.net type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +add address=10.30.30.81 comment=LocalNet name=MikroVados type=A +add address=10.30.30.10 name=MikroNUC type=A +add address=10.30.30.86 name=MikroYellow type=A +add address=10.30.30.85 name=MikroMic type=A +add address=10.30.30.95 name=VADOS-NUC type=A +add address=10.30.30.98 name=VADOS-LEN type=A +add address=10.30.30.20 name=garage type=A +add address=91.192.189.2 comment=Unet-DNS disabled=yes name=ns1.unet.ws type=\ + A +/ip firewall address-list +add address=91.215.120.206 list=TRUSTED +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=10.30.30.100-255 list=KIDS +add address=8.8.4.0/24 list=YouTube +add address=8.8.8.0/24 list=YouTube +add address=8.34.208.0/20 list=YouTube +add address=8.35.192.0/20 list=YouTube +add address=23.236.48.0/20 list=YouTube +add address=23.251.128.0/19 list=YouTube +add address=34.0.0.0/15 list=YouTube +add address=34.2.0.0/16 list=YouTube +add address=34.3.0.0/23 list=YouTube +add address=34.3.3.0/24 list=YouTube +add address=34.3.4.0/24 list=YouTube +add address=34.3.8.0/21 list=YouTube +add address=34.3.16.0/20 list=YouTube +add address=34.3.32.0/19 list=YouTube +add address=34.3.64.0/18 list=YouTube +add address=34.4.0.0/14 list=YouTube +add address=34.8.0.0/13 list=YouTube +add address=34.16.0.0/12 list=YouTube +add address=34.32.0.0/11 list=YouTube +add address=34.64.0.0/10 list=YouTube +add address=34.128.0.0/10 list=YouTube +add address=35.184.0.0/13 list=YouTube +add address=35.192.0.0/14 list=YouTube +add address=35.196.0.0/15 list=YouTube +add address=35.198.0.0/16 list=YouTube +add address=35.199.0.0/17 list=YouTube +add address=35.199.128.0/18 list=YouTube +add address=35.200.0.0/13 list=YouTube +add address=35.208.0.0/12 list=YouTube +add address=35.224.0.0/12 list=YouTube +add address=35.240.0.0/13 list=YouTube +add address=57.140.192.0/18 list=YouTube +add address=64.15.112.0/20 list=YouTube +add address=64.233.160.0/19 list=YouTube +add address=66.22.228.0/23 list=YouTube +add address=66.102.0.0/20 list=YouTube +add address=66.249.64.0/19 list=YouTube +add address=70.32.128.0/19 list=YouTube +add address=72.14.192.0/18 list=YouTube +add address=74.125.0.0/16 list=YouTube +add address=104.154.0.0/15 list=YouTube +add address=104.196.0.0/14 list=YouTube +add address=104.237.160.0/19 list=YouTube +add address=107.167.160.0/19 list=YouTube +add address=107.178.192.0/18 list=YouTube +add address=108.59.80.0/20 list=YouTube +add address=108.170.192.0/18 list=YouTube +add address=108.177.0.0/17 list=YouTube +add address=130.211.0.0/16 list=YouTube +add address=136.22.160.0/20 list=YouTube +add address=136.22.176.0/21 list=YouTube +add address=136.22.184.0/23 list=YouTube +add address=136.22.186.0/24 list=YouTube +add address=142.250.0.0/15 list=YouTube +add address=146.148.0.0/17 list=YouTube +add address=152.65.208.0/22 list=YouTube +add address=152.65.214.0/23 list=YouTube +add address=152.65.218.0/23 list=YouTube +add address=152.65.222.0/23 list=YouTube +add address=152.65.224.0/19 list=YouTube +add address=162.120.128.0/17 list=YouTube +add address=162.216.148.0/22 list=YouTube +add address=162.222.176.0/21 list=YouTube +add address=172.110.32.0/21 list=YouTube +add address=172.217.0.0/16 list=YouTube +add address=172.253.0.0/16 list=YouTube +add address=173.194.0.0/16 list=YouTube +add address=173.255.112.0/20 list=YouTube +add address=192.158.28.0/22 list=YouTube +add address=192.178.0.0/15 list=YouTube +add address=193.186.4.0/24 list=YouTube +add address=199.36.154.0/23 list=YouTube +add address=199.36.156.0/24 list=YouTube +add address=199.192.112.0/22 list=YouTube +add address=199.223.232.0/21 list=YouTube +add address=207.223.160.0/20 list=YouTube +add address=208.65.152.0/22 list=YouTube +add address=208.68.108.0/22 list=YouTube +add address=208.81.188.0/22 list=YouTube +add address=208.117.224.0/19 list=YouTube +add address=209.85.128.0/17 list=YouTube +add address=216.58.192.0/19 list=YouTube +add address=216.73.80.0/20 list=YouTube +add address=216.239.32.0/19 list=YouTube +add address=2ip.ru list=Test +add address=157.240.247.174 list=Instagram +add address=46.53.178.107 list=Instagram +add address=179.60.195.174 list=Instagram +add address=157.240.205.174 list=Instagram +add address=31.13.24.0/21 list=Instagram +add address=31.13.64.0/18 list=Instagram +add address=45.64.40.0/22 list=Instagram +add address=66.220.144.0/20 list=Instagram +add address=69.63.176.0/20 list=Instagram +add address=69.171.224.0/19 list=Instagram +add address=74.119.76.0/22 list=Instagram +add address=103.4.96.0/22 list=Instagram +add address=129.134.0.0/16 list=Instagram +add address=157.240.0.0/16 list=Instagram +add address=173.252.64.0/18 list=Instagram +add address=179.60.192.0/22 list=Instagram +add address=185.60.216.0/22 list=Instagram +add address=204.15.20.0/22 list=Instagram +add address=157.240.200.63 list=Instagram +add address=185.60.219.63 list=Instagram +add address=129.134.31.12 list=Instagram +add address=66.81.203.132 list=Instagram +add address=185.89.218.12 list=Instagram +add address=31.13.66.63 list=Instagram +add address=84.15.65.162 list=Instagram +add address=68.66.224.28 list=Instagram +add address=157.240.253.63 list=Instagram +add address=83.174.11.224 list=Instagram +add address=157.240.9.52 list=Instagram +add address=157.240.252.174 list=Instagram +add address=157.240.195.63 list=Instagram +add address=31.13.71.52 list=Instagram +add address=57.144.110.192 list=Instagram +add address=157.240.252.17 list=Instagram +add address=84.15.66.97 list=Instagram +add address=217.168.6.33 list=Instagram +add address=31.13.83.52 list=Instagram +add address=157.240.241.63 list=Instagram +add address=129.134.30.12 list=Instagram +add address=185.89.219.12 list=Instagram +add address=157.240.252.10 list=Instagram +add address=157.240.201.63 list=Instagram +add address=66.81.203.197 list=Instagram +add address=179.60.195.52 list=Instagram +add address=66.81.203.7 list=Instagram +add address=216.40.34.41 list=Instagram +add address=157.240.202.63 list=Instagram +add address=157.240.229.63 list=Instagram +add address=157.240.252.63 list=Instagram +add address=31.13.72.53 list=Instagram +add address=124.108.16.224 list=Instagram +add address=157.240.205.63 list=Instagram +add address=92.46.37.96 list=Instagram +add address=157.240.247.63 list=Instagram +add address=157.240.234.63 list=Instagram +add address=157.240.235.63 list=Instagram +add address=87.245.208.97 list=Instagram +add address=216.58.192.0/19 list=Instagram +add address=209.85.128.0/17 list=Instagram +add address=198.105.240.0/20 list=Instagram +add address=173.194.0.0/16 list=Instagram +add address=172.217.0.0/16 list=Instagram +add address=142.250.0.0/15 list=Instagram +add address=108.177.0.0/17 list=Instagram +add address=87.245.197.140 list=Instagram +add address=74.125.0.0/16 list=Instagram +add address=64.233.160.0/19 list=Instagram +add address=157.240.0.1 list=Instagram +add address=157.240.238.63 list=Instagram +add address=157.240.238.174 list=Instagram +add address=157.240.0.63 list=Instagram +add address=157.240.224.63 list=Instagram +add address=157.240.224.174 list=Instagram +add address=157.240.251.36 list=Instagram +add address=157.240.253.12 list=Instagram +add address=157.240.253.35 list=Instagram +add address=157.240.238.13 list=Instagram +add address=157.240.238.56 list=Instagram +add address=157.240.238.175 list=Instagram +add address=57.144.112.141 list=Instagram +add address=157.240.251.60 list=Instagram +add address=157.240.251.128 list=Instagram +add address=157.240.238.5 list=Instagram +add address=157.240.253.13 list=Instagram +add address=157.240.253.5 list=Instagram +add address=157.240.238.2 list=Instagram +add address=157.240.238.37 list=Instagram +add address=157.240.251.5 list=Instagram +add address=157.240.251.34 list=Instagram +add address=57.144.112.1 list=Instagram +add address=157.240.238.54 list=Instagram +add address=129.134.26.123 list=Instagram +add address=157.240.252.3 list=Instagram +add address=31.13.84.4 list=Instagram +add address=157.240.224.12 list=Instagram +add address=157.240.238.4 list=Instagram +add address=157.240.0.13 list=Instagram +add address=3.33.139.32 list=Instagram +add address=157.240.0.35 list=Instagram +add address=157.240.238.14 list=Instagram +add address=157.240.238.60 list=Instagram +add address=57.144.112.145 list=Instagram +add address=157.240.251.35 list=Instagram +add address=151.101.84.159 list=Twitter +add address=pbs.twimg.com list=Twitter +add address=89.110.101.17 comment=VDSIna list=TRUSTED +add address=10.8.0.0/24 comment="WG VDSIna" list=TRUSTED +add address=ikus.pesc.ru comment=ikus.pesc.ru list=NoVdsina +add address=love.ru comment=love.ru list=NoVdsina +add address=gosuslugi.ru comment=gosuslugi.ru list=NoVdsina +add address=pochta.ru comment=pochta.ru list=NoVdsina +add address=vdsina.com list=NoVdsina +add address=vdsina.ru list=NoVdsina +add address=youla.ru list=NoVdsina +add address=kupiprodai.ru list=NoVdsina +add address=myip.ru list=Test +add address=geoip.co list=NoVdsina +add address=x.com list=Twitter +add address=facebook.com list=facebook +add address=fbcd.net list=facebook +add address=comp-lenta.ru list=NoVdsina +add address=128.85.102.70 comment=update.microsoft.com list=\ + windowsupdateslist +add address=wu-b-net.trafficmanager.net. comment=\ + ctldl.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=ctldl.windowsupdate.com.delivery.microsoft.com. comment=\ + ctldl.windowsupdate.com list=windowsupdateslist +add address=redir.update.msft.com.trafficmanager.net. comment=\ + update.microsoft.com list=windowsupdateslist +add address=geo.prod.do.dsp.trafficmanager.net. comment=\ + geo.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=13.74.139.29 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12437.d.akamaiedge.net. comment=\ + kv801.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=displaycatalog-rp.md.mp.microsoft.com.akadns.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=rp-consumer-prod-displaycatalog-geomap.trafficmanager.net. \ + comment=displaycatalog-rp.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=sls.update.microsoft.com. comment=slscr.update.microsoft.com \ + list=windowsupdateslist +add address=glb.sls.prod.dcat.dsp.trafficmanager.net. comment=\ + sls.update.microsoft.com list=windowsupdateslist +add address=fe3.delivery.mp.microsoft.com. comment=\ + fe3cr.delivery.mp.microsoft.com list=windowsupdateslist +add address=glb.cws.prod.dcat.dsp.trafficmanager.net. comment=\ + fe3.delivery.mp.microsoft.com list=windowsupdateslist +add address=fe2cr.update.msft.com.trafficmanager.net. comment=\ + fe2cr.update.microsoft.com list=windowsupdateslist +add address=download.windowsupdate.com.delivery.microsoft.com. comment=\ + download.windowsupdate.com list=windowsupdateslist +add address=wu-f-net.trafficmanager.net. comment=\ + download.windowsupdate.com.delivery.microsoft.com list=windowsupdateslist +add address=tsfe.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=edge.ds-c7110-microsoft.global.dns.qwilted-cds.cqloud.com. \ + comment=9.au.download.windowsupdate.com list=windowsupdateslist +add address=52.158.227.125 comment=array812.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dspw65.akamai.net. comment=\ + download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.151.58.88 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net. \ + comment=licensing.mp.microsoft.com list=windowsupdateslist +add address=licensing-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-licensing-aks2aks.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-nlu-net.trafficmanager.net. comment=\ + star.f.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.b.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-tlu-net.trafficmanager.net. comment=\ + star.b.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=storeedgefd.xbetservices.akadns.net. comment=\ + storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net. \ + comment=storeedgefd.dsx.mp.microsoft.com.edgekey.net list=\ + windowsupdateslist +add address=e16646.dscg.akamaiedge.net. comment=\ + storeedgefd.dsx.mp.microsoft.com.edgekey.net.globalredir.akadns.net list=\ + windowsupdateslist +add address=40.69.76.189 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=bg.microsoft.map.fastly.net. comment=\ + 3.au.download.windowsupdate.com list=windowsupdateslist +add list=windowsupdateslist +add address=40.69.75.33 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=cdp-f-ssl-tlu-net.trafficmanager.net. comment=\ + star.sf.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a2033.dscd.akamai.net. comment=\ + star.sb.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.138.242 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-nlu-net.trafficmanager.net. comment=\ + dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=1D.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-b-tlu-net.trafficmanager.net. comment=\ + 1d.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a122.dscg3.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=windowsupdateslist +add address=geover.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e10370.d.akamaiedge.net. comment=\ + geover.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=52.232.182.21 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.95 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=a1683.dscd.akamai.net. comment=\ + dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net. \ + comment=collections.mp.microsoft.com list=windowsupdateslist +add address=a1847.dscd.akamai.net. comment=\ + wildcard.f.tlu.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=13.74.142.6 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=au.download.windowsupdate.com.edgesuite.net. comment=\ + 2.au.download.windowsupdate.com list=windowsupdateslist +add address=a767.dscg3.akamai.net. comment=\ + au.download.windowsupdate.com.edgesuite.net list=windowsupdateslist +add address=52.156.123.84 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.78.254 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=4.au.download.windowsupdate.com.delivery.microsoft.com. comment=\ + 4.au.download.windowsupdate.com list=windowsupdateslist +add address=cl-glcb907925.gcdn.co. comment=\ + 4.au.download.windowsupdate.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.111 comment=array510.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.69.70.43 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com. \ + comment=tsfe.trafficshaping.dsp.mp.microsoft.com list=windowsupdateslist +add address=ts-frontend.trafficmanager.net. comment=\ + tsfe.trafficshaping.dsp.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=40.69.75.248 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.74.84 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=sds.trafficmanager.net. comment=software-download.microsoft.com \ + list=windowsupdateslist +add address=40.69.74.80 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.175.242.182 comment=array804.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=dlc-shim.trafficmanager.net. comment=download.microsoft.com list=\ + windowsupdateslist +add address=e12671.dscd.akamaiedge.net. comment=\ + download.microsoft.com.edgekey.net list=windowsupdateslist +add address=20.187.55.34 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.231 comment=array513.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.222.13 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=e12358.d.akamaiedge.net. comment=\ + kv601.prod.do.dsp.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. comment=\ + tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=dcat-f-tlu-net.trafficmanager.net. comment=\ + tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=a1856.dspw65.akamai.net. comment=\ + tlu.dl.delivery.mp.microsoft.com-c.edgesuite.net list=windowsupdateslist +add address=52.167.164.252 comment=array506.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=13.74.137.54 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=kv501.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + kv501.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=collections-prod-frontdoor-geomap.trafficmanager.net. comment=\ + consumer-collections-aks2eap.md.mp.microsoft.com.akadns.net list=\ + windowsupdateslist +add address=52.167.160.173 comment=array509.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.77.148 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.200.126 comment=array507.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=52.167.167.59 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.172 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=82.202.162.184 comment=comp-lenta.ru list=NoWG +add address=smtp.mail.me.com.akadns.net. comment=smtp.mail.me.com list=NoWG +add address=17.57.155.37 comment=smtp.mail.me.com.akadns.net list=NoWG +add address=smtp.mail.me.com comment=smtp.mail.me.com list=NoVdsina +add address=40.70.76.5 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.186.119 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.177.176.186 comment=array520.prod.do.dsp.mp.microsoft.com \ + list=windowsupdateslist +add address=40.70.76.27 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.160.43 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.110 comment=array817.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.142.8 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.138.254 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.167.96 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.69.76.215 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.143.200 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.111 comment=array818.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.112 comment=array819.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=13.74.137.53 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.98 comment=array805.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.96 comment=array803.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.104 comment=array811.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.101 comment=array808.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.99 comment=array806.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.17 comment=array802.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.97 comment=array804.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.103 comment=array810.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.16 comment=array801.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=40.70.77.177 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.164.84 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.105 comment=array812.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.107 comment=array814.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.232.161.82 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.108 comment=array815.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=52.167.161.91 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.102 comment=array809.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.109 comment=array816.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.106 comment=array813.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.117 comment=array622.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.107 comment=array612.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.108 comment=array613.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.105 comment=array610.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.113 comment=array618.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.116 comment=array621.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.98 comment=array603.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.114 comment=array619.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.111 comment=array616.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.97 comment=array602.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.106 comment=array611.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.110 comment=array615.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.119 comment=array624.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.135 comment=array514.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.97 comment=array503.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.99 comment=array604.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.61 comment=array504.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.131 comment=array510.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.132 comment=array511.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.96 comment=array601.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.104 comment=array609.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.138 comment=array517.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.60 comment=array501.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.139 comment=array518.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.118 comment=array623.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.113 comment=array820.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.103 comment=array608.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.154.7.100 comment=array807.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.129 comment=array508.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.134 comment=array513.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.62 comment=array505.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.137 comment=array516.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.101 comment=array606.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.96 comment=array502.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.130 comment=array509.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.112 comment=array617.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.100 comment=array605.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.115 comment=array620.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.136 comment=array515.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=purchase.md.mp.microsoft.com.akadns.net. comment=\ + purchase.mp.microsoft.com list=windowsupdateslist +add address=e110219.a.akamaiedge.net. comment=\ + purchase.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=72.153.5.140 comment=array519.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.141 list=windowsupdateslist +add address=72.153.5.63 comment=array506.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.128 comment=array507.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.102 comment=array607.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=storesdk.xbetservices.akadns.net. comment=\ + storesdk.dsx.mp.microsoft.com list=windowsupdateslist +add address=e16646.g.akamaiedge.net. comment=\ + storesdk.dsx.mp.microsoft.com.edgekey.net list=windowsupdateslist +add address=software-download.microsoft.com.delivery.microsoft.com. comment=\ + software-download.microsoft.com list=windowsupdateslist +add address=download.prss.microsoft.com.akamaized.net. comment=\ + software-download.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=72.145.35.109 comment=array614.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=72.153.5.133 comment=array512.prod.do.dsp.mp.microsoft.com list=\ + windowsupdateslist +add address=213.180.192.0/19 comment=YandexDisk list=NoVdsina +add address=87.250.250.50 comment=YandexDisk list=NoVdsina +add address=consumer-prod-bcfd-v7-afd.trafficmanager.net. comment=\ + displaycatalog.mp.microsoft.com list=windowsupdateslist +add address=purchase-europeeap.md.mp.microsoft.com.akadns.net. comment=\ + purchase.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=ne-az-conspurchase-mp.trafficmanager.net. comment=\ + purchase-europeeap.md.mp.microsoft.com.akadns.net list=windowsupdateslist +add address=storeedgefd.dsx.mp.microsoft.com.edgekey.net. comment=\ + cdn.storeedgefd.dsx.mp.microsoft.com list=windowsupdateslist +add address=star.f.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.f.tlu.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=a1996.dscd.akamai.net. comment=\ + wildcard.f.dl.delivery.mp.microsoft.com.edgesuite.net list=\ + windowsupdateslist +add address=cp801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=glb.tas02.sls-prod.dcat.dsp.mp.microsoft.com. comment=\ + tas02.sls.update.microsoft.com list=windowsupdateslist +add address=cp601.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + cp601.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=star.sb.tlu.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedgeextensions.sb.tlu.dl.delivery.mp.microsoft.com list=\ + windowsupdateslist +add address=star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com. \ + comment=msedge.sf.dl.delivery.mp.microsoft.com list=windowsupdateslist +add address=cdp-f-ssl-nlu-net.trafficmanager.net. comment=\ + star.sf.dl.delivery.mp.microsoft.com.delivery.microsoft.com list=\ + windowsupdateslist +add address=tm-pifd-prod-gbl-weight.trafficmanager.net. comment=\ + paymentinstruments.mp.microsoft.com list=windowsupdateslist +add address=10.30.30.33 comment=NUC disabled=yes list=NoWG +add address=10.30.30.10 comment=MikroNUC disabled=yes list=NoWG +add address=89.110.101.17 comment=!!!VDSINA!!!! list=NoWG +add address=wg.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=80.85.244.9 list=TRUSTED +add address=disc801.prod.do.dsp.mp.microsoft.com.edgekey.net. comment=\ + disc801.prod.do.dsp.mp.microsoft.com list=windowsupdateslist +add address=185.71.70.78 disabled=yes list=TRUSTED +add address=176.53.203.171 disabled=yes list=TRUSTED +add address=176.53.203.170 disabled=yes list=TRUSTED +add address=176.53.202.194 disabled=yes list=TRUSTED +add address=89.110.101.17 comment="!!!VDSina Server!!!" disabled=yes list=\ + NoVdsina +add address=dns.quad9.net comment=Quad9-dns disabled=yes list=Trusted-DNS +add address=dns.google comment=Google-dns list=Trusted-DNS +add address=security.cloudflare-dns.com comment=CloudFlare-dns list=\ + Trusted-DNS +add address=time.google.com comment=Google-time list=Trusted-NTP +add address=0.ru.pool.ntp.org comment=ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=1.ru.pool.ntp.org disabled=yes list=Trusted-NTP +add address=2.ru.pool.ntp.org comment=2.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=3.ru.pool.ntp.org comment=3.ru.pool.ntp.org disabled=yes list=\ + Trusted-NTP +add address=cp.vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns.vados.ru comment=VDSina-vpn list=Trusted-VPN +add address=vdsina.com comment=VDSina-vpn list=Trusted-VPN +add address=cp.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ns1.vdsina.ru comment=VDSina-vpn list=Trusted-VPN +add address=ghcr.io comment=GitHub list=Trusted-VPN +add address=github.com comment=GitHub list=Trusted-VPN +add address=149.154.164.13 comment=telegra.ph list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=194.85.61.76 comment=grani.ru list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.40 comment=pornolab.net list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +add address=172.67.172.95 comment=crimerussia.com list=FuckRKN +add address=149.154.167.99 comment=telegram.org list=FuckRKN +add address=149.154.166.110 comment=api.telegram.org list=FuckRKN +/ip firewall filter +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=12h chain=input comment="block honeypot DNS" \ + connection-state=new dst-port=53 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input connection-state=new dst-port=53 \ + in-interface-list=WAN protocol=tcp src-address=!10.30.30.0/24 \ + src-address-list=!Trusted-DNS +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment=\ + "block honeypot ssh rdp winbox" connection-state=new dst-port=\ + 22,8291,2222 in-interface-list=WAN protocol=tcp src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=4w2d chain=input comment="block honeypot asterisk" \ + connection-state=new dst-port=5060 in-interface-list=WAN protocol=udp \ + src-address-list=!TRUSTED +add action=add-src-to-address-list address-list="Honeypot Hacker" \ + address-list-timeout=5d chain=input comment="block honeypot NTP" \ + connection-state=new dst-port=123 in-interface-list=WAN protocol=udp \ + src-address=!10.30.30.0/24 src-address-list=!Trusted-NTP +add action=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-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=FuckRKN new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=Twitter dst-address-list=\ + Twitter new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=YouTube dst-address-list=\ + YouTube new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment=facebook dst-address-list=\ + facebook new-routing-mark=To-VPN src-address=10.30.30.0/24 \ + src-address-list=!NoWG +add action=mark-routing chain=prerouting comment="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 dst-address-list=!Trusted-VPN log-prefix=\ + VPN-all new-routing-mark=To-VPN passthrough=no src-address=10.30.30.0/24 +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp routing-mark=To-VPN \ + tcp-flags=syn tcp-mss=1381-65535 +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" disabled=yes \ + in-interface=WG log-prefix=Mark-VPN-FT new-connection-mark=\ + VPN_No_FastTrack passthrough=no +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" dst-port=53 protocol=tcp \ + src-address=10.30.30.0/24 to-ports=53 +add action=redirect chain=dstnat dst-port=53 protocol=udp src-address=\ + 10.30.30.0/24 to-ports=53 +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" +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 \ + content=vk.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=ok.ru content=\ + ok.ru +add action=add-dst-to-address-list address-list=Instagram \ + address-list-timeout=none-dynamic chain=prerouting comment=Instagram \ + content=instagram.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting comment=Twitter content=twimg.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=x.com +add action=add-dst-to-address-list address-list=Twitter address-list-timeout=\ + none-dynamic chain=prerouting content=twitter.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting comment=YouTube content=youtube.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleapis.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ggpht.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=youtu.be +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=ytimg.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googlevideo.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=gstatic.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=googleusercontent.com +add action=add-dst-to-address-list address-list=YouTube address-list-timeout=\ + none-dynamic chain=prerouting content=nhacmp3youtube.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=rutube.ru \ + content=rutube.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=me.com \ + content=me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=icloud.com \ + content=icloud.com +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting comment=facebook \ + content=fbcd.net +add action=add-dst-to-address-list address-list=facebook \ + address-list-timeout=none-dynamic chain=prerouting content=facebook.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=comp-lenta.ru \ + content=comp-lenta.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + smtp.mail.me.com content=smtp.mail.me.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=gov.ru \ + content=gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + r78.fssp.gov.ru content=r78.fssp.gov.ru +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=api.db-ip.com \ + content=api.db-ip.com +add action=add-dst-to-address-list address-list=NoVdsina \ + address-list-timeout=none-dynamic chain=prerouting comment=\ + api.telegram.org content=api.telegram.org +/ip firewall service-port +set ftp disabled=yes +set tftp disabled=yes +set irc disabled=no +set sip disabled=yes +set pptp disabled=yes +set rtsp disabled=no +/ip hotspot user profile +set [ find default=yes ] address-pool=dhcp +/ip hotspot walled-garden +add server=*1 +add server=*1 +/ip ipsec settings +set accounting=no +/ip ipsec policy +set 0 disabled=yes dst-address=0.0.0.0/0 src-address=0.0.0.0/0 +/ip ipsec profile +set [ find default=yes ] dpd-interval=2m dpd-maximum-failures=5 +/ip proxy +set cache-administrator="" max-cache-size=none port=80,443 src-address=\ + 0.0.0.0 +/ip route +add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=WG routing-table=\ + To-VPN scope=30 target-scope=10 +/ip service +set ftp disabled=yes +set telnet disabled=yes +set reverse-proxy disabled=yes +set ssh address=10.30.30.0/24 port=2222 +set winbox address=10.30.30.0/24 +set api address=10.30.30.0/24 disabled=yes +set api-ssl address=10.30.30.0/24 disabled=yes +set www-ssl port=18443 +set www address=10.30.30.0/24 disabled=yes port=18880 +/ip service webserver +set acme-plain=no crl-plain=no graphs-plain=no graphs-secure=no index-plain=\ + no index-secure=no rest-plain=no rest-secure=no scep-plain=no \ + webfig-plain=no webfig-secure=no +/ip ssh +set forwarding-enabled=both publickey-authentication-options=verify-required \ + strong-crypto=yes +/ip upnp +set enabled=yes +/ip upnp interfaces +add interface=Bridge-LAN type=internal +add interface="ether1 - Unet" type=external +add interface=WG type=external +add interface=wlan2 type=internal +/ipv6 address +add address=fdcc:ad94:bacf:61a4::cafe:2/128 advertise=no interface=*F +/snmp community +set [ find default=yes ] addresses=10.30.30.0/24 read-access=no security=\ + private +/system clock +set time-zone-autodetect=no time-zone-name=Europe/Moscow +/system clock manual +set time-zone=+03:00 +/system identity +set name=MikroMaster +/system logging +add action=email disabled=yes regex="* added|changed|removed *" topics=\ + system,info +/system note +set show-at-login=no +/system ntp client +set enabled=yes +/system ntp server +set enabled=yes manycast=yes multicast=yes use-local-clock=yes +/system ntp client servers +add address=0.ru.pool.ntp.org +add address=1.ru.pool.ntp.org +add address=2.ru.pool.ntp.org +add address=3.ru.pool.ntp.org +add address=time.google.com disabled=yes +/system package update +set channel=development +/system scheduler +add comment="Scheduler for Update Certificates CloudFlare Quad9" disabled=yes \ + interval=1w name="Update Certificates CloudFlare Quad9" on-event=\ + "/system/script { run Update-Certificates; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-date=2025-11-28 start-time=05:45:40 +add comment="Every Day Set Global Environment Variables" name=AM-SetGlobalEnv \ + on-event="/system/script { run AM-GlobalConfig; run AM-GlobalFunc; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Every Day Check For Update Scripts" interval=1d name=\ + AM-ScriptInstallUpdate on-event=\ + ":global ScriptInstallUpdate; \$ScriptInstallUpdate;" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +add comment="Update RKN DNS Looup" interval=20m name=AM-RKN-dnsLookup \ + on-event="/system/script { run AM-RKN-dnsLookup; }" policy=\ + ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/tool sniffer +set filter-interface=Bridge-LAN filter-src-ip-address=10.30.30.50/32 +/user aaa +set accounting=no diff --git a/MikroMaster/history/20260512/20260512084001-Diff-Config.rsc b/MikroMaster/history/20260512/20260512084001-Diff-Config.rsc new file mode 100644 index 0000000..019e438 --- /dev/null +++ b/MikroMaster/history/20260512/20260512084001-Diff-Config.rsc @@ -0,0 +1,12 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4303c4302 +< add address=104.21.32.39 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=104.21.32.39 comment=rutracker.org list=FuckRKN +4311d4310 +< add address=104.21.71.238 comment=crimerussia.com list=FuckRKN +4312a4312 +> add address=104.21.71.238 comment=crimerussia.com list=FuckRKN -- 2.52.0