From b33d6cb13d15dbd9505297a0614b18298be43f25 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 22:40:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 22:40:18. --- .../20260511/20260511224002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511224002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511224002-Diff-Config.rsc | 12 + 3 files changed, 4665 insertions(+) create mode 100644 MikroMaster/20260511/20260511224002-Binary.backup create mode 100644 MikroMaster/20260511/20260511224002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511224002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511224002-Binary.backup b/MikroMaster/20260511/20260511224002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..ecdc2812dc5f808e2b27813b3a65c275fc644e59 GIT binary patch literal 302647 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 z zf|wH_972zM7%gfh;)40=+C8p^fW%;^dBrYXyDM z8znX6S*30e6fw$5Rhz;qSin&&BdmzSHrIF>$w3i#?voKT7i_cBkUCD~W{l z+g!u}MQL1!=`nX(dc1V#@Ez$ANyD#~$_l`3*mKp%^!+hDW|Pi1UI)0z-uTvbee(ln zbNei6*R-E5!i6xz>J;HJI%N@001xv^`)<YWc4Jf+^?y#<+kEoeEkjyH4!z)mrpV z`ORz}{hYNjDSU#P3z!qomVc*E`yAelV05q|MrA)WH&9MOJ*1!HXrlj?>73JvM{fM6 zb41)XeM4|sVt$`zqFxbj1YGL%IF$bWfMmZ0h=t8V3wSF}6^m4ha=sl#c0E!&R7&OD zYe22Ee_0>fYlTGn&tP+~||BA-GRQ)~sJ3=c%XW zyX0thr><5IJByp3ba@$byl>9|T~E7R8Dr#~M*#>!P>4q0oK4tnxHG7W?MHXeQAyA=y-KW?sQ1$?gs)mdY1V6!^~W#(;l zF_{dHnr~m755*__`onqpx+`v*aLocy9m7PRW77R$8OL#6P!snp@Fk*cG3*Y3hHfy0 zyn<3pB9LB!+2z|TRL*(bnq*$2`s2K|e&l@J*y5I*+8=jV^b{t_UtlGB)f* zC5`uJzDoz4K9A2t8J{+2Zr9lLVA!T;6ALkRObxv1YmZ=fz8B-8a|{759DmYo?BUC2`IiWiLw@ zMqlBk-dx_@zyOy*o2iaWWi;-S)Y|$Cv1-wvDV)V{KA^ri1Rd zYl$x#`G{nF#lL!xpCrVa%i5L5J}$$F2tG3?bZtH@3U5;egbsu(bOcuoldr0uROQ_(5-i>=O1jhg;cIma4U(^qwjB880 zyN#XQed|#{Y8ptJrrg8E+MfmuXb2|r$n_ekFftKq;RzS)K|%hyvp8Kf;r?}9N2YVF zMtj-;iR%!MQZDWWyk+>*l`egAZn~Pmq;W|FeLa!rnjDhR_l$J53(bTJb~dGr?C7Y< zyN>wbS=FZ!nU52-k+FJSg!Fy^H-_;OMGr7EQU=TF8hUwKW6f{#U(!rZdQF>$s{;hA zcGw4-$TYQk<$Tg;I3--cBeh6hk(ABU*=R3+!0BM!*&3=s&nmT=1kOzT?Lz6CE;B2i9lEm9&#hwXQx=s^~G^~DWEOrv3}+!$F3t*n;} z>3uJTg(CYoZ7igUb)V?t#Tl)c zsza$4gS^PHdr$_E(g80^QArT69n-4v6j1HBehhCibzL{f$KV77c}mP%VjrU!dhXUH z*&r#QF;8v#%D^!5{k!8(PNmy2Og<(xgB!VkLjJmY^jy(pg5&tL`vX-MP5)i-4S-fy z)(%>+Th4x5VuLSXCneKs!yK5aFkudWFpIjx!_kP2lRzFfU9SZ zTIzWe7+YTJeik~ZCJ}StO)aOL|M(w*;PCqT0M{jsLXHg!dOFpisfw|X;K_6{wpB$q zs1u;i5d-ym&b9-jf7*%tR7l)(%gke57$==qlLL3;yLE9dO_G6uQcK=zAUkAiLKPMY zTCZq9A+E8DwHwXYUk%%?6iS3|jhzL-7(`%H$Dh1CP#_QOJxGnqG;8^TZ`rJaYOZF_oj2~fwnEBW;6CS2U`fMpAS zJ7jNq{o(#%QAW0rDaer2CQ|*&{^^<$6;Gr~3f3@P*e4Zmh$Q!x;(pAK8kUSU5kv$d z{bdwGmZu}TxTtD7|2_6+R87mS_P($Y^9w+KRbj}sziqf-NCub$;ezpYPXwC_tc=W~ z7T%wT+a+)Uu)w0;3e%$_ z_DoUCZjYiiL#dIdi|cmu2squ{wY7 z1uUOJLHZj5GuUc}TbV5fb`Eif+Qem5f^?XCe_(qkyis6X^I}q+XbjcdL(Z_gsQB*< z4ETj7u5k+h-tZ=RBfDD@dP@L0zdVMVk z8?O>e^;wms?qzTE$R%N42e>}mHP_afFQ_S?OIa=U;34)K5(!H}*awa*FDiVXKb-!u zjD#VM`cy}6{b!Mj_;FZMa+gM}>d4k9f+G1QA-8z&_+9{uNm*%ICc9!NopP98&<$kg zqKuI{!>sn^mT+=uY)>L-fW=SDgnr)fwq$}y@SyKBAM@EiZ|?EB3U6WQD}2M9#AsL2 zWtUhI4SAn1orkDRbc4v-uZu0ZQ!vl$K6MZwfDM7_l*Y}))ZgA;fjoF8i;DCwzCp=qKXksi-qLv8nOrbkp-7hLO6quSt<XBmo~%VQTSiqAx4* zIY?4{P!2jskyr~lJNJlCh~LeN*aPC$P6eek?nirqLenoey<7Mg3G%!-R_TaNnHCWE zUnJG|!Udd<{)U$;bK@ad?;(;4!aB{Q8ooNE3pbVPyv|sPa}xLLl{z)P`Y@NFbjp!m z*rD$NFP+j_s|i-{lU|hBY*QluBM_dh@Z@Z*VNiU|wACNYC^PyxscsaXl33K>GzF}+ zFr1kDPb(#wm)UEGK;gBcQcKr%Zyw%9i8iTwat+~m_29{I4gwwx0yOt3z!YfzE+y$P zDhqK@6aC8r`Bo;>9SiWsU+-DtgmQgGVfMP&3z>MQ@)s_{N8=UtP4xT7_1Q_8em-9b zmS%FZRns188?l0Up|2tv`oWC$JUt(%ErZ`NGX`PuKHo#=mi6*4!MY?87swtnLuj~% zZ?0qA;hN_|dw9MfHMFomhJPiz-52U9f@L~rARxhtZ#pfO+#ACTk48l^N~e`aGbD?i z|Bskq5&mTR$98xUV~L*?WNgqW#WkbiS49D#p$BS8Mk$e<@6MW#pD{fQ)?tE5z|($j zddT7uCepy%)@7Swq?V9e2@$yyqUIew_G(zcC7i@?xnQ`Y6Qz3}77f!2fRE7O+ zMrtrjh87H#oJi68z>fC^m$b`k2qw~(gqlA*06T&W-w50NN$-y&{JNl#<&E0Su7^#j zvD1(aYf>E2bo^##?|ohp&EuJOH3$^v;jtF&d6w2NrSj+oAT2_CYzb{>rRM;8*7dI+ z!=#a(i}B(fUR3fU3leEio`;L8#a&d{Um}8fqcFuuW2guSNOdB&VB#B^@PC&KVrC;2 zwhw5H`Zn?k7FkQ9ZxRUdK=&f3lt#V+`f=(eB==Ykf2D`BMd@0eMuM2wC2~bk_v|j)&|z9* z4t`!6H-^gd#zWWHgVl;2&>T~DsiL=ntlu^)YHs5E>q%3lu2A6kZ;hzjpbo+Z5sSqYHdl>tEX;77F&H;x<>MKXztaV1($-LHW5STU;OB zHYFyV^LH*5eXLMrV7El;*Pk%A;$QBz^tf%=#SS)*?Wa%*^_pLsFZGg;S>C9}5b_C8 zuHtu;M0fK7CbP>9GoCm#^3=@+7hfdo76FLJnF8`k@Gxm+dh8%_%L8ncmjfbLNw7n* zZ}}Tqk!yWkTO^S+VGmNX^b@a+n|T&Ri}y%`&L~1VO@vm7u73{Fd*aLApCLnRnU%JHuNBZ%g* zOQX%qeV6>K$B2Ahainwn)f^;qSbX@-aw(sPtnCS{$|7#fG%tObVmOI=D$wF-EQuWYGr4&Hgix?MW!@^W2f=rG`w;qaLRlXUm{q?lJnJvzFrZ zK3g}wZxX|!O--8YkZ5#o%~WT$#t8Q!_lBLCRhc|8&380`f_R809udBEg3+055X>J> zs8Y;<(Z%kK`9m}cur8xYeSoiX<;sFy-p$cJjSaz85QJ#{n z-zFek`BSfqd90G=DGP4Yv?1p~e5M#jo8WtJKDesxYj+rE;bg0LCu**C=^pw+Zfcj% z6vnDf^y)iuS9zBhfHNdB`}?=Lx`KCLgJMs%c*zcfmI2TlRY_ak`2NYb#h5=@vg{uV z^~)W00^!Q_&PMy6_+}oKokeM`bp&Q1_C}u_<-AP|`(;wWs-01d;mJ4K#n$OSeK-Q9 zV7u7FXs3j32ErE;dqk>Ugsi-jsAKE;SJQHwL^wQgxWnG30}|MTaDfpX^oej-%J;HD z?)ku!(yqi~hdTh_@}vDR)S&mnn@nSU``nVlRMFjF{&oPT&54kdaR=%z$UX&JH7GVV?HkLwsA$Bmm3 zZ0Q9QWBFiMWgC+MP_gJlOq~dlIPzZnR8DVOCFP6|5JFjGGlRr<+jCSf1Xb5-f0Gh@ zT)+SsX5;ObXoR3D`jo3Z<9)6M=sYdn_CcziXEIFN+(9tRrP?rCvQrjVO2Tn9FH_A9 z)`SBL1*8l{OP=5ryXyWHN<4y1AYI0Yce6TGBKrsrM$h)1MN1DEsfE@I&`RZv1xRS` zozo+M`?^X>aM22L#(lM9uk00RKSdCu_Xd=13V{!k1Fq^K)JK>}p?TI=>p?Pjs<|L@!9=J%u=5>33jD=Tlb8Iov8hu`BXJPaEq_c?2dTCb z_;x)a|LvO6{aKSVmAriFpO`rl*S1=oUp*E>Iqs8Hy?9UAmfMtNM;z?xhOuUb4NTZb$65}Na5wS5w& z54!-QpC-bAM)VrWBS{Y=oQ(eninpcJ#`Rh+2I`rXOp%b7KQ(*6_*+3})C$}K7o!nI z%e-V~QCM_Fk2`dz|Y{MU`y%THT#>2(LpWjxF%Yl8oua|?eW#LPsC+==_lphIuq#`V*=e1Inf5t z&A68Rv?MP;^LC-d+HPr7q989vyCXn)n0nelW;yqGYdBjia9F1rdWfO|m%8Ga=CAhOTHZ)hv zaFm71I>A%-(2n}4&!UPtYFJlzd<+{G!b_Azouxha3qLT-R?phe3||-@wkIkIbR#ITLzzoen8B)oVo;{zR`;A#^G!)Zupd$_|#8d zYCtX6ircWd!5S{&jMp}bSOaU;p8njKg^%QKi5!0%Rj2<`?Ny zP@~R5P6)LK;Va)I2wWQosYYO*@ey4P1Q1b0hqroT)8t@4{BVl>R7=?)Q6tooyTUYK zTCG^*)x*jgn03ji7t4Au#iv6;~)l8}m{oGZB1nT2?E~w*hB*a|W{&wIX(qd_n zcB5pD60h^SmMa=VHXoKGpM6q)LT`3H_r1oU&6Qm9N8WIRhxR9RrDmpNbY$X#d+k!B zp%+f$9E4s_XlIC^SCo5wz70U;Gz?Q`@)TNsDas(%-HzC{0_JCL#Los!h1az-g?NQ` ziYVTudHa*pd?u7YAyU|(*5dmME>sRdFyD=ki@v`Z2Va2%Z(l_H0KjX{+(M2kiA*d? zFbz&VGt!757G(@Y%cg`p5NR`Fq+!%Z_R=v_OJ&MWaMJ1aYP31MI1klIv!bxSD?>ft zNKz3B070!G;-g=?#dMk7Nqtu(jDzV@33hh6VH_rWZp(F(t(3x!U*Rllhtt&xrMv(G z+;B5DH>tC>)7W{|7I)5N6X`Oc|M$af!f&{Qq2z9-oGvxy(A#?;V^Ld`E7s67!wdBd-3 zcOj)l0o|(&K6~FH>Si2~&1zLze_P$~TO!dJY+apJQ*4dzm+_u`lXwgsJk%MyDt$Iu z8NCX%K!ZmMSfA@TCEE9 z>|5VA=7W?mGY&Y^NDy#>;OC6qM23@b@zlWAauaSjMT^p`w^ArLoa9G!RshFPo26WJ zig+kV2+JKumn94bgD)(5{dS&bMHC<@OA1<7HZDCd(EZvvP$BMh{!YZQt)cY>v#5eb z-(xR8c^ucFcO&1-2N_*}jxu6kK1|734d1y-i^GwdGxK&^?ljtaCf=)G*6A7Ki~gPU z3D)0v3>15806ig0MtWTGtl8Lk0H|Z$?@zNOay=qBFHO`8_?`? z5UD?z5!cd$qtV&QZrV`#Sw6C*^6nnA4w z(=>$MBNp-qx=a0&cTkv{{|hFY?OL|WU}ornN)vw3gxx5u2D%I9#Nm$Uk!P2zg*>_$=PkZV20p!EdtA*MT!^LG{&saRCWXTRN zuC=28BHqwN)+kCsD*7dZ8Wjx~%IZc0IumSnijj@tlTTs?jldNUo^RZdF9OPLWfm(> z1($5!Ih_(4rS9~V_HbsqwgdZi=DOp??d!K)$_IRuKx+>WIH4|Go0YF~iq>bYVt_?a zi8=l8)iFFc_9n8m@_&eOGV1v4*MRGMdczHGFszBlVaYIMYW;TW1ssydutI#Nak-#2^tC z#*n+v8_UrH@njN4x3ap};_2m83;J!drFu6T?~*65hDI3_ss@RkQ)ntTIY&cZ^z~}W zp$t0-1M?-y3PQJN29xp}+^B;2+`13koV*$}E!B}f?M_m8+LAW{4W(;2%4Ae8-O>LP zE`taI2fR2Q9z$9SbPcZ+PwXi`76TQySrwvHShgFfLop|>Q}V%o`Q-9*+2y5SO#jMu zgwT(joTc88;nAidTQmEg6_2e3#aok!|4x4~b9r6a#in0h8BJevXlfy>yh#+dqB#Y%S2PK7T4SMH zbUC&i8RNoa0_p$fLRF+r(n(Ut1fpP)Tvr~k7%OKVma(S{|pJnlu0uh!L4xfgWFt|@!6 zO6jC4mm$-q;QvXO^O8~tYoY{m55LP|CnYMNB~5*PeB*({$F07;D4;8I>x4w9B4~D; z%6_2h&2etJR2zS$`VE9J+!q)#&atUPGLm8Z(BYAu&QY}_+}~3W52xZzSa4T9PBm=t zb7Dc|)98i)qPtgzd{NFaA&1f6e(V7Gi9cKJqQ2?|#*%?W*KJa% znz70$p4*Z;J=oP!yIc5;r<=rR8$_}5#`yv|+cHkG!?R*p4^C!6dvQ?1*rX!xpd6=Jh-v1~6$xH{rrq&LxLyi&8;GDCxUowCK4*5w{A)pm#K7>9+HVv|> z{tLOjg-rxPUO`Whf|UmR)VCmQ3i202rWIhRlx&w?=SqQQQz!>6ayaaCk#VnP7Mr4n zE=M!21kvnJ)!Q4;eo1Lj0oO)1h^ouRWiYof%um@m%?*X5ip>53PtWs`7=6ccbiQ(b zEc;nOf7!BzJCV&za@_7O9;J(fPsPYzrERK8EwG8gwmT8;cmiV0ykPs(TGz_E#rU`W zk8@Nln;oXbe?1aJ0cMakDu;_eTAQJ`Ot%J#ffqtyHG?iaD>@*@WT5;6&Ph$}oE3Se z7n8|-Nu1H}g?mer$ z2c4cKQ58h&-~Y8TL)70EeokWA-W&=B#E=M3MlH@0DtycrT*4lPTJ?alhNE~6v`+O- zKbMN1jH*XcglZl9yowRK>^58>VBa)yr4ok?T-iRS46&f;F#9q5 zVTXeFdFi&`SWJyAl;Qip1GPcetao^C8m!ZYH<61>n-OCw9jEP1#yy>9^|hQ~(P1n! z5yo24?&xmu|F!rA5j$#Pg6CWI31RzfA`GEAi;%mOJ1O96Bbs7 zO9`ju1iEvq$6qjyNcfacd$Ob)nz~XAJogJd{3|n)CHp8>k@}lMPtgzD39lQaAO@+v z8-UYgL5W_)Jm-^n)%(Dut9539oweJc!PtH)C;7L;GzvHMlE-+KxZT=aFj3qO3(Yq-p!R+3wt#Gt?K*(akl zyU#rq@?-vElgrhHr3@oNM~sB!v1Utd*7ol_)?s$h5OvaZ8B^h8+OihF!MxmE1u zp#KQMU>Z>yHVWVYcQ6_SQTw1neU)>dT zON7)Zhk-W9>wd-Z+x!9#BO%f;Gg}J6+GM={yliZQEVJeRrE8{*wb?$tJ0t zqnOwR1F0cY6m2H) zLtzah72nBueEwVqFy|2P#(4|VK2(04GFwUSpzAT=O!{5W;VuVnspZ3kY)U`G z{&+!|Y^G^xS+?6@Y+;{Y3g9DhYQkO}pYbHH;uv+l8|&*-1uCe(oUjOil+o$9w8Is@ zD~4^6BWWbtbLjw>XwVPF8s%45mWU%GW&0BmjpN6$u>r;goNl=hEJEZa!Je#`Sr94l zEf$cR6pIL4oO)YO4X1bFCu9l+W2botkP*?PfNfMrv=2+tcex{H+0w;C|L6x2Cm0D; zRh`gj-xXNeIK;qtV+A?$gYM6A)O?0uM3kCHhq;{Pyo_>US=7n61CZ94tsEx8BA)?7 z!-i>DwpxKy#$vyHiHjI;-~*WCjB=)Kbp4R^pk%8nFO zG{^URPe<1Pq92xu1Ksy@SJ;}<5D;n&7#O#ov$Gsn#3NOV34|u&_a`gv3(pcU9zUZe zUEkO1R^e@{^~$@8Yn{?$->V~J=%NbTAus1@sfB=`8-Q-VaL0Uvo<+0xC>J&S$A|6f z{2A`sJ_@znZcMrCnbi5yhi4^9G}$1sZu&)4?1 zW(}6^yquccD#?xvf9y%uy3E-*4wiu265gs^kV~w=|G9}aJ9&*H+ON)aDLyX;OHJ7| z=bS(|0K?f`mr?S;5+giq*;@Dtb$BwDJPEOZ@k@P2fZ;Bs*i@Svu|<$uc5o0T6bbU7`bG9tlwX z>wgH(9R6fEp8a;r-6o+3HREDMHia`aQcJIhceNwJp4lsxfRu zb)sfy?ygVw<8V=%@C7WlB~wv>=s4`~@zn2#eN=Jll%I4l1D$C&$nFe_#vbD`{~loP zc;(t+IcggLQri;LdGF9swZyih&6_11iPYK|eOG~yYI&}D+W>ITGOQiXdDG5F=8=na zx3+2GH8>*ai=(7waxdoX@3h<;A7SV0@Dx$ylz!~r722hlSFF*Vaf!RMVU9GSHKk6Y zLe|muLIv|h@)l9#PglSINNDF+{GK7U)J6=6 z9z{F&c%N=k1W`3$89cJ3f)T<#>=0-HDZ}OyPr;L|Ndh%^ z3Wz8Bi~+SB*Aj653PTe4a=*zTTPK$`gV%ar!*~?c&QxP)fWT_2MAFL!ZKNeE)NBe_ zn2{uzjmKV~ZR!_lhE25Ye^oqme_7kRV(WQEfHLR-8{q zX@03LTj>M2HS1$=?o-_IgQ+oSzgw;h%X)z)MElG|j7sKxH_-(W{b$>aV%d68rC zfODg!wD(+62!N{8_6@hLNzfP6vbl59+Jkt_JM}lcGH@cI!i#*! zkwO{-KK3}saW=kE7d}pImA(<220D4M!ax zG@hugo6N;3^YW$mz+b~^npt}m=qi1$AGxDr@uWf(t7{k&abh_+u#cq~{i6&@cQGc$ zb;5FXwfgouwgt_@di~T(Utpa`7kPmND~JKHLqI2Um3h_8>};Le)m`0?Q1rwIAnkDM z(m&-!Qs+}CM2L$ODNek!$!Jqwc+RT;Adun=p=4S3HLGHZ=R8T}PNP@nS|nr-t%URO zX(>b7r&MBazi{rHz>E#_F&V|M1YKSFO^NaalUnv-TwoQkn8kg1%wQ=J_0%(}-izS^ z#$a^z_nLNMGduRuJWCGpR9P|tzWm~tP><%EADKIF7a_NnLwgpt{|j~|mF%~Jr$5Ac zdxI59gJI1p0!*2x{4;dAzGLWb)w0R> zh5i~w5GErM3gXfwps?Wnuic1ytB@NC%Bo6&W_)#Gr*w%O1c5#Q!-XNzP$Ug`5kO`>ls>z$Iq8H_pG(GpGn2jo$GxY7?Z-{>J)d zI2TyuijQ5vXgWTQ>y)!O?-G@(gztEbR%b&F1BY0MzS5;DCF%Du&6$ z77KxY@ZD@VXV`+h=q(HePD1w#)(-^-O-DleyX3mw-2((^2JO7pi`BU)cC>)?i34VR zh5J7`=7RJ0XUl45ftmpfqDq)?IYzMki=k?2RE|t+^;=r8q^v;zx3MPk_3(UpFL{!? z(@%0Ud8oHbay(5PSjYVF3b7g_@cGLAtu#Cs4((!}pI*&v?n#DaF62i;-nf*=OHqMw z9%U)rrR3sjOD2!*sbWmLC>7~QAkf#b6Zvp66iu|Btpk5*rB?47O9IyaCZ5};5&qNo zqO^~GBn>+nCX?Uv9F8^rOt}9zMz%I6>CdClgBO!NsXQtjiaV!lMN}>e83PXh4qL+C z@m-l0ql6&CsNO1XZM2I9fZt^$03_dne+QCUc@GEG%AkSr!|J1)ao? zxd|9BR-9aCMO5*1)qKU=%QJT6Qc+cF6YaJsy#n(MB0 z6ISh>S88Z_-l9t0ytaZ7q$q?(67%Dkrc9B{&hLg;oF{y`)Bhc=0Zj^|m@AKb zXZScAIj9xdO)Zit!rQX~G>;3=n7;T~%U~|E`P;+Q(&4{Tpi!Q^J)G+S zC`7eRsi^}mZk1q#W3gR5NEfVSOWHzu`I4K6eo%Th=qE9SKqBzAc$~F4v3@(|1AVb# zIv($OO^iBOnqeOlL*hpmZ+o99Mybu;nF&>gZ&j?iNZ!i0>y6Q$luUPUud}tcdC)T_ z0r640MQ+i`54mrRp?mAU>+_E)af`;sz+r^C;x7S;FAInq*C6&WR6Trsx8*X9|V* ziHMrTOqMAQ1y9boZ_d>X;s_FW z#&)6secx(~#D+5N&xfT;=j5^-xQcqDLC~%|4wEBTBDxbV4h+3%DSGU<)mtCO*4J){;>CEy zHG8U(KzA|HeRo2R>)DBq8a~jjl}7x2)<uD#VNYg-_i-h2*^RMfrOn!5qW$^PY+mO&bpK=1{61FP+-g0sj% z0I+EMV=2m9-2S}60C4Usq_o!a|Nau*&%StGL>U zxfo-18gMqxC6pLD9cy8H*SpPfsSTX|xp^$3+;weG7!%9Z`O~Ig56NDhA7ZyKW->cu zFc`C6Ks6kK)!zufwLgE(tQQ)Ky8I)4mCdz#=U8U(LG5sYr%vN(>|^%$T|%hllM8y6 zwwVf7p{Ys6G*tvMB6gw44|XK(2u*og-4gSU@ea$>b(He7T1c5?eCOt_E6SlVS{QBj#hJlq$^Nuo~Hx^{Z zPD=)>28O#w_GpZH9$%q*)6n;6ywJ%8yu1kdtPr~?v+plo+)?xh*5dM;tTfc%ppK9F zFk^R_KX4Q&<}=3u>VuwB%`9ilxYF>7kezujD#H_pb_kOKIt7v8BDsCbZsuejCRH+y z(?*pSYC@^kXE&_iw@x!1O9lo|FNOEkL}Qxc ze6ynVc@ICk`@%CHJrDxf*oow?#%1R_8&3_n>*;w}!IDRqn89E1zU9-@hn?~D`ya=+ z&^Vjt*l{WxZtgFkXXTNMJJTh0C>?~yVjpS&(EE&6wM6SGFIgJr8G>JRX{j8^i$m9#p73^fZV&K1;4a*$2j05Ux!_M<_I8NWCy? zIZJK-Madb+6pxuF|9(T63Wzukg;nb@^k891dlob9x=UxgcF|mUVUBfD(y~@OmVcB) z=57F^#5UP=0wVe%>}TPp0D3x7BkjSnCg9sLti`{joyP4TYZ%#1h~@T5;KGXCfqnh0 zpQz5^e1geDH?_=cB+hZ(opjCz`74|jNr1bvkBpjjV-7D2r2UYMKrUf&dB)C0G{Suh z&WV6?B|6rkNXk+I%3Q&KK)VTSwCe9zU`o#Bs}`F(?ZKdVQ{XqdcTKt@cF{K+^6SCz z!)7jreG+@9b0uqMa|sYY>t+%>Hc25by$+a4Fc|w)1DIblWYU2r{6>ZD*~wqw`b1jd&>gP2U}aJ@ zKqY%~t$UG+wbY1NCpm59eeU~c2A+v>+ObVsDcsI1{~xH7Bx23?v$`DR#zJGbYP)A& zg|!f&mZHK+$hDkUqj#f?a~yzSMalxTP69MRy9g;mu)}6|9h9WV7ew37tjX!Lg&7cP zL8GQ8#&{|V=itO2h}gN-yy;hIpBkqt`NzA>WN)X_r=JgE@f=bRXi1`}Wu5=Qo9F;b zTUXf7gjz~3!*n=1!=H3r1T|-2gtdkP7|e7IoQ0rvyP(QcY$ewj)L%mDk3gU${><_N zZLeVhBse@m%;( zvmGtr3A_sGE*i1?Te*=#ABSwgf@Z>-#-i1`h2+;EnHp|_?-kqNQ5CX1U$G(?8{T-i zCZ0XOKt?UtNd(%or6-VBAA$FVlGQ{^pFA%aCzA-)A_!`!h@@6buu@c^4IuOgl4sxR zmYLFkM$F02SM)JX&<@-K+}nuc8nQjQy*8HSrLBF#$^P9De=U?pL*4p z8^%N>1Yi8pqlgsZ))M}Rwv|s>InNO<>JNoykbIfpgNu3S!uzu#rC$TrM~|!~df#(J zZi9z#BJDt{{mz8Pj9;cjFNZ!CkrNs?Q-Ms5^TmjF>uY<98v)sc?+$(TI-7WQog@JDG-p3n( zT5~V|vDBt+N``s7DZnt3@VcL)){Ar)W@$|drz05BZsu*IHn*#nXo025`r(FGzcjed zIs_EV#N}?DiPXPj;3#_)oe=43ypE34b;cYFF8N6!Qqy;QOx;!xNnV3WMX^Uw11#Vh zz4Zve`d}q~g}BfnZS4qH$=B_j#q+ZIah$&=B#*~Rfu5Ru3E0lfjyl;pT{sF5X0I?u zM^bpdk(8Ht9Hqy5HUEDq0vpxIQz(V9vNxv%0of~o+=&()6-dH-YF;!d=!7x@+qTWX z*N2xt!BCzi);E_l6zRo3@$Ww2g-?cU2FW@`=!E9F-Rf3UZ`*~+X7*Wg)SRl9y$2?p zRUh;S`Sc~sJA*)MVR#%TQT5BZYXhWxfq0SVlD5^e#|bmY+azf8*=QLw>lfZ9;8)=I z?g&Ol8{0Eq{1TwyfuFji*j56CDh)?bPJOmrud2PwUBycI%}=Cc(r*kMm=ankYCO{{ zYqi-`{uf+Xh6df1^m|+qSy%3|Ju?~4h>Lw#O>^}h)@)UHk*e&V+|-*qhQOGKX4|6s zC42;RGxd=nS$uERJ=+;bS8B*28>8b(4=7;@NNKaNcrT>d;zv5=-aP2WUgO=LSo>`p zK6#FJI#i%QnJkO4WCp166Zk7DHYWfC9fyda>UI=X@ZrZ>m^=-2NMw5L zBz$4@BB#+u;p=@DBh{hnal=>`6Vhr#uoX2Q`(ZS*054=wHCI)War{}nkTJGeT+w`NOu$G`# zT+94X%8>j7{*S`ZeV78sx)-W-g_FHuu{sMG3_Z>rplIM46u>4u&`aQ}Ef@X7dHei~ zGrio;f_ks4UwJ>{2{1nE^gGMn`7eY8_I3<-fZ+H1L7pS4!Qcj6?~{;RH>@(|2vR?n{y=xUWU@aFNos(GlUkA1Oxb=Mt1a|F2hJCrvIN@z~+UvhU z@Ss-$6(-$=ZfBEbT!Um4f&_Tt-JF?YeQ>Ela|i$)c2B|bN1~OT(R?ZWyZRf7AQcFi zE|}U?I>E}kq99YjmOZqIEj}4ylOwPun2C(caGIH7*L=E_CkX*^pQVdWLwrc&)()K? zRbT)HH2o6jZ99Vz4S3%J`Bh0^U|(Jw1ogok&_^{GQ{2yHfAGvwmc+VL2q)P$x7wTK zu&CU-q``QE*_X5?sHpNx4b@|-DK(Yr^z9TmQi#0rGr<;rEV>ab&h_~-AyJ_E71L$d znRdv+4-4DBWMZSmeH#Y+f&}B#uVi5v9gG-ex#|YqvMl`84*oYWp=t-!3g~vo(HWVV z+nmg0@U~Bp4$PjbsosXgQMuu+&X;?qVx10`cx9Nvzv1b>fls;6`Rn2sQLcXN9K^as zg`0vR%SMV!q!tJTVDkKvk{FDYcr488R=G-Ks^wZj!xcDscZ1ZYD!ctdMd7&wu;~dQ zVERIW1z}9KjfqL&^%JcA@=995P=a0eD&-c zj=G{~NVXyCz%vUm5QLEzVNUsuG9W`MJEBqTItsbDSePti`(JyR7F_Zp`Vb#P-oH8n zyo|3QzxD9JU@nDF9qEMUdB!%j` zMG%95U8SPI+{kqTwJntaHxohY4nI-|%mD4{kR&mR^1p{%D+~g4gF@F}f9 z;a~q!jk^FJJ!32Yy5s#Mi>Qv1Jeocf2)Uthkwa2=cI98|2&UtSwq-fIFiYc3IEm;e z+#NeA#$C^c4u`Zn2fy*n27u#@rzZXqb-Rl`UNfrxZPrHUN8k6q^O`3lv* zD+N{Vay9DnL6yJ#&lapW>0V}7kApnIMJi^*xaEfUbPp_)t|AwvaVW23on#YV{dp{D zY2Zr(beJoPimIMf)^(xlmI?Muj}CWMmbwouT9*F>5xo?s4$n2amc^N4GsX*vcBJJu zx=sw`Gwt$w5y=H(Oz~x*7Dh(7ORyum@t&4F8!DSA)6&}5$=vr@+Z3`;IVI#tX}TtG zYz+L+-@AqwC%g0F0SEgE0vtfR`WdFY_a zp;Pgc;!K2#pfGU-$eahcNNTTyvK~uTOZb$Lx~o1hKD^yx`xkFSZR`5QZsJk{jA^_CRE@#KH+VDHKPy{C_-V4>;oatMh)Y-RiZ5a7{0WX# zC!r!U3reI2GK3{|A;r$GPNpz();FUaz7gcit8$vu1LTd7eA}K4Kf9?O^?s0pa422u z;}ML=Vdd4b0mMf@(`hkm<6CzqQO9tts`~@@%T>7_rQ-r{Ty`x!$&U7-_Rl zsn5uXPnZL|{FXbFXg4DqN<+6aEf!~p$C=Ca~({?b_`>|l;S?SF09DHd_D_XLig z_D~_PGs@P=6iVD<=fJ_#3ld^wzO0w={*UaRI&@*LL>A8eV=X@x>-Us*gu0iU#*YR4 z4J-N>Xt_`zI7g(-#0OGw;8>7q?qqY|HhwA(et@>Obgl*H4KF-Gk=KD?#@*JhF`*u$ zCa3-abe; z&o#v1e+!rtY3U?Q0V0^<&l)GTE# zRRA&Q5RJ8a%yhs0$1o?09vE8#u5>%?b^RfPTsK%1qcly{-u$H+mT@Go{QlRAVJUNw zUNz>hStsO0TC zer&{ECFCPOBZI4?R1s#kvq7=a*@{VgMtsBw0OQday;j_ic|~|FT%E40GEHWP&G8E# zU~c`~(Dy#RQJBE@7Yh(*d?LzJrrd$p=nU@Z(?|0kH=ez(at0_PIY8-ZtUI&$IDKD| zjym?WW-6kgh$0nw_vSH?8N|KxK!yR#(KvP$`&I=_7x^&DZ?nN91$@?ToF<$q4;s2S zGuitbadxn70&C1Lo{>M|y(?i7i&E88qr!wbzE-gaV2St>c4@~Sn3h%`V0ekW2NUDa8q9xVVn^RJeA ztU$aMEox%X%56T8XzRSrv4`?eYO=kH2 zOwwgypn>@ydEb5I{a|sV)Sc!gd=&EuE@dbB09{UzvWdFsqh=N@(sZ75nQ4B{mHwX* zTLWMal4zRm7xeafYf?S!z5FbKq!eT1ER+e*D@nqbQ))q#le`Vd#x76u z#64{h6S?U}{Q>Hv6M&j+*7W3P!H{O0mf<9$-0Gh+Xs@gQ zkGTauApw8UfUZRu2(Nh*hLHLO{R<3Df1%AlZlyfryaH%X-g;Slmx}YpgRHZyP#t5} z-Gs%J=6Yz!8kRE_JIl0>~nz{u=XnmL1>xsxs5S3Lsay$xi$ks zwSR~caKsuumGm`d6uFkK&arlWy~jY2f+FkP5NG6~b~&^X6p-^QhU8-)bXjUdW@4&G zV|*pdLP$~{WA8Ph9jch5+sgFUI!7%jvTaVY)qn4MzsFgpvu~3IbXLf*oZTh1RibI$ z;lTn5nBE{NwpTc|l_cV~UnO#EE3yHAfie#Bab^gJAJz04kd^^ZTZ6z>p6l?m_yS|4 z)HEHa@;^njM__tGH?IDrx(qi(536vZr{>?7&AP{sl$nBVY<=tv?v#Hsx#%fzgStWO z8k+zarp~(j+%s%7iX`g=;d_DaaF_5}FtmNQ)XwCj=)6wO1yV8$=_0?fF)c|zyAfQ6 zyetqb{)R8KSu8>00@IQTRT}(o2cSCVfB-X{bJZ<#4N8+)8YEqnd-sYW>${DN_?6hp z`q{yw%WR=`EVw>bGajeFsZ6s&JBY`ORpY(~jX!lNHl~AasR*O%3Adw{|G$7RD2Fkd zgtYJig5E6S`f!2D`Ux33C=463K=RrEGCNFip?!|5tfeW2Kk_Nu(Lqu>mi#cKv~ zS3s`^VT?fVoW*-YmZQANKL_Vx<)pYgM!?$fJvmvBy$VQp&a2;HkWMLLGn*ZWBcM;W zU^u+CnC=H|4FWwimS78*Vi>sm&h(o|KS*kypN*vnvej`?R&&qALdJ1*d3=KIafs)- z^=ZCbG_CPJe;+24y}B%>Kwl~oE7`;LQ->mYhb09l0b*ShEPNG>mzO+$%>q!Y;5ja) z#pO!}k1U{D&nvy9t}X>TAw~Ni@xnAT&o95x5gc6nR5h^JVem)|;Ba!`dvNZv#mxCe`Le>LLQJ%pj>u^D~N;$q27 z3$H&ZcIsUha=!g(N}PZ6XG(V+#yhmj$LLMS+MP-tex(tcKbqh9Q5QY#9HaHS<0Pd~ z8Km+S^a1JrW9D>oki&UFwwsfgeX&5+qY9g_qSZYFNQ9LZuMS6+)W%Yl&6cmG3pcx4 zSEHOnH|wsMc6D}fO$wV^KVNZ`3TSF7_faHzOJ8p$6;Cd$yM0Ub#S2RfFoJN-Jd`&g zDt>EJTEQMA8p{?1b1o!m=s`+@#8bD~wK}#ZGXogq^Dk(YtlRoXZ@Z_zNuV8|txb@( zq9<%DGzR~@94y2=tkq-597qW8^IC&>w1RVpytK)c|Iu%yhj7DBKT znZuXr2FX&ZoJ@rvJ#!(VNZ?6q1hm>p#!y6LAca9BqMn#+663vib?|?$dH7f>j3Yqf zmRd9Fe0amLzs^a^$;-U#rp8aeY1XDLodI}|i?tIl`d0demJ}N(BR|QplP@7Dc@2cb-2o?TOFeF>K`A=s#$$4PR3s26swRkY5qTpbQUglGsi zq=nk!iWviaLMBSW5`XcuUH3lw2TxUTNpu^S+0#QjKCGXA7dEpQJ3_=XZ1+9-PH}BC zVYy1GaXO!(HrgOjDgmf(yPn)3D@v6fKlVmnV^Hm{%o=kKs@S%cl_D-j z!rB~B&%yBJ&m0MCRpjaZ#`9nW)K}$Gc!=$v4EVg6`b^!SIkD#IJZ*o8178#@gGJz0 z_}!eY{O(sKIpEh9s5u-=bW<};h0?Fih}=Kaq0(xI5iB4W~tk@*fK`R)2SmNhM<#6-@yZc=I4Q|y0=*;9lbSn(NaFD{qrSHn5hKW!%4`7P*st5KJk_Ayft<{h zA4PxnI3y*F19TQ@Av5byR%h#QnEvtIN8+OsktD(qa!(AHSNZXi!Bi}ZYF4ycTN`yv zNLo+GX{q`$QDJs&pC$sTL`cj0!rEgrJ`nkVEN|D6*wm8C$0|?5HDR`0LepqZSy)1; zGd)Sw_-TlfkaIS>k&-ldD@`f#rFE5n#LYShNp^rDaWKc~gr@gfu5iMY27H=l9kSh8 z*fRwqesAJJl8kb*@RA$^j|Ih<@VCyG6$0QS0mX4vgKh9eU%bmX3~S_MJs7d*MOgiVRPN7uP4xx?(4qLeDRB z%a*U3$OXtZr2K3=e5Q|D`*Qz!x$H*B6in1gYbQu0B?Ar};BA98L~#gPw<>O+SmGuy z5maaP6|w7xAbqsY>GTmktui$~N1VlWILP96i>J=P+B4!}^&+bfg_0V{9f*+-Q}BU_vlc<eoi~pKn(kPk4vzDuq$@fh?>p5kA;`H(|Dz$*{^2)03}0k^%+!Qnr&Rn!^J!Yh7J=?08~ukz-PFenxy1h1_O2^;>}*)sR0t%s4_T)@MJUi|wn?yO>(7yQ4? zLa1)_)CT#9Jxj>Z#m3bHgLz~RuQPRn%|ti`MEfnsY4@AL<_dmlh)OUztsvK3GqY8g z4XmSKtF%8Q1^yT&`};@v--yVlBV6)}xW_?jg#!0XbZ zZxE!^K?ie$LL%hj$%qP*p_$rBFHR$0@_HI>|B`DE{)AhHulIcoFZ+Zy4%MwN{n#G* z;X30ecmif%wnl3?c+a{= zqoBkL>gMnho%f%wSpabevO{Rs{2SDnvZA%1usvU2Fe0EqopB zx*|nMePXQgS8gKjsB~Ll>cPTEjd)pft=#ZgItM}9+4x55OeGT9gFUm27eGPF=q8z- zslzn)XC472r8RDsTy@fzM=);{5(ZKbK>!9PK!m!yCY7^95C|2a!;ml(s#xMS5t9HM9butYl7k;yYZ~d*ZydYE6p67`D zcfr8%_yzJMNlh6#P6Bq~m;-v|W+&Af>DbL{FY^&wQT)fGaX1CFHol)~#V?&sOkt+b ze~#DbippG9%0?@i%pNMH$!mQIepsEKK7GR+E{r;9%mpB?zg!$uRKMWm$gZvCm445k zftjh?#jHXj88- zzQr{dDbYsFFF;3wXb+zQV$j#&x_4!DmF~59jtx0;XvG3uQqty-M~kd$K3K;lX(~je#N8+OGwSB9Y?Q9+RFdj zAV|P|)X}0t>%tE6NfSwFi)ao6ELkWsYyV@+weZBkLLCc#33u#9^uBaJKhTnuAGPiP zTbMBZ?5(_X%-2N3Kz5;spY7Vdl@x8nF>BP;Y9O0w%*R`Z^vGXn4w&mha+;ADA1&Om zQ`=6^D#FgzRV;0k@0CwNqK?D{_j@V-qqZ#ro!t*w#n>Iu<1PcPYQ_X{Ft6YiL4xPt zgh|YfZjWF~n1Z zzA*5rF^Ck?TI1-tSY(}*z~%~YI-Gj)RtCFTEigJ&C}Q;=S2~Y+OXwdbvHYF?_=a)J zN3sM*h`5fspQ~3eIkAe)xw=tFkaMH1%6(d6X7CWrDCEJ(Jrm={Pr^{h@H&xEkMrE5~z<^ILN z2y7t^2{Y8Aom0n#8nHT7dmi;Y_(Q0W}!1i+Z4SSwfUbxUoRm-NY1ib=goI{^#*#=Yc3t~?qSD{ezp?9|NExp9wLID<1IyOa zMB|KoY9ep8s$}lZrP2@|o9I2yYH_CAxCL@nQYN zt0XZar>Va&!r|R>tD{3?Jxgr!lNR(m*FkDT=WQvmtc9)!f*y}o$(gzbyk5&wNLWat zXJ&Tr%B(~QY?veYdpM*X-Q@BQ;|TB)g+NO>CG#%qZF=RT_F?caz|8@1O@ig*u(6Z1 z^EDY_Av;Qb{n)%kcoCSct7BD|k*(?GIj8Zay@l9%DFO${%@G@nzvKwM^s-6$@C|)lOil{xU7Q1oBtPP?RIYnS`4j6&Oa$UF`jRIj-J5JDOl^=nGkw zV;HP|o-d35+ZX|J0I6oUK@sf*itg#N1h0#yFIX2F9ThMC(Fb(CkH(8jnt!1T#Rj!J z`#l!ih#?owe+S$>RMMZXTl8B)y5<2|PO*{)y3Gl#pi=cMEo(Uxw;m)*PFr3P`SHwlF(g= zbUWoi7HhGXDLT}cub|81dB6WoUFBI}EgaxjJ#8A#tPWIMTxkb8&z;E$tWQ%D6D8P!(s>zqyAX*+eBDmW;ktD9HFo5??miQCGf=^Wrui^MoK{{ z(k@<5NhC$ER(pcTeitvRQBKb&bc>4=0oo#-2M6owT#dc~Z1BOtN#C|=TBhlXHTAs3 zS%jRez9XtbdKAljHm(;)Bb*)7sG#OlBBR6QnSv%v8`e>htJwq33l2oeT0`iPbByod z*$#=h{j8d@^uUwR^>k8nml#m|y2D~*dQ#~~8j5C*dB)d`$>o!SAk=2kb#t)?nQZA+ zyd*c3zH&SI35Gfj5w@&M;)28rO+3IOt|ur3#ZtSkr=mcDxqtznSUeR{le>EPu9@I*j+`>hB87^%j}E4BkkXbquAq+FufzOoSi&Fufmih6b? z9Im@>F@vIpy&Nn;er0s7#beOSraT|IO`!=$^c(h|5C5|G&GP)kV!Q`940JU6nNR@b z)%(^vs#68_CkC_yGYAngSLKa&F`hQ} zPjn3G01EdnrrB^pg& zh6&)WUdPh%*Dz&izV*x!B+od z7lBLtV{rS8RwG=3=1dKRR|^hIzg-o^>vQe&a7iDqFpLYo$_&kf7;F}0%9D4y{~((* zU9qBBo-o7;e6!m)nG|5liW#_QS-_!u6eoVhwnv4JQuo9X&U3@Sr7gIAALad?{drGS6B!MKwkcnfMp z`1mHS@=lca9QW<`L0zay+T@6^RYZ%@lerb-4exnPu1(@#6Z^Bl=BKs$bI??J{>)6x zb!u9H^Qh86RIDWRxqvtgYpZr1-zIgJmC*lr|I7Dy)o5*I=ppFPeKywE>4*7(>JHAk z)NK4I;)pXIkuwvf*7-6~W$=N*#=DMLP73g3{w0y1=%A=vyI1F3H}jcIM-yo2PBbup zE=;fOe7`(B}2S`EY?5x6UF)=3XY^M?$(2hHbr=dWhAE96Q%isF4lTwaE^>H zAO9eW;K+{4fHuJtSV~Yu8GIrp@9

