From 9f32f856bc439521ff76358e592c483752c8ea7e Mon Sep 17 00:00:00 2001 From: vados-dev Date: Thu, 7 May 2026 08:20:17 +0300 Subject: [PATCH] Backup for MikroMaster created successfully at May 07 08:20:17. --- .../20260507/20260507082002-Binary.backup | Bin 0 -> 285940 bytes .../20260507/20260507082002-Config.rsc | 4596 +++++++++++++++++ .../20260507/20260507082002-Diff-Config.rsc | 16 + 3 files changed, 4612 insertions(+) create mode 100644 MikroMaster/20260507/20260507082002-Binary.backup create mode 100644 MikroMaster/20260507/20260507082002-Config.rsc create mode 100644 MikroMaster/history/20260507/20260507082002-Diff-Config.rsc diff --git a/MikroMaster/20260507/20260507082002-Binary.backup b/MikroMaster/20260507/20260507082002-Binary.backup new file mode 100644 index 0000000000000000000000000000000000000000..dab4c214b06c5acc1ac2ad932cbb65fd24e936a4 GIT binary patch literal 285940 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%0D)jwAdl^Ba%|&V00Kb$zi@&5WcVES{8;{; zcj`eP)t+mTtPY@ds+*P@%%RYqcC;|Z15*s-p-R8Ooj6hp9U6y7$Iq*8XX1}`Y22$z zwbt<1*)N=0?8ajW3lAm}x<+Oxb=oB3`lvYpBvl_EAyUrnFl6i)BB7|pPMfIi8j~Qa z4gzGvDVY<;qI}$5w8&$>8$K3X`XT zV=|O??}RVQThs64-)F#3VH1+)A!2f!r!ZQnTd~ zDVMvD1ynp+LXrvIT1JLl{H**|gdrDUI;Wc%y4*fN&e?w;>Pdgc`%uIN0P;KA!K^{d zW^SFL?!6gPR0Z>h;w;%jy`{ev?bGGbv2by#H|D{i{fFG~eD)>4f2cZrQ;ea^@1I3= z@WfBU4b`J!eQMaEAn<<&l_stGoQK#;Vm$mF6vTrWZ|Pd_D${Q%FIyyM+jtJm(Dmik z#Z`%wCKvHEfN#=^wAC1a+|~SToGwdS2>rZ3;QDIPn!i}V_Z!2Po#y}r?@KHfkg{M} zdDFT*;uM`lvQX7f))8*v2R4K$8<)pU6-b%L1ikQo{iuJ&aTj4gye zjE1U+*fPh8O&zxOHZOLr@_KjDRqnnWkl=L5&)mHyd_nqAbTFugJ?%EF&=ejNuv#GR zl2&mqQ`m9bx9U}+V${w^tTxDw3Ysv{BWh`Pl89%nH;n?q03RwEkC zYE4|eb{ShBjpcHRdaGm8bkV0I9}(dsN=ATexBn2@&OS)<5YTukP2huKdbbkEFrJ(0 zm$mX}J)m)f0>ZB15;cUsEN*tJ2inGMD$c9zuNp$q;sUV+8OyXMWI9nv!B)6&*S8Kle&81N&8%gmhgn*LO+ zkIMg%0@RFJxnr2ABMqr@PLJWh&gnH{*Tnr4mxDPp zVbehrBq|~UEj=_i*Df_Lw(CDn2wK#W4H0O4z1KMJptOAE|HztBz zE*LdEw=MRWS+?oIx({eMOiPu^>fi%_;DH${b|IVjR&n({Xv@9WY45v)uvZ|StkQGD z=y|xCb4&mlR61{_y_c>gd^@hd}vI9^DY|g1v9il0*5prC~CmCJ%gcwsfKsLhJ1_Wk@7GWc>dHc0MLW z5<|uWmW|+)v^*`p+r)PvE+df-2-`DfCG5KbGuX(eX{t;z_Vk7x7 zUQx?Nc+Bl$lR$V+djSH-@RZNn0hMJQ9oq8J#`8xwRW(_#TTl({AJD;)w@vb|uA96- z=c5*3$Az-$hldrOa59<|PtpiBpb)DP>YPr(65c&cLCO_eE2a`2xNpa1wWu7qWec&e z$!`EfGPxfI@EYn~pF9HoVKzHf#_wSBYIc4zui;4^fE8`y=y|>Y4_n}1)`kF}L1lH( z5&ze4SU51q>9g32Sp&EC3+$p?nS%Pc2c1FW9$mQP9VhFPA#4(SD^5zM7!Qz=3G=v` z+-@H1TU46diuXC!+px-X_nlU5N=H?07*aR!k&~bO5;8QbtEwAfA)4U_^~OYUC#R-Y zl7vhX7({qNQVk0IK$G7;CTl)%`wCCwg4Fnv$^xA^%c-_xKTe%;nxb+rU{Nk0{%Mp5 zz6~E1_Jip9%veekgb<)xBC9&*i>v0JwL(ZSES+_Ya~TV?!?}+H##V*kIcm3s{nS1N zc?yedyxwFGtsu9;$+0F^5+)NjF+EUYocFg9ro*nbG-+if(QrpMYo@=%<5?>?>k4fz zak-{%yBWRO1h2Pmjr>A&VvmAEcntGSmNo3uN(*ku(?8x zW;Z~_Ben#|KD+%z4V0VkX+H)=@nLG5(QIf!zQ;?X5>D+iKNQe;Ff%xOlyJB6Fifu& z&6|6r!u%B8G+lmYafKwOS>QeZ8EonF>vI#L(&Q^Z=2$%z7`~tu0NcFju1VWNaU4(e z0n&m(RVJi37)<*IdLc>oxQ#VZ3c7{kM*Y};b84_RY7Q`>oz%T2Np(si<|jVbcXqBI z77Z!nJfgM?*2@A6SM>1WsWkzLuiOWWqoO0(T1M99NIKCXL1BWuhqztXez6VLKTnfF+g}0K)SG8!ebfZxGJPW(&?o+xCWudOl(%=80n+s+6S+?kO^D zzPnlyf*hq9AT#Ie&`>0J>#RzwRpIWgsuee2a&%FN;)SL-M0D$7F*no6Edw^=N-5N& zr;O{*`vDdDk!l~Zh#=djwqolh)T4!&`hzaDSWl#yHiE=~+sLR4IiNva>bZFpfL8Sg z&Jhf!&q{o5*z8Yv+EJN!%X4*+mrVPq9k5-^0>I*UW!rv%W`=N{)c@e2ba>JzJGjC^Xh*-@)zL8O{yQ?uSi^XZTysOTKK6 zy5+{a*R~u&WKq|(?EOxAWjE2k=m(_40$Us(xh!w~p|2yI*2`6GM@W;6A6=Y>1#L^1 zJo^vq8kB+D1(c;Dy8%iMWlC^y#FoQJoXC zY7EL|e93p^lp5alfS`?Dt z_zb*o+<(RcN06Z3b6EquEV)2)m-6vGB^{$t@KY>kUz}?n_c8VUuLKG=Hm&Sz{f-z}Q?OL#ikE?f+jf8x)a+%wTQw67*dtx)sC5>d7gf zijBL=f3wvRN1&t9R6@}s7coe-j-9=pZBG19=L1W^3;UvIY+%|4Lv$(-EShXmai_COQYh?#*j?;30~RfJKDS z`hv=BO17q8Ww0w>c@zB9CW5DDM0drRaX%_9iWUb`Vz+K45b35*X}9S5A)(3D9&ujEc}uqr`*L33nls8-rx$2kpC#9RvZz^0xz@R$f3!AdtJ)Vf?&;w zqFHG8{#=EuNZZTlURi_02gp*& z6L}*ZMEgZUEZVy2P2aeDg2F5-;_r`Tu@{r3;X}v4`TgvBvPa;CD4PDdxSjhD;DnP# z=9#qfsv9SkeXf%<70PNATJJDVC^vyGP(}Eyw|MJW`u5Bfe(R{b?%=09X1kkW{%^(f zxGPe*k%b|5sXGe%+xvDWsh_m(UIVIATCVZZyl1GG2I3YF-(0!7M}W zoD~ttN&0SCH_3R(@SQM|r$Hsqw;P;!z+LTQZ&Up}7Nr$}7R-;)5RBT8s$2&w8DwDOos+BqX_LY+5iR{l&7zQ zqv2f|rm7Xk0gnf9Y^2ciEeuIK%?aO2`YVW_vVBSawakU4qaa>gwKHnjbkhKAnailQ zk!5h}h4;BeYem$5B?UTECqv<*ZeMuFEEdYwxuOLZeXQ7&hNw)5vF%95ej?x5$@1}u z2t?AoMrriRhP?%$SD9FgOxO!WdIlY>%*2y1QFPU%UhP1+F#}iuVqWDnbVF~dwM?42 zDH_8UuL*iFs}E7?Mn#uhF@*uDfUe3n_N(oe>+b^1>V3!^1+?h1vGd zjpZ@KLr#1C&=53N=84Mcr!QAeyQ7h5mP5I*unjr@NC&l}0jLH)$j2@W`60`e0Hjon z`%*tM36V#clY|6xtTgx{hA>-l-~w3SME5J2PCpr0ac9REdE|EDR(;rT*x|8|K9`_rN?0lTP7fqGSx+Gh)(495r%W6YK076U^Br2l4sR&dGE6M+(Lb?o*t!u z-1o2fHWS%x{2I(RudsSf7KF0EG=!p^3EQLSeS~Ez&g4XgSZrgKCmlHU1?ecPv!XK` zFl5+fR#7ni1-ki+eE2Z(KhI?KExa5(aW=|wnw&H`D=YB@t7`82za@+mE_3-QOP1`? zETS!*$78@udm0gas0|-k)*^5AHR^Jb!O(=Yr$yQHW6=M=tOA1HcDLZZjtpNW$)vh5 zuG~M-Dl_;$%O3$lY2&yZbQSL|WARN!+8UsX5BPTb5OPRoT`hVy-28)pj9m+)U)yOu z+4j$*`}fhQnmww$`5Z++njEcPlrP=9#FUC|3WrNYWqP%-64igucb;sOv%Q#kDk;?f z!}!gh-me2M?CTk~AQb6G&%%zG)`Ny_@?q$}Tv2s-4k0CK3IZB;=Bap{+r5fXR_Onx zPLaz~Y0MX$jN8;0%J%D%!&mbIO{8t5Z8JapFuMr6ra;5y6-sRB&QE?j4*H!w$#tpS zhWqr-;_^OD6RU7z=eS5}S52kBIwSOq4#A)U%SLuoER=eH@EWd+ zj~iEgFhU;1;I4nc)2f-gV)$zmn*+4SjKr9Li9_1;)rP4bw8K{&5D{GD7Pq{x@e;yl z;#3=dizkegufD=Uiey4KObaau8CnqnrqzTVVE|#?yUQ&cOCTnjW=ViH5^_zXvK571 zPlyfK0AlkaDUO)D)nGa76CJ*SBwCQT340OJA~*zv*4aqyjsyl1>!1J}7et zI#5d2%9H;RjBO+bklA3!N1{Xe_r{MGgxUrHp5`J0Qej)o7did+J)~)&X(~I{lJ#6OxrK zbiM_2!Yl<(>*;PrFDH(tJ<=ZQegP{?N$#iLa4$1k*1P9KJrdrnQE~gfo8x#}n2j5Y zsm`Ry*VlHb{$0sA^vXG_uMwnVf4tcaXY&LxP!|p5?{{K2mvM>Hjngdfl(3P#i*v4g zB{M66Cf#jm$IX60S<#4TL>hC{(+wGMi41Rb*!&185*A}MGpN1WmQ80=-W)Jz>rnl` zk461Y8)N+9t$+F^AI}A#8Dzh9d(Tp-x(sMA%Y&K6{p*mJ{mQqtAqz`U|E#^K1a1ls zSfE$vp_T8ZlqAboP=QlP#cU8HN>F@_OXZw2Ud)PYCCMMZ0$WU&;1DJXY`eM{+qCuZ{+ZiUeiZOI~-#Y z^9{D}CmY-B++2Zl8SOUTlBrlL8z7sW#e>DGHV!C<8A0PH!Pzf)xjT}-h>jxX9P*}s z@iO-wR2|DEOCCfphXc>ZQb3@yA+vQ5v;@w;KR(jlnnm;5X)imQMnafUSoXqGjRP&o z>z$L}q}_62AFD0Sj8|SA2@(mw1|2?^NyJ+>9ae<|{Z?P*D-|JxTDg1DLX*5hb}4GV zgFh$Hc3)5OgQP!KX-{D-@Y(~yY{Pnq7?$*s7sTzlCFG4x7+y0l!NT}RcP~c_t##3A zG%3nwWgKG83VBEa4nN2~!SIPfu8mg?)jnp^M_3!9&8bJyj!yXznwf+r$*Io@&UR5D zNNsdUneKH?Y@@AtD&khR=0I94SfS&WG;|M3^&$(d+%U%?yiDkO_QHB}Mx&I=?vp!d-`h_~IgK|JAyoz<#m| z>&&J5bqJ<(Dyk!;!k_@(Bu<+hisbxoBqp)(l=GIS)>(C7u`6@3nGpe5q{f7S*48pj zJNEM5B2zKOUe%!oA){O+-6JxWQRg&GWzHcHLI0^3o?dCd*J9Bhdz~7Iv(1b(O1|jY zw>g)U2UHU>c!Ux9k-qC=QuA66T25l{9qY&xaEVddv+r8pXZapfbeR!LHN*ck7tK?x>zCxcAh_xPusSbMJ9FDYGH9<{hJ zC++ngR!u{5z^#|lIT=hQ8IN*Iv?TRHUu)J-Y|g&$z#?u-@VYzmk?t6;K?#5+B>ny80AkRR$muMXtrJ)D-KfG4&$Wc z$Jy#hF4=1f@G#MUzB+XC1kJ}7Y71M>ul(>$zNgg=n{$sRczEF zW}tcevT*0(YaDykIIl61Iay7D9Y@%+H$r*hEi!%8yjuupv6O1^^*VrK)`r|*tbPe{ zuE#-eA-(FTA}OiP7ZH`@Bz%x1;*~q7B*kk0|7ZQMo#|0GEuKqIaLT*ncnt3b1MQo8 zO&I`}^f^-U{GLaELvo|~zL`W$#EgV(?i3#`58*s;;JtutI>;%cEm-Zm=a`BxFH zzw?$zk6k}G8`_Xi5hiG)PNrux_B2ajcbvB5b4z~Gc zk;ye#^82h}Tm@Z5SdIt%lLnjUx&!k{B3*^2DePd=T#El{zSQ;i-uGovrAb%6aLb5EDhzKLy!D5?~1ybzf)R z{7QH7{}9Ofv4Vl_1v&VW##ffFT3vJn_+)T{xzHMyLd8>1pbfRpN!H5u?CTPqG_`Bx zM_|$#HhBZ8Q2lsd=9Bnjw!P13omamvRFQ?9m}OTwi19J^>`bG&ldNg-d^(@)r2<;6Zi*LcgF zs=@tL8dE*=eNC6&gBxhkV-Eds zu?*|O>2L%G8;#($7^ORxx6Q!H&6UGDTUYuy#Q7?f)|w^c!?u-Uh6lt%WJQ-8K<7%Y zKGOC}R4YrEj=E(`%ClYmC4rE-<#^v`OH}(pyjq*~Msc__v$Q!2%CiIOUl1=%8VLnV z9wm{-y5J%kRuP*!(WsiGfy0Fnscm_VsEGA)hfS-!s9AQS3F8YHks}ObIE9QT;j~bT zT!%)A7CVr=W@ePdoZOvi7BX<09nJnGm;?>`lb@n({FQ`9xe)yKjL2l(mGM4&<&2I^ zoJT9P0DXYrQ2>z@qUh|bS?q&j&JYY3bx!E^$Its_N*e61ATf02!{+zKJEz`#sNzv` z9D@kY#M~If?Nxn!#tb6LN{Kxvy6S>LY3#N#BJD0`$-_av&wkl$>!HgOcXcL=6%3h_-cy!O%ULi>P#%<`>jo+c0fTDsbvX6aio?c7vhQ2<_q9@UQhLiH$ z%**X)GKOfF6Uki_PB8>NjtX!N=T<;u<;p+-S8yBdKwPnAFr(>UB0)nIgK4r$_w0qV zV!bwQMF2*9uC@q%!fXm0a*lfvf>(h7pivhxA@^KdL7fcal$hD$Wu}5$*@~42D}N9< zq#6o~KIdIEESUbf3Mv}E#%94eAwlmd^k_Tsl_u&hH?+cY2PSfkUMK-F`U0hjGj!+G z7E4@`GI?O`r-5>?nP?gXQ42km37NzixtVNNf<>lU!bSa~uovi8!yRxR$W47PeGq-% zkK-Zb+{@>ZCUYBju$&j_;=UGwz%{Tz(l9Us9Yiah&ay(L4<)juu?Lb?W^5)D4r3Ga z4I!l4D*P;>mL5kZSx--XbIJ3%KnWw`)aoYZSPSW-@7faythZFVB(YG97l($@3=LkR z`bOPYgBorc_JD+9w-&pa(8*#({k~f>XQ_HnK%f)2{n&we%>*dboq`t*27#&{m3`4+ zAl_M@G$Aeh=et+9@&!gV)sMxIp*54UygWJ?7ACq~H|8y&&oQG%pxXGT$O1@mwZ_i9}sGJUyiV*e@zZcW21-5c0VdW-xJr!vW z7Y-_{|8uA4yRc5ht}vYH=TADUz`-{?T!oJCGTXboCJNq3lRVa)ldN`DVQgf!EJ>~At>x3A`E2( zwuTm@g47sVDC7lzZEAPOdO@9DUBqmVFUmIJnqmDr4xplds4S0RgFpXuG;H~xzkkd# zu`lR&=)J}DvcbTl8dp??LcbE&9LYADLGY3+e-6%$qx2DUjPFoYczSVtV;ru_*D*q{ zM=WwQMJ=_7sT%i<2=Z2M@kor`j#|uV9LvHbxr(MH)!+Vy4oUB8oy8#^o@E+J>-UF* z8{u2(5X0p+$O)_m7>&RGpRSv11eVy7bV3ReG;T{eXv{7e+g%Y5OvkXy;^rj(KK;=Q zS4j4XXnj-bVPrlltnm8JAJ-)Wdi#dDF=J9^KB1XC*`NuXfZ)5Xpe)k#-;LpDrB zY{NrOPG1%@x~_6CZunUgde}19`xWfrwdHP~eB)FR$l-h5P6!4Ok}-%*JW=d~*&s=Yr~o`XFQ zd3KIuF1Kn{jyQz|M4ITs?Vt)U-nvpqBacTn3`dfqyXcARnVim&hdpuG^_ws1A({_GWD)bOoD?_aAeCw% zIxSGME8UB4Z%khP3m41&%CVW*L5 zQ5w*twS_Jg4RN?|mr`f&$;IYiPZm~^*8M|T)+xy728kvKd`qPw9r3V``rZ` z2rmvt^Gpf9jZWK|h)<&K6(#f|6R9 zCGJ#?DcwAKoG_QTxCSZalwFrbju~8?a!74gSH9RFoW4y15G2Tv-OkvA43|xqogf*i zYhFNZ*bw+SilF+8K-piPZqlv+BQj(p6c-CJ=GAh$EvWyntJSs7v!PJUaTD43_i3W_ zp+%xiY!=i+qLcEFwU`BYQvy(bJV|)p4w`cmj9!ahnu>bmfxln3y1~el2SIU3er5&9EGH} zZC_R@b#z`T6iiRr;g$xxa=kQJd}VMyZ?L0Kb_5JE9G%H0^&|zBFYY6>w%n+DC* zvHJEYmXoYiNH09fLaPM!vOh=qh!!DQGqMj5A?BzQOChdN6Z?KF5ON=U^MZl|*bhYQ zP&{hY*a0~H$e&S|S@KhYP52Qv$byaaFH~~2r3p?>gZqU-`k4P=7yLwDb-z5-3<2{Q z5R6G8@JGZ@n{@~WWnefo?sA&HZ1{mrR z#)R)2yx-SIQyX)v>5gt>s*q6#mT(svd0;xZs9+Eg)UA5gi(>CPpL0yuDK~_&=LhD+ zRlA*}h|6LVRSEA8I^z2zRgW@|9$?$Et__8p6dYzVp+MifIE(XB$(FIxgBFPNP| z*!2CN+^dBp0X%=2u&>zfMi=)#13oLeCi;0a^`#9Qnet<^e$;gVcYQH(C&D->XuL`h zK=?@K!8bau4f7gik)QslGVjiN6c|ymyK4}*cVW5sfHA<~+Gfp?iY?8-z#tqqV)}pT za~C9j@<`jz?uMLYrbMO)<^4@x?}Xq)${*+dU=@Z-E!AKh{G<56tDQa{=68h^EMLmX z-dtN$LZ*cBDD*WNrg)B@_e@I#kM=?)95EJ<6PR_GW%jhm2WhoV$7MIrQP19B+&6?G zOx`c{Xe-DSAMV(}KU#El$9{O6X5PeHi5QC>TDrfk&Ip-4hZTBn+sL9+L%G3vI!=Q< z$>~@XBd%ld_|q=l`cD+bx#S~+<$j8 zHHX4OUjBzpK({8==>7`-E+kqeB`vx7F?_y|%|rp>I(3!W;49S4?k1XL^yr*Y{0?1o_*VrA9AW7gyd~|#u3kadyOM>Y8$Y2Th;Aznz@-p`7PCni zs0=c1{3+CVCyhI@u+%BIXk0ju3Xf=+Lve*L>mGMm^QR^Fr~2J&O`6V$vj%U9qrrq9 zJx{Zq)_6l8ULlDEJvq3z;XSAja@#5J9+jP5pBdoL zXj3RQfa^Yn5;qJWt&O)k(mt=p;4^TiREVJ;h;SUqU>rU6=?FHAuJl*Ip9Rsg=~ZZn zlvnh3<~b;hPGdDgB5b`D9;C1uidOZ}l~I(s``WWP8h}#A8Ei4k1p3N<+Z1KcVtKvv zELT+o?CzGuH{WCdnh%(XXCnX_(qnaICG8%+ip-lO1>``qh#miDi4-Pj_189`fPY)L z4F?&oPLd)qeIrnD?(na>D)%I3@+xWPJNNbvXk54GH8_faEfji2H+E4ZGfIyQQJ6Ei zmWNTC&eTZ!L|V}LFAYf0{b6!Lp@8L!&Fro21~IrT<-JUXia5Hd2YVWx-=fc^4=kZr9HPs!*7%ZzT8>)_;x*eg{oa+@N)04`fzR{py&!Qm z2n*o1isGQ=^b{Xi(8{yz-G_(ZyyjR*XOtR}R7Z@o2SfKz`^!#$?fH9F{Nm?L=LAf(Y1-N*Ht`I}ru`6f6eMH&FZ1pP z`&mbvsd=njK!Th-v3zbCHMG2IY= zVw!&nN8}mGBxexSzAKXW1AVe%-inpzT)=)eIlux3MhuF9dAVy|i=uZz|7Z!u<=o1d zUU5Gt2-Adj_a@+Dtc@uXe6y3zfb?`>H%ENGbsc)#4q;a*1BRwLdMz&A@^jisV(OWs zuJRpC9#~hfK4mQJoJ_V$qiaN5smanFZgv}j=;nmuk`Zp}NHh+#IHKd>JY|JJI=WH$`nPmR$RI=)}3R3qxc) z>`A~1IqT>KX>tQznX$W^c*Y4wQnuiJnT&c9k3juN$R-oX*$jETOWWJ z*wbP})0&QP(K-n)`ARXjvFg6>bh9L{Ls{SySPZgelReS9rwhv`I6*b<%fXRc+>tL- zMtea|Ny5@&jfsFh@{4OudULQ$4&aRBdD%~1Lhfj}R~iTT;Fh~697#XG5Ql|cDN_<> zFS)y1;TD1~^Vp@$;5?3_LcBe#)1KmrVo0nYo+o>WaqMHVhop2?Ef$Nb6lV#NcI>An z+~_Zfw$&HA0dyUDGP#KerYbX7Z&^$`VV7`zls{dvj>O`bATYeTPP#f5(wJrI^vpp`V3TqK zjYoOX4sc&Jy0`xpT^$plFj_irt9Rkekrb8Oxt_JgBHD)X9VD2}1=rI@~s=jt?X;Udnq9W2?sll5FKUIShO%vfM=l~%rVTI>v zn3N?YVnaE%j>&eHGEqJ0i?Xnj1v}sJ2g`-5=CCX>Z@m2jBo{(w(XU7Gx%7tsQicXD z2Zou`#j-ePX?M5)VThk9h$wqTrNpND6ew~0f8lGDat6r+t?58^j7d7=t$i6A#HsQX z+qQPA%e@-Df9HFfB9UJT>-L$gla%KPSBz}19c$p(|H9#*<8DCDYNEzeF7{~a0njj8 z^93WbBQ9CzjlCL6^ki+rq=cT#41aOSlg49kB)Sy$AYyA&>e$TSzz zEe7l5!e<^k9+26xb5A>uzY7SU8JWR^mUja|$aG9k7kr7?HC4k`i0e zF!Ek#lL5*3;5I4k){gWEId9Z*gyzohpOb@@#Ona8ey0F#gO-F6usQd{J~u|{^?DuA zIqzw(hqs@MB8Qcpj&Xb&HR?$Lj&zs;NVl( z!BNUUL|H$>e-BXQp{nFD1*Z{o9Km>5J0Nx4=}zylad_w}V8ofv<;TUBk)!+3K!hmE zjd>(<S z<@zB{);Nx^p33`x*i%LfjvCgQ-$N9Iry&R=n9 z$#yRt&ZagNGAwFu1Y%5A_}x1eLF`u_oI5H0GH5A49gcC207P0Mwu^mUv#bYKXTb?G zlVi`71$~QAjzKxa*oqtb1asiRytgL%#Eg;Uq3}z{s}TDcytn8EY}5Wt&xuINa$cEM z7ZJPJG69cyjh!2^Yp0T<5>ByodE?Z3FMAPGU!?QpM)lsTMjb4OdC`Hge6_kPcSi(F z+I*n(5p`o)o+h)4yM7#tgvc%-Q_AG8NQGw{^u z?i-NO+xEnV^{43`>h^Wq7d`f()2N=8VQATCqFPhTUx& zv;-m0;&@^U28QUi)X-0I?`p+$9Wbk}kvCL*IhR-P-(r+r$_OX{23F`3mmq=mu=H#G z?Ta*y^eFRDKERl7P@Qz$uY%5d2&&}25*Vo5332~%!&~N_x_NC$3+9i;?k$l9_!MGT zqYoFBAXeY5=~B@=JftlHmO$bUP=G=z<^Kh&fW|y+h9dVcjwArL8L0`$Z{;t6ox2!8 z>+XGzzTU%^)o-{{p@PGP++wd6t}N~2>jcfmhbt6iM=|Rg6a@OCK=kI;_mn5!(BZbP z6cQz7ufwX-*kacg6Ziz);vCqB!=0(jU7=Ea>nHcIf-w1qV>=_XkJ5~i=8WBJOe>it z;v^%##jQho1=(%!^gtC;-EpC3AgqYIMSFx1Ttc?59;pj^McS_Yquc1SlDthccIm@( zF#2UW={t&>PhP%#HC?NwmpJ3klX5m{72#cc?4fXKESlf`GWjnmHoUW%;ckbMDL%NB zZ4;+&g~x}ZW__}VF3@eg;N`dWNG}FG+J~2t+rpa+i@`1l%%3XYPh+fOf-K254MlQW z0Y&?asUS)0M33j1mR*Yk>O@IE#Y+ORFY8sy_`vu9Ktdc3PFF+@oYj#*SLI*PgrzG8 zA}Y#5=%iQ0XzdGK)74C##F4%&S6zi5-6pE0ij(LaYRVa@n{O1ZF(mlRR;0FHe1N=eXaUNYKlH7 zFrshD)31AJtb%3V!aHgQ5_VRz1MjdvtZH5aRF{;uzfc@M&!tm{1VNq%8etj0yrIUO z-bU1BP%(z9`sSdv6{8haRxw=!q)TxrZ$xKE8Ned*A|k+Kc3;dv#iO0*-7w-iTU%L* z)&tK`Gsn~g!AEXhIa4?H=T~@co&mif$aM99fCVAG5yHE6gPmA1FLhs%ex!mh&T+!Y6@J&S%V8@{G{E#y*7fEkg5c@s7I)YEBxLq4+JfW+u)v z_(Q@5u>XTBGu~TM=<{+CrzB6uY1sp~{Z7IeRVd?0{;hz*Ro6T82qb6YTD3eK9|lI# z*DeX-%GwRlWHa#{su*jB1|)y*CnEj4La%P6Gm+5;a*8^fq-TpIevI`{aUP&T0$Igg zdOfXbqsIlCWzwfQx9SeW&LQ(CWHGp`@Q&o&{z%VPzcsmcSVwsxb8jE@M#yjW7|p6D zeV_`T_bYaZ7&s&)J^JrC3_n&sho^Hw-buKqjRuzG&YN5e5YxZzt~4KUx$KM;3E=lM z{Vbq(&CSGU>{D-;q|Y4$H1_+$imDjYh!*I*&>7iSG4-k%UGiV_&hD3L=aET?Hq@}RP-+%!25%I8{T?l@Mm7t87Knb#_o7!Z{7O#i2fYzfT1A#Jiyixl!b`k2 znJlDVN{FY}^r-sgj&~EWCZ@*EFsGuDvaek$^#benZoZI}kkIi6> zLU5{^CZ9ilcolBle)s`xZJ8YU1!xisTE!8Y!u$OhPgJQSAd0&iO=gEu12T9lNGLX% zYDN0zdF%ll33%-74?~kzh%@&4JoQ!laZ5r0-k`GH<|&V1G!|hAXU{XQHh>Jaci@oL z`s@ZDCoVa=GnIs6Gch!n-2;WS;Q=``Vud-KcCGQM9ySkf^$>WTo9CMh2an!Nu=8A$ zq|c>)%D(Cy$n{<7NQx;vv}7OdYb7vE9W;Q*!gv%_*u{#DWZ@t1N>@Tj;T z_}dXS#K{}Rk%zFuZH@6hX&Mzvc;tCvN+)%4_ugV$D(PYpjdsU~Y@_61S~#(JQwU zvg0`A=YhlIkh>7ojWNDaur9O8fpIg}Y0u0=(~_R|a?&U=HeU}xUu`=bCIf2?n7o&O z;Wenq85;+fg?g5_8W=@t%}-swxJ;Efjz`LtrG!U9Gcn!y&fmD&RFK*1lvKvNtApZ3 zbjZf@%4Urf0rse_A^UW*H3us*<^81bq3{KKXgZD1HccCwmY48B2`CqOdPd5JU_dJ2 zJ<1C}W4-iRy`*T1LZt#>_}$`1-6;qjq*OQ!9y>6We*K5V3}3zf7bc%bkHsEAxlgpE zUoe?X3y{HKpVCKEeoqSxw>%VtV()ux8(Utxs~j(;+a8>V89n-=C}Qv6H!`@c^&cQb zhpk~@ZxgCfgK8v>!MVq+7)O$}uM4{mDU(`*2bO{}CcVsFN--6$g_W@=KNcoRBas-Q zA<0zX!XUuv#DcSNxk)5!mxue2zQ?=!|n(O`k-^EtVkaOaipxirT6M_(D z+S_QP>jF)LM#%b)SU9OG*-Dh82!ZTCA!T66PmtwgZz^W|nSyF^bT5m2&$RL7o$75j z?8SqAO3T1s#kSfP=qGmA9AR-9g>IB9hlA#7=+th20Oe!ZbzZ4hWDz_nbB;PLK0*LW zCIh}=vIVFgLHW`-SW2-m4tYj(!h+HM5Hx36YUE@cY4oY8fD-EU=rqVLT(hyHdO(lA zf;#U>_8FOjt`o#1VKsrvXfEod(Xwy9_o{Bs6U(H(&YBR9C%LjZ*` zlwUSOPuXcKA@Jdf!W!af)JE_I|K5B{l9XG{ZL<3pCnnIOa=q+EICpOl)X%~TeFntEn4hUVpXRVA88@?Cm7i2 za&3mRQ`L%`P1HF>bGqtm{W7;91e^+bK@(C93VQkD!#5bRzdaQqeqUbE3Xi#HcsUj*Y%CF?7ClBx`(sO&@bKeyb`j@+PNE@D{ zI}MBR=^9e(=trK!NXjP%cDOzg+kAY)E_+NE2Nz2{Q^{n$KZf)!G_8 zF5b)a!GI54BuI5bdjme?h%}iubnM3QY>WxTN&)x~z59PB&;EOsuU^%nDwZalJ-P8~c0?@W&@AAfyA$OM&ZMbgFE;{3%9E?4+qCAm@uDAql>W>k4x=r?bh z>M*3L_xYWPgM0kjvl1;lh^~q0L4q8^{%#jUl3`|z?Gv=p4LfAUwo_Fwc4ao?8GeIh z%O{WujgIExJD&mwGCE3H4Pz`ZhBAyucm+p-DhsP4hK{{e4q%fq$RdP|O+LKZagdDc z71kM6wh96di(f_8;NGOjPn@U?eJPJop&eS|{R-xC*gSbN7iJH_$n_}z$3KBa&D*Lm zs>zB^DN?-ZyGsiz0zLnFGlgi&qQ964_~2%THbbS$c{_J`m*oib?%n(aP)aVe$=ke3 z#OsnAojo}y4~PegcvWE+Sh0vB?$rC=Zk1`yns4mVEv?em7B20Tjrr0<+w|(>y`&s8 zX0!J9!Vi}q7Hm`5xE!vs^21#I_FJSZci+Lb*GN&r``k4%U!CT_r!yvHHF6EhED0oH zIPu2M;~P=f&M&i0ZsMn#2fqnY4D7EkVpr)zFchsBg>;OE|6nJjRLoXo3ylBl|hKK?^M0iK1YY zi3~lbcFCfFINg{8OV4=77lnVu#IW8q6%J5Kr>+N=k=}uyue+?3{wp`Oss|6}YCnZq zvdC(O+bf@*dU0bRf`jFA0^`5yKi*=8U%% zZ6@0n*_?KbopA$sRi2>6C@x(TW6S=dmQ~M;2CTQ=bwU(ZU_07GdhMQ=c#7ME;AW4J zY_#*EO@?j|{%J@tHO6!8wmJju&eVk}nD*!Kqg7nVk30P`->Wd##l1oq1KYUGD*-g| z<-}_T@^Z$)H!;KxIhnr~grS~Zx0E9Zre;WD;XDmtOqCg!EW@E`+;qKu5f@4*7Y&Yw zeKdiVmMHIIPasYMgH=#L41ID%rmR$`aa!Nc!f*kDh~HC>Y(yvgr>)>Cq6kOs3z+fL z`xitG;hj`c;T~=JHPRv_eu1p0scvP=FF-%gb&^Rlt22Ri2W&R89eqG98%0=(A>6;a z4_bq-55?_IxblB1J*!TNBytYFDYPo^R~H5PAwmd<9EPCS(19IJH_Su4wp&LVPpNdT zA%s8R95l6DP&-V_gR%M|nSu&cGs6TMCjW8bG+*gq7>J-|F8AZ`>%gke6L@HDph!sG zz|3p459T44QR5DH1MrUbI^*NGJ=H%nKAVQ}$6qYCpJ&R$R1S^_ZCUF;G)fv_P2zdu z+V4r}!gSQsjcZR`$sj*dUjdO?ZG#)u&6&sEnimufIWX@K^5lwPs$(796e6req@o

