From 2ba6e3d7de1022c04459ed9010dcad9e08353906 Mon Sep 17 00:00:00 2001 From: vados-dev Date: Mon, 11 May 2026 19:00:18 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 11 19:00:18. --- .../20260511/20260511190002-Binary.backup | Bin 0 -> 302647 bytes .../20260511/20260511190002-Config.rsc | 4653 +++++++++++++++++ .../20260511/20260511190002-Diff-Config.rsc | 20 + 3 files changed, 4673 insertions(+) create mode 100644 MikroMaster/20260511/20260511190002-Binary.backup create mode 100644 MikroMaster/20260511/20260511190002-Config.rsc create mode 100644 MikroMaster/history/20260511/20260511190002-Diff-Config.rsc diff --git a/MikroMaster/20260511/20260511190002-Binary.backup b/MikroMaster/20260511/20260511190002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..0aca4883b52d2b1e0a9d8aaf69994a73e4706148 GIT binary patch literal 302647 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%0D)pib#MvJtET&4UNX@Gubi( zL@(qP;^@g7!j526?tdG*6W7WBhXy4-QBSDqtnG-5y zYXpz_lWB{J;QN*8!ud@YDYyJg5r;$r*lBg`9n^49g(9IlIBRL5WAk09QxFQC%_V(1 zg`f0Dxr!tww8fjhu;x&?)>%wr7*Ny3p&MWjB2X?3&5Q*gUJ>x?xMH?GV5uvNw=%aW zdG);jE%0OuMLt^yIklvBUD_#~#$LlP<!&GUV3LR})*%FCSwt~(0{97&GOi;FeWn7vq_RpE$v140=YtEnthzTC z%d1Bn#k#HFN7#thI(JUfegb=*; zf)iE?RF8Cg&-n2JU*s9Zf+UHqD5?hhAc6)g#hbCyo>aW|A0x&+1bkdi>MTizVt*93 z#9ntUSgYvBVq$I12&nA{BHlX`E3Jyy%enjnk8EFA+ziG$1vY%QzbiiaODiD_K9oV% zdrCc8u|BVb@>d~NC5#_vdgB#NkNosy6TpeU-k4Lpegl)#4KHhIPpF;}owJ%Le~*y$ zgQdtWVSC~YvpByCYtcY5ls=kl(&gr{=7L$8YvbkCiWW#_Q<$*T?0AtFTo4Z(N*co@ zb-oiR1;vj{;9RGkQ3I|*$W1mKv|cO&3@Ps4Y^>3Si^u-A9psyCLB`#Yd)+_P)G09w zQL)dUDnBCXbS+&sppzP)8;2=@RA!}{jJ;H-H880Y?%HAVi|xd+=VC#Z>*dX(tb1@Z z_At{uQ_!5^x*;*r8mIPd+Av<-dNHcGj}*T}~GLB8hvYerX=d-Y&jOh;@D1stEI+6GA1L5(^b#p~Pz{u%!Jflp0ii_jJ zr>4Jtefb+8G95Sws{!)Dvqi9reO*yIWfYEoyr8dc@TEn}uvA-4yXIuXgi`%)||~B+&7e&bkcFu5@bYI(t_=k;o-oXLW0YarB#VpM6uA z3g^Il#U`2sh>CsHmgut+2u|5)60d@No`QvA_8W^@ z)6}P(l-If~l>iH1Y>P$_Oc_x?IZWynf!wr%tAvjvF+#)EXRFz>$_1_pFh_|4f_i3! zZ)Un=Ubxwc`$vs&$)V5|1X{{wRd2)aqzSH$^t zbXsRPxbSD_DZoZG(AK%Mv9Cmx-2XeQp*XjS#d>kcS_*_?AOOw#mx(SleG;o>52*0- zbP`#@!x@Qd$9LIM;6B4p&fggdO!ekYn(o8Z;tD^RC?9%l3RuE#`wNDz-6vEx%)_d{?@(| zEu2N^;$hqFG3{%SJVH;Ji*1__$uzAq(#Kufy~_%$P-)oqhE)R|uY!he@sjss7=p^AG9yDQ5<0F7st=%2U+Ax> z5KwCK4m9YdsHQfN?Z7!)jOwX#cjFt38wMMAs*J#<1Hs2`vBd*8Q~Em22z~UuwZkW? z4Tq!Qh)vqV$cC0tA1eTq7`8ktIv)$Jn*<3Xe};IaaF8hroly(Am~|nNj@}bm12Kq3 z$SQPYWmC;+XC($GGEOAma)?$1Sy zfMZnzFV?_0U= zb0y=dAGphR;gv!hT0&+fev_8Q0bv97jlM%qoXwJu!{bEift!Ch+BzONilE^o8}Tkf zU9MC@gf^|FMMO&v*`k;OKwb`fKytWG;L1dk)UK6rEOQo4)!4n4sJ88~z8qk3s{?-% z^@Zun%}dH7x5#XSsGuuFyg(v=@D5rLaxT2QsqkRpTnAAINw_F-t%8LnK(syDX3NaD z+0an&BT2`ga4i}nr-l>_7CdTSCEP6eSwK1enY!S5x(7!pKI4C7+q(KrN5I}`gF(?% z&xSu%ka9jd95NcLMj7T}vsZ z8GJeKGcu3QrYj+L8O#KM58`qQxI-Gw|y@PoN*V4!&U3e)LE%i zxz2Qq9#E|`;ZyK3Ip;_pB2*{_(jJAFj^)TA&nA%hqIyJmG{LkDO`|beY1unKJpVNP zQ#TQ?ZpGBhpNj$&Va2$1!ef2s18U=yM~xeYj4VX^xV~1Oi}q$G$k{TY6vm%hIt`b~ zGW`b@1oWA!Iiu_UnRKhI;@kMb#9JJ?rlLykFv#$$s!0g3S=yO#Q2smAg!V_%1v<9Jytg!$}@ko;tM-@=_b!CdjZ>YMo9~FI~O9%d#nRc0Y5&N5Uh~nIngMBa;Fmpmtig06= z-w<)#vzIU=Kv+m?qi=0g0HMz_x+m@}m|zjSM_Uz(vBe^Kjlh%T%v`z5(r0I$`qF@0 z*Mu!05NFDTjFHWM0IfUf?+=V*;dA>@RcBM;l=>llRSY@yAhy6tbtc;Fl~%b zV$8st8aXP$8>%da`guyc2u)w+PhViv|C9K9l<=n1Xwyo*VyILu&!a_?T8KQTx|s=( z3+8%xs3U9RR0cRl5)y(K1gwoaeOn=n#OkO^!pHhP3L3V8ZXB;lFUAzA_@iioD*jWp zJV#IaMEkpHL5FPu?bqtC>i*ILrWd0 zF2AgL_gzz66Hm8YZ_2X`SWEHDNH~Q;Y=n{xbC_%iLaX-(D9uIx*m>lQMBAT5;Q-p4 zq1;ac;a^FkVmG$B3L;Fpw0ZNJ;i-(}pijkVCon)sqwz9*3ZXIIlE>0@A5Y+iG5;XI_#NEnS8Cj;=-~>S$8(0hU%^-s z*|{D$(m#aY9JLPw*6xt%YZW89z05~!*CNUgDu8~Jy{2-_%{uIfMP*F4`2cRHX79KJ zg=jE+n0+Bmt{y2PxlNGdm{AyW#p#Ux=#};d;loS#Rr%kLGmYt z-VykD^P}VI0Spzh4i6Y+Q=)o@e;QwhLaAVRiz=*x6amjH& zzQ*!GB}NYz1DIX#!Y--BnQJL6q~v~?kF(0UGN0JYO>7TGXxJFmY3EAth@Ql68uj!+ zwveeuLPDY*a?HEs{7=vYR3>)eDc2~%Ei@KucRFU?!dskZQ0BO5eM^`l5H^g-p73YU z?E<0iB{K!!|B(FETH>e^T?#473)CtY_4Sm=1P8!T)@Jk*KB~l*m&y9|RK&CmJDtbV zIi7+CR&yQ#QIj*}aIx_lT>ln^&ISa9vL6$U#dx zIFGtuBE>L_!)olW_7)Z2ZBU>imP;(+-uxL*S6}`h8@4}s`QOJZTHe%Ro|7f{wkP|X zC1b-y1|FR+OI;i<#i$&B3)~M){LeFpwrMyu*)_HxxhH(OBCI{3#FU z{&&umR0DZ010Us%hhkJ8-ab328-aiB(I-=+vYHe;0nrkzyXoa-~n|1kS}1!mK@$ob8jV|F^u zR4-$egQ(NMa)Yq)YWs)t>8p3?!dby%f_oUB4t_w*_h)MTMjc5lYNJ^iE$1+FpNv(k z*)IZ+$YRG;=J8QJVQE?Iq}TXrMh`Y8U$>Z~`GbLm`8BuPXn0fWn{NeayHQt>MB@<4 z4a^VA5Vvz@--9spbEjiHA>qmDUZ{7}voG~a4N^I_JSlgmjH`SC$ zX3@xo)d8hZ-!mnuRownPy)IyzMIf_ib6UK_pA^|*=}9jM6PeVky#Ce!^T?=#peS>a zmN{GQdyS$Y7>(){S#atXf=y}8E{D~mdr=plsO%z`d`Y@x8|ebI3YihHVNfG7EM7Fm z6LNo)05vs%mijryCJ(Z6gJQO%(ewoHX%XBLJSMiQkWPLjxfcM6QM{JiXHfp$NnP++ z#u+|P#Re4d$P!OVPbph$?RGdu7qjI0jrwlzB`WQOVZzQ;{CgRXW}Wn^&Iek;LJqPf zISh*0<7XX+7>Sx7K6;gQ1oyVc547}OmBpNR_7@jsI3xZBphFWX^n}+id6xu`T|RLQ z7rjSTUGHUva-CZMCG9i!P1~a3(980uSx;d65M%$_IRiF#AZxE)0bA-_CpF}=4(=RQ z;%K~>*LJ^j`y%wtC&UF=B2%Zf+@=G?s=YfFA_vreL|a_pJZt*wALT<@{BYG%CHIn<_Rs5`XVve&I*SrBD-l04n zi${gw-TTRx?X&F9*evj{F^ zvD)u1uQ`GK#D};Z)V@CF!ibG@CV==hpnHn>Q2Xr^man&JzH4pA%TcR|zWaxm^14X$ zM8lRs=~H8jd^m|(0k5n4olN~=|12eZdr`P_tMGVI3Rc-&qK4e3IF-0cqAI9%lKVBE|GY)VR-7>`7=pGMGd_0+l8dM*+#P z=OrM0*cQQDrrV6}J!2eYzG53Egesjl@UxZBCCBm5f{W~4^e~Jbs6@CW!PE3PFH68* z^f2j$$c=SXv*xizgU)f?T?`Cstu^$Rwuz0my$<^*Oq~>z>l4I_V*Pz1(tGDVQbSlU zg44&&iQK6tVmRN$E96i}f$f5S1q`l7aNA^2X)n2X#Rag&jvr_voQ|}>8i_Kyz?j3@ z4n`MDK$uAz|6zA9&dL~K51wYAB+$sIe$m$1O;g=Cem3-dUwhLUm_qZD^<``bMhi|5 zUTB;2Zr)B`NsI>Kd5s$z@8V)G&>Ch_5#b%JMng)8$rkSoOGoGL3jjl*|Jl?h}IoP5Ejhf;~3HT-h6;1m6=3d|@32`hSJ z)xbx|t;;|W?ke`%HD2Bh`M&QPw~(wS6RwBZodv<^LY^PpI;EVAN2rh#N4F7?gCgIx zpBGmmu}rn=CEvaKcSL;0vB0ynOtZMo%rO*L8XAvy#z8{|55P5kgs>XuS%f=+J7(!d zW_K2WvHC_^+w$nxqA!dCB~qY_GMc*Z!o6nZXub04c(3Yrc#!K^!87z)Z)$Xmig1dU z?;T(-S203DoJslm6lMoy(Xm1K6>+D!1(5`Tz$TCJ=xBe9Hf$2U7bO*+JA+^h*Mq$_ zn~Gt@Sb|397fM$xnaUF^2H5bj+8$a?6?>y7iGQ8HG;B{}L`1=T$20?;4wOuKHaQi{ zJCFkWI6F_Tp<#@DJ-8p)7rt~8Eak>a2_~w3)Hj#D&|f?;v>2o!w1H*QnH*T9qBNB~6YS$VVOq;j7TS)oiM^0n#~t*0H8)S@+zjcUgG z`SqQOQyDc8?Fmy%VN#5mezRjFIZK7p*ju$S`m$WkgP=~b(I3RUV8@M_bx97~bbXiO zv{$o?#4ai|*@m$CXgLyF3$oXJee6OH0{8jP!ENmGHeq`YCe%4rRGNJp8hd0>(*cw?pVZ3pOWj1OaZSv|Z4xy~nvsB? zQT44lppFDY<>2ml_9dnbnqiPDWAWn-T0sZs``!EsKxt8lRsw8iBw5DL`&Nu71+NI2 z)Iu42X(?{?n|s}c@k1W@c^MU2$fRHa*k>?>?E3;0L+6c+q8mnxJKDhBp*nO^GRyHAMf^}NO zE~};p&r=1x4@Ir61p-(-p88dj_BytfniM@&sk2Y^Z);|Aj}l$=*>F<>{o*)4GGH;Cb&7yhlf zTDF=~4uvuq%o~-&>QOCP6$ieLqq{)Pj+OXgdiq6m4iSu-U(Tl@B;US=0wZFBQ(?~i z98URca^1c;v8EAeSO(nx)TK5LkYtM>_jBX$A;sC-kuh%d@?9>YR$Fh*dRNJlx&Suy z)B)ZMJ}vm-Bf`t=a(%e(Cw`%$sR6i#%c=m;NTyLf`#BSI~#gbBUFI zVbqtd?n=C3D-k{n)zaGaLmRG(REjbxa>2TS&n>|>eRzh%{T2!wAfwA?Ei|gV3}avj zhO!$lmRmniN}Utf;!$uqjc-DMl8?S|_q$}$sAa9}C}ECkEx+ z(mBp82&KHf6sIJ~*ro7A&ifhOZ8tfaXhPWFS~5_UjBO#i=QLESdB5ERP6P3^xMMQt zD2`o7l&>b?zP^Ph!eaS0gVC7?D`YM)YHT%KU%+apJZz1jPw3uR+!U6%TnF$>8S#C zhpSVPt;#hy#EI0f*-WdsN>?8&#&%^=I++|)MXPCM4tvTkabfBc?X<8a1p|9k5Y3l| z`qxzKik=7j%_{ZPfmj4ILUhmLV9)jTbC}TWpFEYg8SYN3Wod(O^Tv)3VMYJ@bF~{l zvx7x@_azW5r5hlufh!JWqRn&~EmK){7OlG;y4l%at^@G506#Xjj$I|Zpn@JoSRukU zWL22&IjAlwFJ>eEJSZz9pV}=8HIT^hyAgw8y1M4+@Gt_sAtVhO5#%< zARH>iGT^Pohubq>fPJOtAt>P@>9_|qD!SOe)7$QiL{~PDAob)erw29C#~@R3i>>Lz zULkiiuaqpZocb|~FB-Wk2`USlM?^v@OTYa?m_-xLA2XqXHv9Y^SIR4C`SmuHV{%{N`>Zl<@N+ZoS2y zgRUWQ0I3 zv<`f*bKObk!_o|dZ+1@qZRyRB0|iCijVtE@&)3bP*eBfQ>#_7u>yY=e;N2UmiCg`- z9*62N8Di>hoJt`&VNAiF>7RdJ4Z$;!Tsp&xXU4uG%kXc*<<^&mLzn?{ed~OG1^$dfogqM{a%nUV zm_KTgG>7X1+qW!Wa_!xW|Ja9!yW{ewc>WEuQTg21*S=pO25t3!EiA3dDJ!nT9{sQ6 zW&21L$SXvqr0~R{)maii0+9y+yWAJYkl2(q0Pet;l7n4NYo*OAej&5*3DUEFz{L$| znZyaQ$^|c`2qJ=*pEHjKXU$yDM)qR!<_i-UR>d_tNDD^xpgGLS3$e>&kJTo&QtMF*ZyiBh0%Z}Z!z=uaN?azbr#!Y4KID&e=@K{PZ? zQMee?9d&<`NvzZP?r2X%FXBpE(v)DMdCJ*8;ARqFF^h-AQ%5mOxB(aO<9vq+V^Eu;=28zyHzb!fIe0ZeTH;` zxyV(xaDnplvwnOmQYB%u3&i43wm%* z<#_h&u6A;Ymsf;|YSKO3%!7B|<1qeD?8Ng9%re-bAwvn%46u-y=)i^!G*R%tQ?XGT zc%1Sm#@}ym5n2A1?yKsfX{CHGQ}BWM%HYXw0Kn)Rs*ZSS=!joz8i!G>guBy`e?IKO z=Q4HL^Et1e@IqAH4Af!|-EY6CXgs%ab1xT}jnbNDf`qIIa(iEBp5j^y{;8>{fe>SNk$p3ET>?xLNKd_ao?qsCv`Z`540J_wsx)^U>2^<9 zs<;#F?TdHQCkvWPoEX8dARU*x2pZx63*%_dB@x%ROel=Ih;EFB`+2wxsmFgcsjpM% zaCkm-1ALgzVbuRQ_sVTSrVd5?)ZqOazocu#pj|0>*Zb;ACsL}*l)Rs%i)JZ(Hf1}k zHisYMXLDIHDCgWGNcX@ zK5rH$ucu}LrgbJGpR-koJ>R6UxW=AGd02#eC;Qe(eyk4;-Zpehel;a7&6I@zjHtId z>&|hKU?D=KtRW~&{C?}A()MQ$t_87T=eB%~S?}B|Ts~z=g8jpua&a)M3LcICnf)ao zU60@iGnQN6`PGoFB0eGpT7pE{KiR`MU@iDiY#G_lLF^`{8JmW!57-hJ{YW(N=mh*y zuYbSN3HdfIu)`@K0k*3}+$p1v+rn2XAK+nqvkV%9u~hjPRyO!wKrkKK_9%!7`q>4^ zP)7g}XwOE(*8(J3l);WnI3Ea)P zCnw2`{vxC@M@kBUliNplF+-vi1jFE@(KQC_B9}WoAEq>zT^yTLj!(*T-?pLQQTgF! zJY2W-XNA|=rG!<6bCN6r@+U9eYyZD$6RuR^Un)KNA6zb7x0-vfM$koSZRve)u+U6W z-yKlaMJxfkTGObp=LpgmSW49=Q zNnr++2WAGx6cxTY%aLV4L|j^>v? z*!jCh_N81KMP)VSdAj%e9P~qv4EFFL{S?bl(?%fp+UoOIv>!QhQ90AhDT4h1 zQV+%KI*X0weUlHo2V~JpwfeC$I=$>Z*)oGBhDkkOVX@^r!8DChYscRAltt6-CGXa= zB!C>?zK1;-7*1(Px7xSIorLR`JZU=9RlpJnvIVW(M^s2+QzZ|22f$9)9LX(WDEP4* z^lW+1W_)G_7(qla5lJZGJa0BPP)A{9j>y%Om*C`7rzg-scwl6z*-h=|o}+^{JMF6j zEi(b;f$*SUx_qkRIv^G^sH)9Yv!>9?p?z1EhnIbIcb~B$5A?uYejWF7MzlH75P91^ z48o~>qrN?Y$i@@aP5;lKs4QTNq{^%k|NH>RApAn=+>r1`cP+d}FIp1GTdqcWNS$3! zRsh@|s#0wg^m6E#wF5f2)j3D~cFt78i{>u$5!g}UK0SDUmwBjeeaVzjJR7C{!qwiq zB7T?7taqinISceYMUfdaWYEIy(LPZtIZ1DvD7ng2~~m%Wb5lzG6*73Vi%(lZEqUIVpFr{5C%&iDstt2ZOG@W$zcDpik@rVdmp8*$b( z>JMfR0TewGSeRK9OyzCi({IqtQ#9cbW}zY(yS%~nBlgzVm*3N_h`sexMnMFb?58UH zbxgMTS#^Yzu#2Aq(pcZ|Xm85WTD!tt)q9>aL|JUzd|$?LkQohK#~Ns{-U4j_U}P2e zrAtkrF3n<*1GQ20!fT3M2-D6HPp}oGRK*si$6b+%pj?GC**;V2oRpK(yRzc9h8Vo$ z5QbHgif!&Lwtb!!0MXxuqOmx`@PR8)<}OheC`CsA*GmrJA8l#$tEax&M)!{7p3bq* zE^`}BYUHBq9p8=w@PNW3sbZpAI1~xWc6y_G>WhKS7G+-@CMXW@^wnE)o0;pA^^Q6h zKU#+H?LnE}X|Gup)AhUgw4cK7O;l-3`mLVH>30gvMVmJf%T4gub=I>g&csCxY3{Yh zZM*du9i(pl6aMdXq1MyYMOX|G?_loVc+!tI3`=p)lX_8R5=_}s=j4lh8+PYfqzLYY z)G=VbNon&Tx<3S7ldg~zV;MaPU7!}0O$9%B2sb-Iw9rV&@fC4O{um0Q*usW1JtWej zjwCq2fN#jgQGaB*dNNNv)&eMB=nbpRm`TXOxF6erXN@=G#$L~PULK@h`>eWik{Y&) zv)#B*AH+eekw7&cy*r9#1Hb4wB0o>{-y4jHK|2GD5NY6_#@6}>+Q3xdjEn0aS`Ty( zEH}uDWxx1O1bx?1T07b{X=_WePHX_Ln7vZyWxV5Fce-Oh{yhcBH52Bk{e8y(O5j}% zAUh{;ecC%#nK`w-j`Lk{t`B$|k)I=AKWO4A2_m#6xj&_#|JoGmW|_CZ!&Av*q7%dx zuwTRl853DPnU1oRbmI;e-}ZIfVHz2J4;!kIce$W zAaQAMt`2I@hVsq%&wV1NSZ$|Eyz+?51%d~EdyzkS{Ym}!R4PF_a-%Q9=8ET9$*r(H z-G9R?%6isIvW{c!@%obTg5|1oi@cw^YsOgkr(gCza2lv~f5=vJxaFQ^=`p1+ysYl1 zg1Z*O=nNFjM*?k<55Qf>Tm8U#&Jd$fU`h z`k@n>S%Xet7cfUmEs=yIco<|^H8F~1GK^6XCuRh&AdTb#O*fP!Gk?#3KUW-p-7Xw+29oI(TATDVKFutAV85g&KkhN|u*n`c{?>bNxX0C) ziX{OtWi}a+&4@~Si47sZJ_=liZO!K<1P2dasdzWSRHKpjL3#T(_kDrM9;xM-895?# zbLj-iY61vPif`M~M~3MlPBR=R7dg?*9)WlDVG*y2P+EQ<$)u@*SLVEC4O3LrsoQ6N zFBVdU>IRE(Nbnsq68|hz1L0A#^jU$!!khJkfv81^;c4i9un#(Q7hV;R9~O+oXbd+@ D{\"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=194.85.61.76 comment=grani.ru list=FuckRKN +add address=109.70.26.37 comment=grani.ru list=FuckRKN +add address=104.16.4.81 comment=xhamster.com list=FuckRKN +add address=104.16.3.81 comment=xhamster.com list=FuckRKN +add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +add address=188.114.96.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.6.112.6 comment=dou.ua list=FuckRKN +add address=8.47.69.6 comment=dou.ua list=FuckRKN +add address=66.254.114.79 comment=youporn.com list=FuckRKN +add address=185.110.92.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/20260511190002-Diff-Config.rsc b/MikroMaster/history/20260511/20260511190002-Diff-Config.rsc new file mode 100644 index 0000000..68c9681 --- /dev/null +++ b/MikroMaster/history/20260511/20260511190002-Diff-Config.rsc @@ -0,0 +1,20 @@ +4297d4296 +< add address=194.85.61.76 comment=grani.ru list=FuckRKN +4298a4298 +> add address=194.85.61.76 comment=grani.ru list=FuckRKN +4301d4300 +< add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4303c4302 +< add address=172.67.182.196 comment=rutracker.org list=FuckRKN +--- +> add address=188.114.97.1 comment=lostfilm.tv list=FuckRKN +4304a4304 +> add address=172.67.182.196 comment=rutracker.org list=FuckRKN +4306d4305 +< add address=8.6.112.6 comment=dou.ua list=FuckRKN +4307a4307 +> add address=8.6.112.6 comment=dou.ua list=FuckRKN +4309d4308 +< add address=185.110.92.41 comment=pornolab.net list=FuckRKN +4310a4310 +> add address=185.110.92.41 comment=pornolab.net list=FuckRKN -- 2.52.0

8{%(uABK{d{ms@6{k#H#Pi#*VIq*^(3+TDO0sy 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