D>wLgv 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�C$@j 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 DOySaN literal 0 HcmV?d00001 diff --git a/MikroMaster/20260511/20260511224002-Config.rsc b/MikroMaster/20260511/20260511224002-Config.rsc new file mode 100644 index 0000000..1113763 --- /dev/null +++ b/MikroMaster/20260511/20260511224002-Config.rsc @@ -0,0 +1,4653 @@ +# 2026-05-11 22:40:03 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/633/2f6d4158\";\r\ + \n:global CommitTAG \"unknown\";\r\ + \n:global CommitInfo \"Autocommit in repo: ros.vados.ru, generated by owne\ + r: root, in 14:35:03 05.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=172.67.182.196 comment=rutracker.org list=FuckRKN +add address=104.21.32.39 comment=rutracker.org list=FuckRKN +add address=104.247.81.99 comment=lurkmore.to list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=8.6.112.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.41 comment=pornolab.net list=FuckRKN +add address=185.110.92.40 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/20260511/20260511224002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511224002-Diff-Config.rsc new file mode 100644 index 0000000..8e7bf6e --- /dev/null +++ b/MikroMaster/history/20260511/20260511224002-Diff-Config.rsc @@ -0,0 +1,12 @@ +4301d4300 +< add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4303c4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.96.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.47.69.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.47.69.6 comment=dou.ua list=FuckRKN -- 2.52.0

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