PZ&FB_!X^S#4^%)I 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%0ArXeIw**Pa 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%0A1yAspQT{eTWk?Rq!r%c6N(cyl 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%0D{Aw(b92(bxOT8r55iT{$$L@jq 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 jli!8zB3aZ&Jn~X6V_Ivy7LI|;zJ\"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 +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 +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,userman,\ + openflow,tr069,dot1x,www,api,reverse-proxy" crl-download=yes crl-store=\ + system crl-use=yes +/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 +set udp-timeout=10s +/ip neighbor discovery-settings +set discover-interface-list=LAN +/ip settings +set max-neighbor-entries=8192 secure-redirects=no +/ipv6 settings +set allow-fast-path=no disable-ipv6=yes disable-link-local-address=yes \ + forward=no max-neighbor-entries=8192 +/interface detect-internet +set detect-interface-list=WAN internet-interface-list=WAN lan-interface-list=\ + LAN wan-interface-list=WAN +/interface l2tp-server server +set authentication=mschap2 use-ipsec=yes +/interface list member +add interface="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 client-allowed-address=0.0.0.0/0 \ + endpoint-address=89.110.101.17 endpoint-port=29185 interface=WG name=\ + MikroVados persistent-keepalive=10s public-key=\ + "64Y25EUZQQt8EIeAJYD8qWt+te8qvGEepnswdBgmzlY=" +/interface wireless cap +set bridge=Bridge-LAN caps-man-addresses=10.30.30.10 \ + caps-man-certificate-common-names=CAPsMAN-51B25E507D07 certificate=\ + CAP-488F5A8E1ABC discovery-interfaces=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 +/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=10.30.30.33 name=ros.vados.ru type=A +add address=10.30.30.95 name=vados-nuc type=A +add address=10.30.30.33 name=amster-nuc type=A +add address=10.30.30.33 comment=AMSTER name=amster.vados.ru type=A +add address=10.30.30.33 name=amster type=A +add address=10.30.30.33 name=amster-reg type=A +add address=10.30.30.33 name=mng.vados.ru type=A +add address=10.30.30.33 name=mgr.vados.ru type=A +add address=10.30.30.33 name=prt.vados.ru type=A +add address=10.30.30.33 name=reg.vados.ru type=A +add address=10.30.30.33 match-subdomain=yes name=mikrots.vados.ru type=A +add address=10.30.30.33 name=oxidized.vados.ru type=A +add address=8.8.4.4 comment="Google-dns IPv4 2" name=dns.google type=A +add address=8.8.8.8 comment="Google-dns IPv4 1" name=dns.google type=A +add address=10.30.30.30 comment=MILLER name=miller.vados.ru type=A +add address=10.30.30.30 name=MILLER-LEN type=A +add address=10.30.30.30 name=miller type=A +add address=1.0.0.1 comment="CloudFlare-doh IPv4 2" 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!!!! disabled=yes list=NoWG +add address=89.110.101.17 list=VPN-Server +add address=80.85.244.9 list=TRUSTED +add address=8.8.8.8 list=TRUSTED +add address=8.8.4.4 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 +/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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=tcp +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="ether1 - Unet" 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="ether1 - Unet" protocol=\ + udp +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="ether1 - Unet" protocol=\ + udp src-address=!10.30.30.0/24 +add action=accept chain=input comment=\ + "accept NTP clients on local area network" dst-port=123 in-interface=\ + Bridge-LAN in-interface-list=LAN protocol=udp +add action=fasttrack-connection chain=forward comment=\ + "FastTrack for non-VPN connections" connection-mark=!VPN_No_FastTrack \ + connection-state=established,related,new +add action=accept chain=input comment="accept WireGuard" dst-port=13231 \ + in-interface="ether1 - Unet" protocol=udp src-address-list=VPN-Server +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=fasttrack-connection chain=forward comment="defconf: fasttrack" \ + connection-state=established,related,new disabled=yes routing-mark=\ + !To-VPN +add action=accept chain=input comment=\ + "defconf: accept established,related,untracked" connection-state=\ + established,related,untracked +add action=drop chain=input comment="defconf: drop invalid" connection-state=\ + invalid +add action=accept chain=input comment="defconf: accept ICMP" disabled=yes \ + protocol=icmp +add action=accept chain=input comment=\ + "defconf: accept to local loopback (for CAPsMAN)" disabled=yes \ + dst-address=127.0.0.1 +add action=accept chain=output disabled=yes src-address=127.0.0.1 +add action=accept chain=forward comment="defconf: accept in ipsec policy" \ + ipsec-policy=in,ipsec +add action=accept chain=forward comment="defconf: accept out ipsec policy" \ + ipsec-policy=out,ipsec +add action=accept chain=forward comment=\ + "defconf: accept established,related, untracked" connection-state=\ + established,related,untracked +add action=drop chain=forward comment="defconf: drop invalid" \ + connection-state=invalid +add action=drop chain=forward comment=\ + "defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \ + connection-state=new in-interface="ether1 - Unet" +add action=accept chain=input connection-state=established disabled=yes +add action=accept chain=input connection-state=related disabled=yes +add action=drop chain=input disabled=yes in-interface-list=!LAN +add action=drop chain=forward comment=\ + "Filter Rule to block FB address LIST : )" disabled=yes dst-address-list=\ + facebook +add action=drop chain=forward comment=\ + "Filter Rule to block YOUTUBE address LIST : )" disabled=yes \ + dst-address-list=YouTube +/ip firewall mangle +add action=mark-connection chain=prerouting comment=\ + "Mark VPN connections to exclude from FastTrack" in-interface=WG \ + log-prefix=Mark-VPN-FT new-connection-mark=VPN_No_FastTrack +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 \ + passthrough=no src-address=10.30.30.0/24 +add action=mark-routing chain=prerouting comment=Instagram dst-address-list=\ + Instagram 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=Twitter dst-address-list=\ + Twitter 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=YouTube dst-address-list=\ + YouTube 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=facebook dst-address-list=\ + facebook 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="VDSIna for All sites" \ + dst-address=!10.30.30.0/24 log-prefix=VPN-all new-routing-mark=To-VPN \ + passthrough=no src-address=10.30.30.0/24 src-address-list=!NoWG +add action=change-mss chain=forward comment="MSS on WG" new-mss=1380 \ + out-interface=WG passthrough=no protocol=tcp tcp-flags=syn tcp-mss=\ + 1381-65535 +add action=mark-routing chain=prerouting comment="VPN Network" dst-address=\ + 10.8.0.0/24 log-prefix=VPN-Net new-routing-mark=To-VPN passthrough=no \ + src-address=10.30.30.0/24 +/ip firewall nat +add action=redirect chain=dstnat comment=\ + "FORCE DNS TO LOCAL MIKROTIK DNS SERVER" 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=WG dst-address-list=!NoVdsina \ + log-prefix=WG-nat out-interface=WG routing-mark=To-VPN +add action=masquerade chain=srcnat comment="masquerade Default" ipsec-policy=\ + out,none out-interface="ether1 - Unet" routing-mark=!To-VPN +add action=dst-nat chain=dstnat comment=npm dst-port=81 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=81 +add action=dst-nat chain=dstnat comment=amster.vados.ruhttps dst-port=443 \ + in-interface="ether1 - Unet" protocol=tcp routing-mark=!To-VPN \ + to-addresses=10.30.30.33 to-ports=443 +add action=dst-nat chain=dstnat disabled=yes dst-port=22 in-interface=\ + "ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 to-ports=22 +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 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 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=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 log=yes +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 +add blackhole 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 +/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 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" disabled=yes interval=20m name=\ + AM-RKN-dnsLookup on-event="/system/script { run AM-RKN-dnsLookup; }" \ + policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \ + start-time=startup +/system watchdog +set watchdog-timer=no +/tool e-mail +set certificate-verification=no from=MikroVados port=587 \ + server=smtp.mail.me.com tls=starttls user=vadossio@icloud.com +/tool mac-server +set allowed-interface-list=LAN +/tool mac-server mac-winbox +set allowed-interface-list=LAN +/tool netwatch +add comment="doh, doh-url=https://security.cloudflare-dns.com/dns-query, notif\ + y, name=CloudFlare-doh IPv4 1" disabled=yes down-script="" host=1.1.1.1 \ + http-codes="" test-script="" type=simple up-script="" +add check-certificate=no comment="doh-fallback, doh-url=https://security.cloud\ + flare-dns.com/dns-query, doh-cert=DigiCert Global Root CA, notify, name=Cl\ + oudFlare-doh IPv4" disabled=yes down-script="" host=1.0.0.1 http-codes="" \ + port=443 test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=Google-DNS IPv4" disabled=yes \ + down-script="" host=8.8.8.8 http-codes="" test-script="" type=simple \ + up-script="" +add comment="doh-fallback, doh-url=https://dns.google/dns-query, doh-cert=GTS \ + Root R1, notify, name=Google-DOH IPv4" disabled=yes down-script="" host=\ + 8.8.4.4 http-codes="" test-script="" type=simple up-script="" +add comment="dns, notify, name=Cuad9-DOH IPv4" disabled=yes down-script="" \ + host=9.9.9.9 http-codes="" test-script="" type=simple up-script="" +add comment="doh-fallback, doh-url=https://dns.quad9.net/dns-query, name=Cuad9\ + -DOH IPv4" disabled=yes down-script="" host=149.112.112.112 http-codes="" \ + test-script="" type=simple up-script="" +add comment="dns-fallback, notify, name=ns1.unet.ws" disabled=yes \ + down-script="" host=91.192.189.2 http-codes="" test-script="" type=simple \ + up-script="" +/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/20260507/20260507082002-Diff-Config.rsc b/MikroMaster/history/20260507/20260507082002-Diff-Config.rsc new file mode 100644 index 0000000..a3dbfe1 --- /dev/null +++ b/MikroMaster/history/20260507/20260507082002-Diff-Config.rsc @@ -0,0 +1,16 @@ +4380,4381c4380,4381 +< in-interface="ether1 - Unet" protocol=tcp routing-mark=!To-VPN \ +< to-addresses=10.30.30.33 to-ports=443 +--- +> in-interface="ether1 - Unet" protocol=tcp to-addresses=10.30.30.33 \ +> to-ports=443 +4385,4386c4385,4386 +< dst-port=80 in-interface="ether1 - Unet" protocol=tcp routing-mark=\ +< !To-VPN to-addresses=10.30.30.33 to-ports=80 +--- +> dst-port=80 in-interface="ether1 - Unet" protocol=tcp to-addresses=\ +> 10.30.30.33 to-ports=80 +4388c4388 +< protocol=tcp routing-mark=!To-VPN to-addresses=10.30.30.33 to-ports=80 +--- +> protocol=tcp to-addresses=10.30.30.33 to-ports=80 -- 2.52.0